5

コードのビルドと 200 までのテスト ケースの実行に Cruisecontrol を使用しています。

一部のテスト ケースが原因でビルドがハングすることがあり、それがどのテスト ケースであるかを判断できません。

現在のテスト ケース コードを変更せずに、現在実行中のテスト ケースの名前を出力することは可能ですか?

はいの場合、どのように?

4

2 に答える 2

4

テストを行うためにNUnitを使用していると仮定しています。<nunit>その場合、CruiseControl 構成でブロックを使用する代わりに、<exec>タスクを使用します。要素に、<buildArgs>/labels コマンド ライン引数を含めます。これにより、情報がサーバー ログに出力されます。

使用する代わりに:

<nunit>
    <path>C:\Program Files (x86)\NUnit 2.5.10\bin\net-2.0\nunit-console.exe</path>
    <assemblies>
        <assembly>C:\Projects\Personal\MyTestApp\MyTestApp.Tests\bin\Debug\MyTestApp.Tests.dll</assembly>
    </assemblies>
</nunit>

使用する:

<exec>
    <executable>C:\Program Files (x86)\NUnit 2.5.10\bin\net-2.0\nunit-console.exe</executable>
    <buildArgs>/labels C:\Projects\Personal\MyTestApp\MyTestApp.Tests\bin\Debug\MyTestApp.Tests.dll</buildArgs>
</exec>

理想的ではないことはわかっていますが、実行時に各テストがログに出力されます。その後、マージ タスクを使用して、nunit によって出力された xml ファイルをビルド ログにマージできます。

最初に ccnet コンソール アプリケーションを使用してこれを実行してみてください。そうすれば、リアルタイムで出力を確認できます。探しているものを見るのに役立つはずです。

次の行を「project\core\tasks\NUnitArgument.cs」ファイルに追加するために、CruiseControl にパッチを送信することも良い場合があります。

line: 53            argsBuilder.AddArgument("/labels");

または、その行を追加して CruiseControl をビルドし、独自のバージョンを使用することもできます。

于 2012-04-25T16:18:34.257 に答える
2

TestContext.CurrentContext.Test.Name は、現在実行中のテスト ケースを識別するのに役立ちます。パッティング

Console.WriteLine("Currently Executing Test Case : " + TestContext.CurrentContext.Test.Name);

SetUp 属性を持つ in メソッドは、現在実行中の UT を出力します。

于 2013-01-07T12:19:27.987 に答える