testdriven.net을 사용할 때 Debug.writeline 문을 어떻게 보십니까?
-
05-07-2019 - |
문제
TestDriven.net을 사용하여 코드를 테스트 할뿐만 아니라 코드의 내부 상태를 디버그 창에 인쇄하는 목적으로 내 코드의 함수를 호출하려고합니다.
다음은 내가하려는 일에 대한 매우 단순화 된 예입니다.
<TestFixture()> _
Public Class UnitTest
<Test()> _
Public Sub TestDebug()
Dim oClass1 As New Class1
Assert.AreEqual(True, oClass1.IsTrue)
Debug.WriteLine("About to call .PrintDebug()")
oClass1.PrintToDebug()
End Sub
End Class
Public Class Class1
Private _IsTrue As Boolean = True
Public ReadOnly Property IsTrue() As Boolean
Get
Return _IsTrue
End Get
End Property
Public Sub PrintToDebug()
Debug.WriteLine("Internal state of Class1: " & _IsTrue)
End Sub
End Class
나는 class1의 공개 인터페이스를 테스트하려고 노력하고 있으며 어떻게 든 출력을 봅니다. Class1.PrintToDebug()
기능.
나는 TestDriven.net QuickStart, 사용의 예를 보여줍니다 Debug.WriteLine
단위 테스트에서는 이상하게도 나에게도 효과가 없습니다. 즉, '테스트'창의 유일한 출력은 다음과 같습니다.
------ Test started: Assembly: ClassLibrary1.dll ------
1 passed, 0 failed, 0 skipped, took 1.19 seconds.
다른 Windows (디버그 및 빌드)를 살펴 보려고했는데 디버그 창에는 '프로그램 출력'및 '예외 메시지'옵션이 활성화되어 있습니다.
나는 옵션이나 선호도를 찾았고 아무것도 찾을 수 없습니다!
당신의 도움을 주셔서 감사합니다!
편집하다: vb.net 2.0, testdriven.net 2.14.2190 및 Nunit 2.4.8.0을 사용하고 있습니다.
해결책
Debug.writeline ()은 단위 테스트에서 작동하지 않지만 Console.writeline ()은 수행합니다.
그 이유는 테스트를 실행할 때 디버거 프로세스가 호출되지 않으며 Debug.Writeline ()이 무시되기 때문입니다. 그러나 "디버거가있는 테스트"를 사용하는 경우 Debug.writeline ()이 작동한다고 생각합니다.
다른 팁
Trace.WriteLine()
답이있는 것 같습니다 : o)
다음은 제 질문에서 예제에 대한 출력이 사용됩니다. Trace
대신에 Debug
:
------ Test started: Assembly: ClassLibrary1.dll ------
Internal state of Class1: True
1 passed, 0 failed, 0 skipped, took 0.61 seconds.
내가 찾은 한 가지. Trace
an이면 진술이 실행되지 않습니다 Assert()
그들 위에 실패합니다.
대신 trace.writeline (...)을 사용해보십시오. Debug.WriteLine (...)을 호출하는 것은 디버그가 정의 된 경우에만 이루어집니다. 기본적으로 새로운 Visual Studio 프로젝트는 더 이상 디버그를 정의하지 않지만 추적을 정의합니다.
Trace를 대신 사용하려면 QuickStart 예제를 실제로 변경해야합니다.
안부, 제이미.
2.16 (현재 베타 버전)이 포함된다는 것을 알고 싶을 수도 있습니다.
1587 : 항상 콘솔 출력/오류 및 테스트 러너 메시지 표시
테스트 러너 생성 메시지 및 콘솔 출력은 이제 프로젝트/솔루션에서 모든 테스트를 실행할 때 표시됩니다.
1588 : 프로젝트/솔루션에서 모든 테스트를 실행할 때 선택적으로 추적/디버그 출력을 표시합니다.
기본적으로 프로젝트/솔루션에서 모든 테스트를 실행할 때 트레이스/디버그 출력이 표시되지 않습니다. 이 동작은 tesdriven.net 옵션 창을 통해 수정할 수 있습니다.
따라서 다음 버전에서 작동하는 것 같습니다.
IIRC,이 출력은 개별 테스트를 실행할 때 출력 창에만 표시됩니다. 테스트 방법을 실행하려면 테스트 방법을 마우스 오른쪽 버튼으로 클릭하십시오 ...?
"실행 테스트 ..."는 현재 솔루션/프로젝트를 구축하는 데 필요한 설정을 선택합니다.
솔루션/프로젝트의 현재 빌드 설정이 "Debug"로 설정되어 있고 "릴리스"가 아닌지 확인해야합니다 (그렇지 않으면 Debug.Write*() 호출은 조건부 컴파일러에 의해 제거).
ctrl + alt + 나는 즉시 창을 보여줍니다.