Windows 10
Visual Studio 2017
TeamCity 2017.1.2
GitHub
我正在使用VS解決方案,該解決方案在本地表現如預期。主項目有一些程序包依賴性。測試項目對主項目有項目引用。 VS本地編譯成功。主項目參考+相關性被複制到MyProject/bin/debug
;測試項目引用+依賴項被複制到MyProject.Tests/bin/debug
; ReSharper
本地運行測試成功。TeamCity:NUnit無法找到目標程序集的依賴關係
但是我的TC項目在運行測試時遇到問題。
我積累的配置步驟是:從GitHub拉,運行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
這表明VS生成步驟按照預期將{dependency}.dll
複製到bin中。
那麼爲什麼不能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
我想知道如果輸出迪爾斯都爲VS Build
和NUnit
步驟不同?但是我的代理工作目錄與我的本地VS解決方案目錄相同 - 那麼TC將在哪裏找到NUnit
工作目錄?
我不知道我明白你有什麼問題以及你在做什麼。單元測試不使用程序集。他們使用源代碼。這是白盒測試。即單元測試直接與您的代碼一起工作。 –
本地我的測試項目有一個項目引用到我的主項目; VS解決方案構建將主項目程序集及其依賴項程序集複製到測試項目的「debug/bin」文件夾中,然後「ReSharper」對這些程序集運行測試。 – BaltoStar