문제

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 + 나는 즉시 창을 보여줍니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top