2017-09-25 5 views
0

나는 MSVS2013 내에서 nunit GUI와 nunit 콘솔을 사용하여 성공적으로 C# 단위 테스트를 실행하기 위해 nunit을 사용했습니다.nunit3-console에서 디버그를 화면에 출력하려면 어떻게해야합니까?

처음 두 가지에 대해서는 디버그 출력 (Console.Write (...))을 얻을 수 있습니다. MSVS2013에서는 테스트 후 "출력"링크를 클릭하면 볼 수 있으며 GUI에서는 "출력"창에 디버그가 표시됩니다.

nunit3-console.exe로 실행할 때 요약 보고서 만 표시됩니다. XML 출력 (TestResults.xml)에 무엇이 있는지 살펴 보려고했지만 동일한 요약 보고서가 더 많이 포함되어 있습니다.

내 디버그도 화면에 나타나게하려면 어떻게해야합니까?

내 명령 줄은 다음과 같습니다

nunit3-console.exe "c:\path\to\my\assebly.dll" --trace=Verbose --test=Regression.Tests.HelloWorld 

테스트하여 HelloWorld 그것에 Console.Write("Hello World\r\n");, 나는이 화면 (표준 출력)에 게재되기 원하는 라인을 가지고있다.

답변

0

Console.WriteLine(...)이 출력에 나타나야하지만 NUnit 3에서는 테스트에서 TestContext.WriteLine(...)을 사용해야합니다. NUnit 3은 테스트를 병렬로 실행할 수 있기 때문에 테스트가 끝나면 출력을 캡처 한 다음 콘솔에 출력합니다. 이렇게하면 출력이 다른 테스트와 인터리브되지 않고 테스트와 일치합니다.

작성시 출력이 즉시 사라지게하려면 TestContext.Progress.WriteLine(...)을 사용하십시오. 예를 들어, 진행 메시지는 테스트 마지막하더라도 다른 출력 전에 출력 다음 테스트,

[Test] 
    public void ExampleOfConsoleOutput() 
    { 
     Console.WriteLine("Console.WriteLine In ExampleOfConsoleOutput"); 
     TestContext.WriteLine("TestContext.WriteLine In ExampleOfConsoleOutput"); 
     TestContext.Progress.WriteLine("TestContext.Progress.WriteLine In ExampleOfConsoleOutput"); 
    } 

출력 다음,

=> nunit.v3.TestNameInSetup.ExampleOfConsoleOutput 
TestContext.Progress.WriteLine In ExampleOfConsoleOutput 
Console.WriteLine In ExampleOfConsoleOutput 
TestContext.WriteLine In ExampleOfConsoleOutput 

참고했다.

--trace 명령 줄 옵션은 NUnit 내부 추적을 위해 필요하지 않습니다. 기본값 (명령 행 옵션 없음)이 위의 출력을 표시하지만 출력을 제어하는 ​​명령 행 옵션은 --labels입니다.

+0

Re : Console.Write (...); ... 당신 말이 맞아요, 테스트가 끝날 때 디버그가 나왔습니다. 어떻게 든 그것을 놓쳤습니다 (실시간으로 나올 것으로 예상 했었습니다 ...). 나는 장님이되었습니다!. 하지만 내가 정말로 원했던 것은 "실시간"디버그였습니다. TestContect.Progress.Write (...)는 훌륭하게 작동합니다! - 매우 감사합니다. –