2016-09-04 13 views
0

VSテストステップを使用してTFS 2015で実行されているMsTestおよびNUnitテストのコレクションがあります。私はNUnitテストアダプタ3.4.1を使用して、ビルドエージェントでテストを実行しています。VSすべてのテストが合格した後、TFSに失敗するテストステップ

最後に、テストに合格したにもかかわらず、Nunitがうまくいくように見えて、ビルドステップがこれら2つのエラーで失敗します。

2016-09-04T09:59:44.7209787Z ##[error]Error: Exception NUnit.Engine.NUnitEngineException, Exception thrown executing tests 
2016-09-04T09:59:44.7209787Z ##[error] 
2016-09-04T09:59:44.7209787Z ##[error]Error: Exception encountered unloading AppDomain 
2016-09-04T09:59:44.7209787Z ##[error] 
2016-09-04T09:59:44.7209787Z Information: NUnit Adapter 3.4.1.0: Test execution complete 
2016-09-04T09:59:44.8615975Z Results File: C:\agent\_work2\1\TestResults\SRV-BLD1 2016-09-04 01_22_45.trx 
2016-09-04T09:59:44.8615975Z Total tests: 139. Passed: 134. Failed: 0. Skipped: 5. 

私は139回のテストスイートには確かに存在していることをチェックしました、と5は(2 MSTestをしており、3はNUnitのある)を無視するように設定されています。

エラーの詳しい説明が表示されるかどうかはわかりません。このサイトとGoogleを検索すると、NUnit.Engine.NUnitEngineExceptionがテストの検出(例:herehere)にリンクされていますが、テストが検出されているので、これが関連しているかどうかわかりませんNUnit、多くのことは分かりません)。

アダプターの障害(herehere)を扱う2つのリンクも見ましたが、同じレベルの冗長性がないからといっても、エラーはあまり一致しません。

TFSでは、このステップには有効な設定とDLLへのパスだけが設定されています。

誰でもエラーの原因を知っていますか(ビルドが失敗する原因になっていると思います)。あるいは、問題を調査するために、より正確な/冗長なエラースタックを得るための次のステップは何でしょうか?サイドノートとして

、私はthisを見たので、これを述べている、答え:

MSTest.exeはないすべてのテストが 合格していることを示す1の終了コードを返しました。

スキップされたテストでVSTestsが失敗したという確認は見つかりませんでしたが、これも問題になる可能性がありますか?

ありがとうございました。

UPDATE

以下示唆したように、私は直接IDEからこれを実行する試みたが、この出力を得た(フォルダが編集さ)

------ Discover test started ------ 
NUnit Adapter 3.4.1.0: Test discovery starting 

NUnit Adapter 3.4.1.0: Test discovery complete 
========== Discover test finished: 139 found (0:00:00.8820879) ========== 
------ Run test started ------ 
System.AppDomainUnloadedException: Attempted to access an unloaded AppDomain. This can happen if the test(s) started a thread but did not stop it. Make sure that all the threads started by the test(s) are stopped before completion. 
NUnit Adapter 3.4.1.0: Test execution started 
Running all tests in C:\agent\_work2\1\s\codePorject\bin\Debug\codeProjectTests.dll 
NUnit3TestExecutor converted 37 of 37 NUnit test cases 
System.AppDomainUnloadedException: Attempted to access an unloaded AppDomain. This can happen if the test(s) started a thread but did not stop it. Make sure that all the threads started by the test(s) are stopped before completion. 
Exception NUnit.Engine.NUnitEngineException, Exception thrown executing tests 
Exception encountered unloading AppDomain 
NUnit Adapter 3.4.1.0: Test execution complete 
========== Run test finished: 139 run (1:20:10.3290294) ========== 

私は同様のxUnitのissueが開いていましたが、それは解決策がないようです。

This StackOverflow答えはスリープタイマーを使用するように提案するので、私はそれを試みるかもしれません。

+0

NunitとNunit3TestAdapterをNugetから復元していますか? –

+0

いいえ、私はそれらをビルドエージェントにインストールしました。私が使用しているバージョンは3.4.1 – Kolichikov

+0

この問題を再現して共有できるサンプルユニットテストコードを作成できますか? –

答えて

0

最後に、FirefoxブラウザーウィンドウとnUnitの競合状態のように見えます。私のクリーンアップコードでは、私はfirefoxとiisexpressプロセスを殺しています。睡眠通話を追加すると、問題は解決されました。

public static void AssemblyCleanup() 
{ 
    foreach (var process in Process.GetProcessesByName("firefox")) process.Kill(); 
    foreach (var process in Process.GetProcessesByName("iisexpress")) process.Kill(); 
    System.Threading.Thread.Sleep(5000); 
} 
0

NUnitEngineExceptionというのは、エンジンによって検出された例外です。それは多くのものによって引き起こされる可能性があり、メッセージは問題を示しています。あなたのケースでは、メッセージに「例外がAppDomainをアンロードしました」というメッセージが表示されます。

テストアダプタが例外をキャッチして処理し、表示されるメッセージを生成します。 TFSにも例外が表示され、その結果としてテストが失敗することが示されています。これをVS IDEの下で実行する場合は、アダプタからのメッセージが表示されると思いますが、実行は失敗しません。これについてNUnit3テストアダプタの問題がありますが、解決策がアダプタ内にあるかどうか、またはTFSの問題であるかどうかは不明です。

IDEでこれを試しても、その実行から出力ウィンドウのテキストを投稿することを願っています。

+0

IDEで実行すると出力テストが表示されるはずですか?私はN3ExecutionAgentを取得し、テストを実行しますが、エラーに関するメッセージはありません。 – Kolichikov

+0

AppDomainをアンロードできなかった旨のメッセージが表示されない場合は、断続的にしか発生しないことがあります。アダプタは、実行されている場所に関係なく、確実にメッセージを表示します。それぞれの場合に同じアダプタバージョンを使用していることを確認してください。 – Charlie

関連する問題