【问题标题】:Javascript unit test code coverage in TFS 2015TFS 2015 中的 Javascript 单元测试代码覆盖率
【发布时间】:2016-01-11 15:34:09
【问题描述】:

有没有人可以在 TFS 构建摘要中包含 Chutzpah 代码覆盖率的解决方案?单元测试运行良好,但我没有得到任何代码覆盖率。我们的项目有一个代码覆盖率为 85% 的 DOD,因此在构建过程中自动执行此操作会很棒。

更新

2016-01-12T07:58:08.5718428Z Executing the powershell script: D:\TFSAgent\tasks\VSTest\1.0.22\VSTest.ps1
2016-01-12T07:58:08.7749779Z ##[debug]Calling Invoke-VSTest for all test assemblies
2016-01-12T07:58:08.7905962Z Working folder: D:\TFSAgent\_work\6
2016-01-12T07:58:08.7905962Z Executing C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\CommonExtensions\Microsoft\TestWindow\vstest.console.exe "D:\TFSAgent\_work\6\s\src\FSP.Tests\sampletests.js"  /Settings:"D:\TFSAgent\_work\6\s\buildtools\common.runsettings" /EnableCodeCoverage /logger:trx /TestAdapterPath:"D:\TFSAgent\_work\6\s\src\packages\Chutzpah.4.1.0\tools"
2016-01-12T07:58:08.9780981Z Microsoft (R) Test Execution Command Line Tool Version 14.0.23107.0
2016-01-12T07:58:08.9780981Z Copyright (c) Microsoft Corporation.  All rights reserved.
2016-01-12T07:58:09.2437191Z Starting test execution, please wait...
2016-01-12T07:58:09.3062199Z Warning: Using Isolation mode to run the tests as diagnostic data adapters were enabled in the runsettings. Use the /inIsolation parameter to suppress this warning.
2016-01-12T07:58:14.2165110Z Information: Log Message: waiting for blanket... from D:\TFSAgent\_work\6\s\src\FSP.Tests\sampletests.js
2016-01-12T07:58:20.7009092Z Passed   SamleTest has a test
2016-01-12T07:58:20.7009092Z Passed   app testController has a controller defined
2016-01-12T07:58:20.7009092Z Passed   app testController echo returns same string
2016-01-12T07:58:20.7477777Z Results File: D:\TFSAgent\_work\6\TestResults\G04SEASLOID2$_G04SEASLOID2 2016-01-12 08_58_20.trx
2016-01-12T07:58:20.7477777Z Attachments:
2016-01-12T07:58:20.7477777Z   D:\TFSAgent\_work\6\TestResults\5f30d7de-bf10-44c2-b9f3-0640da2b8183\G04SEASLOID2$_G04SEASLOID2 2016-01-12 08_58_11.coverage
2016-01-12T07:58:20.7477777Z Total tests: 3. Passed: 3. Failed: 0. Skipped: 0.
2016-01-12T07:58:20.7477777Z Test Run Successful.
2016-01-12T07:58:20.7633997Z Test execution time: 8,2573 Seconds
2016-01-12T07:58:20.8883985Z Publishing Test Results...
2016-01-12T07:58:21.5290256Z Test results remaining: 3
2016-01-12T07:58:21.8415328Z Published Test Run : http://g04seasloid2:8181/tfs/DefaultCollection/FS%20Portal%20Project/_TestManagement/Runs#runId=272&_a=runCharts

common.runsettings 文件如下所示

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <RunConfiguration>
    <ResultsDirectory>..\..\TestResults</ResultsDirectory>
    <TargetPlatform>x86</TargetPlatform>
    <TargetFrameworkVersion>Framework45</TargetFrameworkVersion>
  </RunConfiguration>
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" uri="datacollector://Microsoft/CodeCoverage/2.0" assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Include>
              </Include>
              <Exclude>
                <ModulePath>.*\.tests\..*</ModulePath>
                <ModulePath>.*TestAdapter.*</ModulePath>
                <ModulePath>.*packages.*</ModulePath>
              </Exclude>
            </ModulePaths>
            <Functions>
              <Exclude>
                <Function>^Fabrikam\.UnitTest\..*</Function>
                <Function>^std::.*</Function>
                <Function>^ATL::.*</Function>
                <Function>.*::__GetTestMethodInfo.*</Function>
                <Function>^Microsoft::VisualStudio::CppCodeCoverageFramework::.*</Function>
                <Function>^Microsoft::VisualStudio::CppUnitTestFramework::.*</Function>
              </Exclude>
            </Functions>
            <Attributes>
              <Exclude>
                <Attribute>^System.Diagnostics.DebuggerHiddenAttribute$</Attribute>
                <Attribute>^System.Diagnostics.DebuggerNonUserCodeAttribute$</Attribute>
                <Attribute>^System.Runtime.CompilerServices.CompilerGeneratedAttribute$</Attribute>
                <Attribute>^System.CodeDom.Compiler.GeneratedCodeAttribute$</Attribute>
                <Attribute>^System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverageAttribute$</Attribute>
                <Attribute>^NUnit.Framework.TestFixtureAttribute$</Attribute>
                <Attribute>^Xunit.FactAttribute$</Attribute>
                <Attribute>^Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute$</Attribute>
              </Exclude>
            </Attributes>
            <Sources>
              <Exclude>
                <Source>.*\\atlmfc\\.*</Source>
                <Source>.*\\vctools\\.*</Source>
                <Source>.*\\public\\sdk\\.*</Source>
                <Source>.*\\microsoft sdks\\.*</Source>
                <Source>.*\\vc\\include\\.*</Source>
              </Exclude>
            </Sources>
            <CompanyNames>
              <Exclude>
                <CompanyName>.*microsoft.*</CompanyName>
              </Exclude>
            </CompanyNames>
            <PublicKeyTokens>
              <Exclude>
                <PublicKeyToken>^B77A5C561934E089$</PublicKeyToken>
                <PublicKeyToken>^B03F5F7F11D50A3A$</PublicKeyToken>
                <PublicKeyToken>^31BF3856AD364E35$</PublicKeyToken>
                <PublicKeyToken>^89845DCD8080CC91$</PublicKeyToken>
                <PublicKeyToken>^71E9BCE111E9429C$</PublicKeyToken>
                <PublicKeyToken>^8F50407C4E9E73B6$</PublicKeyToken>
                <PublicKeyToken>^E361AF139669C375$</PublicKeyToken>
              </Exclude>
            </PublicKeyTokens>
            <UseVerifiableInstrumentation>True</UseVerifiableInstrumentation>
            <AllowLowIntegrityProcesses>True</AllowLowIntegrityProcesses>
            <CollectFromChildProcesses>True</CollectFromChildProcesses>
            <CollectAspDotNet>False</CollectAspDotNet>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
  <MSTest>
    <MapInconclusiveToFailed>True</MapInconclusiveToFailed>
    <CaptureTraceOutput>false</CaptureTraceOutput>
    <DeleteDeploymentDirectoryAfterTestRunIsComplete>False</DeleteDeploymentDirectoryAfterTestRunIsComplete>
    <DeploymentEnabled>False</DeploymentEnabled>
  </MSTest>
  <ChutzpahAdapterSettings>
    <TestingMode>All</TestingMode>
  </ChutzpahAdapterSettings>
</RunSettings>

一些截图

【问题讨论】:

    标签: javascript tfs code-coverage chutzpah


    【解决方案1】:

    VS中有一个built-in code coverage函数。无论您使用的是 XAML 构建还是 vNext 构建,您只需要在构建定义中启用相关设置即可。

    对于 XAML 构建

    对于 vNext 构建

    这里有一篇介绍Continuous Integration with JavaScript, NUnit on TFSBuild的博客,供大家参考。

    【讨论】:

    • 嗨帕特里克。 CodeCoverage 已启用,它适用于 dll、exe 文件。但不适用于 Javascript。 TFS 发布了一个覆盖文件,但在构建概述中它声明没有代码覆盖,即使有测试结果。我无法理解这一点。
    • 这个链接可能对你有帮助吗blogs.msdn.com/b/visualstudioalm/archive/2012/07/09/…
    【解决方案2】:

    这是一个旧线程,但对于将来偶然发现此问题的任何人:

    这假设您将 Karma 与 VSTS“Build vNext”管道一起使用。

    为了在构建过程中获得代码覆盖率,请将 TrxReporter 添加到您的 Karma.config.js 中,如下所示

    trxReporter: { outputFile: 'Javascrip-test-results.trx' shortTestName: false}
    

    您现在可以配置构建任务以将 Karma 作为构建的一部分运行(即 NPM 任务),之后您可以使用“发布测试结果”任务获取 trx 输出。

    更多详细说明见http://www.clemensreijnen.nl/post/2016/10/17/CICD-Pipeline-for-Angular2-with-VSTS

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-31
      • 2010-10-14
      • 2012-01-18
      • 2016-09-14
      • 2023-04-07
      相关资源
      最近更新 更多