2011-02-18 6 views
2

단위 테스트의 경우 다른 명령 줄 인수를 모방하고 싶습니다. 런타임에 commandLine args를 내 프로그램으로 수정하려면 어떻게해야합니까 (둘러 보았지만 트릭을 찾을 수없는 경우)? 기본적으로 READONLY 속성 Environment.CommandLine의 내용을 수정하는 방법을 찾으려고합니다.Environment.CommandLine 속성은 어떻게 수정합니까?

+0

단위 테스트에서 모의로 대체 할 수있는 주사 가능한 (심지어 단어일까요?) 서비스로 대체하는 것에 대해 생각해 보셨습니까? 비록 당신이하고 싶은 일을 절대적으로해야한다면, 나는 TypeMock Isolator (http://typemock.com)가 그것을 할 수 있다고 생각할 것입니다. –

+3

다른 명령 줄을 사용하여 프로그램을 실행할 수 있습니까? –

+1

정말 리팩토링해야합니다. – Holystream

답변

5

당신은 할 수 없습니다. 이것은 '읽기 어렵습니다'. Windows에서 GetCommandLine API 함수가 나오고 수정하는 것도 허용되지 않습니다. 당신은 그것을 조롱해야합니다.

+0

이것이 올바른 방법 일 것입니다. 불행히도 빠른 방법을 찾으려는 시간이 없습니다. – Denis

+1

그것은 단지 문자열입니다. 틀림없이 문자열을 조롱 할 수 있습니다. –

+0

그냥 익명으로 : 실제로 명령 줄을 기본적으로 수정할 수 있습니다. GetCommandLine()에 의해 반환 된 포인터는 상수가 아닙니다. http://blogs.msdn.com/b/oldnewthing/archive/2009/02/23/9440784도 참조하십시오. .aspx). 그렇게하는 것이 현명한 일인지는 또 다른 일입니다. 감사하게도 어쨌든 관리되는 코드에서는 (쉽게) 가능하지 않습니다. –

4

어려운 일을 테스트하려는 것처럼 나에게 들립니다. 아마도 어딘가에 Environment.CommandLine에서 직접 읽는 함수가있을 것입니다. 이 메서드를 리팩토링하여 문자열 매개 변수 (실제 응용 프로그램에서는 Environment.CommandLine에서 채워짐)를 가져 와서 해당 메서드를 독립적으로 테스트합니다.

관련 문제