TestDriven.Netを使用しているときにDebug.WriteLineステートメントを表示するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/173641

  •  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クイックスタートに目を通しました。単体テストでは Debug.WriteLine ですが、奇妙なことにこれも機能しません。つまり、「テスト」ウィンドウの唯一の出力は次のとおりです。

------ Test started: Assembly: ClassLibrary1.dll ------


1 passed, 0 failed, 0 skipped, took 1.19 seconds.

他のウィンドウ([デバッグ]および[ビルド])を見てみましたが、[デバッグ]ウィンドウでは[プログラム出力]および[例外メッセージ]オプションが有効になっています。

オプションまたは設定を探しましたが、見つかりません!

ご協力ありがとうございます!


編集: 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)

Debug の代わりに Trace を使用して、質問の例の出力を次に示します。

------ Test started: Assembly: ClassLibrary1.dll ------

Internal state of Class1: True

1 passed, 0 failed, 0 skipped, took 0.61 seconds.

しかし、最初に失敗した単体テストのアサーションで実行が停止します。つまり、 Assert()その上は失敗します。

代わりにTrace.WriteLine(...)を使用してみてください。 Debug.WriteLine(...)の呼び出しは、DEBUGが定義されている場合にのみ行われます。デフォルトでは、新しいVisual StudioプロジェクトはDEBUGを定義しませんが、TRACEを定義します。

実際にクイックスタートの例を変更して、代わりにTraceを使用する必要があります。

よろしく、 ジェイミー。

2.16(現在のベータ版)に含まれるものを知りたい場合があります:

  

1587:常にコンソールを表示   出力/エラーおよびテストランナーメッセージ

     

テストランナーが生成したメッセージと   コンソール出力が表示されます   すべてのテストを実行するとき   プロジェクト/ソリューション。

     

1588:オプションでトレース/デバッグを表示   すべてのテストを実行したときの出力   プロジェクト/ソリューション

     

デフォルトでは、トレース/デバッグ出力は   すべてのテストを実行するときに表示されます   プロジェクト/ソリューション。この動作は   TesDriven.Netを介して変更される   オプションペイン。

だから、次のバージョンで動作するようです。

IIRC、この出力は、個々のテストを実行しているときのみ出力ウィンドウに表示されます。テストメソッドを右クリックして、そのテストだけを実行してみてください...

&quot;テストを実行...&quot;ソリューション/プロジェクトをビルドするために現在必要な設定をすべて選択します。

ソリューション/プロジェクトの現在のビルド設定が「デバッグ」に設定されていることを確認する必要があります。 「リリース」しないでください。 (それ以外の場合、Debug.Write *()呼び出しは条件付きコンパイラによって削除されました)。

CTRL + ALT + Iは、イミディエイトウィンドウを表示します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top