1

根據日誌我錯過了獲取測試覆蓋率的信息。可能的原因是:如何在TeamCity中錯誤地測試缺少的測試覆蓋率?

  1. 包含/排除模式是不正確的
  2. 大會沒有調試信息
  3. 編譯
  4. PDB文件不可用
  5. Visual Studio代碼覆蓋率爲MSTest的
  6. 啓用用於
  7. TESTRUNCONFIG對於MSTest和Visual Studio代碼覆蓋未禁用

作爲TeamCity的新手,我需要一些關於如何做的指導。

  1. 我已將所有的DLLs加入+:* DLL。目前沒有排除,但我試圖通過- :* test *省略測試本身。
  2. 我編譯使用DEBUG曲線和結果在斌/調試OBJ /調試目錄放到服務器上。根本沒有版本
  3. 我在服務器上的.source/bin/debug中有PDB文件。
  4. 由於我在TeamCity服務器上運行nUnit和dotCover,因此沒有涉及VS。
  5. 由於我在TeamCity服務器上運行nUnit和dotCover,因此沒有涉及VS。

我錯過了什麼?我能做些什麼?

編輯

該系統是:VS13,TFS10,TC8.2(最新的可用附帶的NUnit的和dotCoverage)

日誌的部分是測試步驟(在編譯沒有錯誤步驟報告,退出代碼0)。在此之後,只有刪除dotCover快照文件。但請注意,沒有要找到的數據文件,並且該XML文件不包含任何數據。

<?xml version="1.0" encoding="UTF-8"?> 
<Root DotCoverVersion="2.6.1000.602" 
     ReportType="TeamCityXml" 
     CoveragePercent="0" 
     TotalStatements="0" 
     CoveredStatements="0"/> 

我能在這裏做什麼?

[10:59:39]Step 2/2: Test (NUnit) (29s)
[10:59:39]Starting: C:\TeamCity\buildAgent\plugins\dotnetPlugin
\bin\JetBrains.BuildServer.NUnitLauncher.exe #TeamCityImplicit
[10:59:39]in directory: C:\TeamCity\buildAgent\work\263aa919ed5f7bb8
[10:59:46]JetBrains dotCover Console Runner v2.6.1000.602. Copyright (c) 2009-2014 JetBrains s.r.o. All rights reserved.
[10:59:55][JetBrains dotCover] Coverage session started [2014-06-30 10:59:55]
[11:00:02]Start TeamCity NUnit Test Runner
[11:00:02]Running NUnit-2.6.3 tests under .NET Framework v4.0 x64
[11:00:03]AutonomousTesting.dll
[11:00:03]CoverageTest.TestExample.TestEquality
[11:00:03]CoverageTest.TestExample.TestException
[11:00:03]CoverageTest.TestExample.TestInequality
[11:00:03]CoverageTest.TestExample.TestOmission
[11:00:03]Test ignored: CoverageTest.TestExample.TestOmission
[11:00:05]AutonomousTesting.dll
[11:00:05]CoverageTest.TestExample.TestEquality
[11:00:05]CoverageTest.TestExample.TestException
[11:00:05]CoverageTest.TestExample.TestInequality
[11:00:05]CoverageTest.TestExample.TestOmission
[11:00:05]Test ignored: CoverageTest.TestExample.TestOmission
[11:00:07][JetBrains dotCover] Coverage session finished [2014-06-30 11:00:07]
[11:00:07][JetBrains dotCover] Coverage results post-processing started [2014-06-30 11:00:07]
[11:00:08][JetBrains dotCover] Coverage results post-processing finished [2014-06-30 11:00:08]
[11:00:09]##teamcity[importData type='dotNetCoverage' tool='dotcover' file='C:\TeamCity\buildAgent\temp\buildTmp\coverage_dotcover16594618384737853441.data']
[11:00:09]Importing data from 'C:\TeamCity\buildAgent\temp\buildTmp\coverage_dotcover16594618384737853441.data' (8.38 KB) with 'dotNetCoverage' processor [11:00:09]Process exited with code 0
[11:00:09]Waiting for 1 service processes to complete
[11:00:09]Processing 1 coverage report(s)
[11:00:09]Generating coverage report by dotcover for files: [C:\TeamCity\buildAgent\temp\buildTmp\coverage_dotcover16594618384737853441.data]
[11:00:09]Get dotCover version
[11:00:09]Started dotCover: C:\TeamCity\buildAgent\tools\dotCover\dotCover.exe version C:\TeamCity\buildAgent\temp\buildTmp\dotCover4472367238745438467Version
[11:00:09]Output: JetBrains dotCover Console Runner v2.6.1000.602. Copyright (c) 2009-2014 JetBrains s.r.o. All rights reserved.
[11:00:09]dotCover exited with code: 0
[11:00:09]Use DotCover 2.6.x commands set
[11:00:09]Merge dotCover reports (9s)
[11:00:19]Started dotCover: C:\TeamCity\buildAgent\tools\dotCover\dotCover.exe merge C:\TeamCity\buildAgent\temp\buildTmp\dotcover4719506578346509917.xml
[11:00:19]Output: JetBrains dotCover Console Runner v2.6.1000.602. Copyright (c) 2009-2014 JetBrains s.r.o. All rights reserved. [JetBrains dotCover] Snapshot merging started [2014-06-30 11:00:18] [JetBrains dotCover] Source snapshots number: 1 [JetBrains dotCover] Snapshot merging finished [2014-06-30 11:00:19]
[11:00:19]dotCover exited with code: 0

回答

1

我跟着這個漂亮的小tutorial讓它爲我工作。這裏的東西它提到,你可以嘗試,如果你沒有得到任何結果:

Little hint: If you do everything right but no report will be generated take a look into the BuildLog. At the first try I got this error:

Solution:

Failed to read source file >'C:\TeamCity\buildAgent\temp\buildTmp\dotcover8583844779204955574.xml'. Could not find a part of the path 'C:\Windows\system32\config\systemprofile\AppData\Local\Temp\4q-kqg6z.tmp'.

Create the searched 「Temp」 folder in 「C:\Windows\system32\config\systemprofile\AppData\Local」

Normally it doesn´t exist and because of this the error appeared. After this it works.

如果沒有,那麼你可能需要提供更多信息,以便我們幫你演繹什麼是錯的工作。

例如,您的路徑是什麼,您安裝的是什麼版本的所有設備,您爲構建配置啓用了哪些設置等等。


編輯:正如你所說,你已經有了這方面的工作,我不知道如果你仍然有先前工作構建構建日誌?在你的同事弄亂之前。有沒有可能在構建日誌的工作和不工作之間進行差異化?它可能會讓你知道他改變了什麼。


我設法做出了全新的配置,以測試生成覆蓋所需的最低工作量。這是我採取的步驟。也許這裏有些東西,你會發現你做了不同的事情。

從本地主機的主TeamCity的屏幕:8080中,單擊 「創建項目」

  • 名稱:MyProjectName
  • 單擊 「創建」

點擊 「添加構建配置」

  • 名稱:調試

點擊 「VCS設置」

點擊 「創建和附加VCS根」

  • VCS類型:混帳
  • VCS根名稱:MyProjectName的Git回購
  • 提取網址:https://[email protected]/myusername/myprojectname.git
  • 驗證方法:密碼(輸入bitbucket用戶名和密碼)
  • 檢查間隔:自定義,600秒
  • 單擊「測試連接」,它應該變綠。點擊 「保存」

點擊 「添加生成步驟」

  • 亞軍類型:MSBuild的
  • 步驟名稱:建立MyProjectName
  • 構建文件路徑:MyProjectName.sln
  • MSBuild的版本: Microsoft .NET Framework 4.5
  • MSBuild ToolsVersion:4.0
  • 運行平臺:x64
  • 點擊 「保存」

點擊 「添加生成步驟」

  • 亞軍類型:NUnit的
  • 步驟名稱:潤MyProjectName測試
  • .NET運行平臺:64
  • .NET運行時版本:4。0
  • 從運行測試:MyProjectName.Tests \ BIN \調試\ MyProjectName.Tests.dll
  • .NET覆蓋工具:Jetbrains的dotCover
  • 點擊 「保存」

點擊 「項目」

點擊「運行...」

畢竟,構建應該已經生成了覆蓋範圍。祝你好運!

+0

謝謝。我相信當我設置它時,我跟着同一個博客。起初,我得到了報道,但隨後一位隊友決定採取一些魔術,報道已經消失。他無法通知所採取的措施,因此我需要以另一種方式解決問題。至於你所要求的澄清,請參閱原文中的編輯。如果我錯過了任何評論,我會提供所有可以提供的信息。 –

+0

這裏沒有太多的活動,我不喜歡賞金噗噗。你會得到它(除非有人在接下來的三天內給出了很好的答案,這是非常可疑的)。我可以請求你提供一些鏈接到TeamCity下的dotCover的可能指南/文件的回覆嗎? –

+1

希望我的更新會幫助你排序問題,並說服你給我的賞金嘿嘿:) – demoncodemonkey

1

康拉德,我不知道有關.net或團隊城市的足夠(任何?)來告訴你什麼是你的設置錯誤 - 所以這將是更多的指導,我會看看如果我必須解決它。

覆蓋的工作方式是編譯已編譯的二進制文件,以便在運行時吐出信息。當它被設置時,你的單元測試將在運行時將信息輸出到某種結果文件中。測試完成後,您可以分析該結果文件。

demoncodemonkey答案中的教程看起來像TeamCity實際上正在測試覆蓋範圍。我是很確定這不是這種情況。 TeamCity很可能會與您的工具進行交互並隱藏您的實際內容。但如果它只是不工作,隱藏細節可能不足以幫助!

我的第一步是弄清楚如何在沒有TeamCity的情況下從命令行運行該工具。一旦你可以做到這一點,你可以找出你需要使用什麼TeamCity配置來獲得相同的結果。該鏈接是dotCover CLI文檔。

http://www.jetbrains.com/dotcover/webhelp/dotCover__Setting_up_Coverage_Analysis_JetBrains_TeamCity.html

我們使用詹金斯和大量的Linux類型的工具 - 而是試圖接近手工編譯/測試一直是弄清楚爲什麼它不工作在服務器上的最快方式。

+0

+1爲直接免責聲明和可靠的信息。事實上,我已經預先遵循了您的建議,即從命令行完成覆蓋。我還讓TeamCity做了我想做的事情,除了那個單一的解決方案(之前在那裏工作,然後停止!)。我希望有人能夠在我的設置中指出一些愚蠢的情況,但最有可能的是,在某些解決方案文件的深處,有人在我不知情或未經許可的情況下就會磨礪一番。我相信我們必須重做並做對。 :) –

1

我遇到的問題是,儘管我的測試執行了,而且我從他們那裏得到了結果,但結果中沒有顯示測試覆蓋率。這樣做的原因是,在覆蓋組件的過濾器的選擇,我用的是:

+:MySolution.*.dll 
+:MySolution.*.exe 
-:MySolution.*.Tests.dll 

然而,對於要計算的覆蓋效果,你必須刪除從過濾器.DLL擴展,使之成爲:

+:MySolution.* 
-:MySolution.*.Tests 

然後結果神奇地流過。

+0

在我看來,這是違反直覺的。該明星包括EXE和DLL。而如果我想排除我有我們的其他......意想不到,你不同意嗎? –

+0

我同意,但它在代碼覆蓋配置屏幕上的小字體中出現(我沒有先讀它)!您可能需要更改.exe程序集的名稱,例如MySolution.MyProject.Console.exe,然後排除它: :-MySolution。*。Console –