Dot-Net

通過命令行在 vstest.console.exe 中使用 /Enablecodecoverage 時配置 .coverage 文件的位置

  • September 20, 2019

如果我們在vstest.console.exe中設置,有沒有辦法設置*.coverage*文件所在的位置?/Enablecodecoverage

我沒有在命令行呼叫本身中看到選項。是否要在*.runsettings*文件中設置?

如未指定設置文件時使用預設設置的正常命令行選項中所述。/Enablecodecoverage


我沒有在命令行呼叫本身中看到選項。是否要在 .runsettings 文件中設置?

是的,您必須自定義您的 .runsettings 文件,每當您使用Analyze Code Coverage時應用。

  • 在命令行測試中自定義執行設置

    • 啟動 Visual Studio 開發人員命令提示符:

    在 Windows開始上,選擇所有程序Microsoft Visual StudioVisual Studio 工具開發人員命令提示符

    • 跑:
    vstest.console.exe MyTestAssembly.dll /EnableCodeCoverage /Settings:CodeCoverage.runsettings
    
  • 在建構定義中自定義執行設置

您可以從團隊建構中獲取程式碼覆蓋率數據。 **注意:**確保您的 .runsettings 文件已簽入。在此處輸入圖像描述


編輯:

vstest.console.exe預設創建一個*.coverage 文件,然後可以將該文件轉換為*.xml 格式。

要獲取 *.coverage 文件,您可以使用以下命令:

“c:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe” “PATH_OF_YOUR_EXECUTABLE_OR_DLL” /InIsolation /EnableCodeCoverage

在 Visual Studio 中創建一個新的命令行項目並添加對C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\PrivateAssemblies\Microsoft.VisualStudio.Coverage.Analysis.dll.

添加以下程式碼(路徑在這裡是硬編碼的,但可以作為參數提供):

using Microsoft.VisualStudio.Coverage.Analysis;

namespace CoverageConverter
{
   class Program
   {
       static void Main(string[] args)
       {
           using (CoverageInfo info = CoverageInfo.CreateFromFile(
               "PATH_OF_YOUR_*.coverage_FILE", 
               new string[] { @"DIRECTORY_OF_YOUR_DLL_OR_EXE"}, 
               new string[] { }))
           {
               CoverageDS data = info.BuildDataSet();
               data.WriteXml("converted.coveragexml");
           }
       }
   }
}

CodeCoverage.exe 是另一種轉換為 *.xml 格式的覆蓋工具

編輯2:

您可以使用帶有選項的/UseVsixExtensions選項/EnableCodeCoverage來啟用程式碼覆蓋率:

"C:\Program Files (x86)\Microsoft Visual Studio 11.0
\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe"
/UseVsixExtensions:true /EnableCodeCoverage "C:\Users\YourName\Documents\Visual Studio
2012\Projects\YourProjectFolder\YourApp.Tests\bin\Debug\YourApp.Tests.dll"

上面的命令將在TestResults目錄下生成 .coverage 文件。

引用自:https://stackoverflow.com/questions/41942959