Windows 10
Visual Studio 2017
TeamCity 2017.1.2
GitHub
私は予想通りローカルに動作するVSソリューションを使用しています。メインプロジェクトにはいくつかのパッケージ依存関係があります。テストプロジェクトには、メインプロジェクトへのプロジェクト参照があります。 VSローカルコンパイルは成功します。メインプロジェクトの参照+依存関係はMyProject/bin/debug
にコピーされます。テストプロジェクトのリファレンス+依存関係はMyProject.Tests/bin/debug
にコピーされます。 ReSharper
ローカルテストが成功しました。TeamCity:NUnitはターゲットアセンブリの依存関係を見つけることができません
しかし私のTCプロジェクトでは、テストを実行する際に問題があります。
GitHubからpullを実行し、Visual Studio (sln) build
を実行し、テストを実行するにはNUnit.ConsoleRunner
を実行します。ビルドステップの必要性を示すファイルが見つかりませんでした(パッケージ依存関係アセンブリが見つかりません)依存するアセンブリをアーティファクトとして保存し、それをテスト出力ディレクトリにコピーします。 VSステップを構築することを示している
C:\TeamCity\buildAgent\work\64f706c42d79250c\{main-project}\bin\Debug\{dependency}.dll
と
C:\TeamCity\buildAgent\work\64f706c42d79250c\{tests-project}\bin\Debug\{dependency}.dll
:しかし、私は、メイン・プロジェクトおよびテスト・プロジェクトの両方に依存アセンブリが存在見つけるエージェントのワークディレクトリを見て
{dependency}.dll
を期待通りにビンにコピーしました。
なぜNUnitはそれを見つけることができませんか?
[19:27:48][Step 5/5] MyProject.dll
[19:27:48][MyProject.dll] MyProject.UnitTests.MyTest
[19:27:49][MyProject.UnitTests.MyTest] System.IO.FileNotFoundException : Could not load file or assembly 'MyProjectDependency, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
[19:27:49]
[MyProject.UnitTests.MyTest] at ReferencingCode()
at MyProject.MyClass.Answer() in C:\TeamCity\buildAgent\work\64f706c42d79250c\MyProject\MyClass.cs:line 9
at MyProject.UnitTests.MyTest() in C:\TeamCity\buildAgent\work\64f706c42d79250c\MyProject\UnitTests.cs:line 10
[19:27:51][Step 5/5] Failed tests detected
出力dirsにはVS Build
とNUnit
のステップのために異なっている場合、私は思ったんだけど?しかし、私のエージェント作業ディレクトリは、私のローカルVSソリューションディレクトリと同じです - だからTCはNUnit
作業ディレクトリを探していますか?
私はあなたの問題とあなたが何をしているのか分かりません。単体テストはアセンブリを使用しません。彼らはソースコードを使用します。それはホワイトボックステストです。つまり、単体テストはコードを直接操作します。 –
私のテストプロジェクトは私のメインプロジェクトのproject-refを持っています。 VSソリューションビルドは、メインプロジェクトのアセンブリとその依存関係アセンブリをテストプロジェクトの 'debug/bin'フォルダにコピーし、' ReSharper'はそれらのアセンブリに対してテストを実行します。 – BaltoStar