Dot-Net-Core
測試 .NET Core 項目時,TeamCity 不會獲取 xUnit 測試的結果
我有一個小型 .NET Core 項目,其中完整的建構/測試/部署過程在 Cake 腳本中處理。
我有一個執行 cake 腳本的 powershell 腳本。
在本地執行腳本時,我會得到每個失敗的 xUnit 測試的結果,但是當通過 TeamCity 的 PowerShell 執行程序執行相同的腳本時,我不會得到每個測試的結果,只是失敗測試數量的摘要。
蛋糕任務:
Task("Test") .IsDependentOn("Clean") .Does(() => { GetFiles("./tests/**/*.csproj") .ToList() .ForEach(file => DotNetCoreTest(file.FullPath)); });此 Cake 程式碼在後台執行“dotnet test”。
在建構伺服器上的 PowerShell 中手動執行腳本時,我得到以下輸出:
Test run for c:\project\myproject\tests\Web.Tests\bin\Debug\netcoreapp2.0\Web.Tests.dll(.NETCoreApp,Version=v2.0) Microsoft (R) Test Execution Command Line Tool Version 15.7.0 Starting test execution, please wait... [xUnit.net 00:00:00.7397647] Web.Tests.UnitTest1.Test1[FAIL] Error Message: Assert.False() Failure Expected: False Actual: True Test Run Failed. Total tests: 2. Passed: 1. Failed: 1. Skipped: 0. Test Run Failed.當使用 TeamCity 的 PowerShell 執行程序執行相同的腳本時,我得到了這個:
[14:27:45] [Step 1/1] Test run for D:\TeamCity\buildAgent\work\7ff27c4721bc4a68\tests\Web.Tests\bin\Release\netcoreapp2.0\Web.Tests.dll(.NETCoreApp,Version=v2.0) [14:27:45] [Step 1/1] Microsoft (R) Test Execution Command Line Tool Version 15.7.0 [14:27:45] [Step 1/1] Starting test execution, please wait... [14:27:48] [Step 1/1] Failed Web.Tests.UnitTest1.Test1 [14:27:48] [Step 1/1] Error Message: [14:27:48] [Step 1/1] Assert.False() Failure [14:27:48] [Step 1/1] Expected: False [14:27:48] [Step 1/1] Actual: True [14:27:48] [Step 1/1] Test Run Failed. [14:27:48] [Step 1/1] Total tests: 2. Passed: 1. Failed: 1. Skipped: 0.如您所見,它缺少包含失敗測試名稱的一行。
知道為什麼會這樣嗎?
使用 TeamCity 測試 .NET Core 項目一文解釋了這種行為。
你必須安裝TeamCity.VSTest.TestAdapter包來獲取測試的輸出。
不確定這是否是同一個問題,但是當我最近從 dotnet v2.0.8 升級到 v2.1.0 時遇到了類似的問題。就我而言,升級後,我不再從 Teamcity 中的單元測試中獲得任何輸出。
到目前為止,我發現的唯一解決方法是在 Team City 的單元測試建構步驟中使用 dotnet xunit CLI 工具。
注意:此命令只能在項目中使用命令“dotnet xunit -teamcity”執行。
應該可以使用 DotNetCoreTool 別名將其配置為與 Cake 一起執行。