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クイックスタートに目を通しました。単体テストでは 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は、イミディエイトウィンドウを表示します