【问题标题】:How to add a unit test in Azure DevOps pipeline如何在 Azure DevOps 管道中添加单元测试
【发布时间】:2020-12-09 16:28:34
【问题描述】:

构建运行良好但看不到单元测试结果添加使用经典编辑或用于我的解决方案的构建管道时。

而且代码覆盖率也是空白的。我在解决方案中有两个项目和测试项目。单元测试任务返回结果如下:

    A total of 14 test files matched the specified pattern.
           No test is available in d:\a\1\s\src.net... 
Make sure that test discoverer & executors are registered and platform & framework version settings are appropriate and try again.
            Results File: d:\a\_temp\TestResults\VssAdministrator_fv-az686_2019-12-26_06_10_28.trx
            Attachments:
              d:\a\_temp\TestResults\d301a26b-d99f-4b4e-bbe8-c95e588ee1c5\VssAdministrator_fv-az686 2019-12-26 06_10_20.coverage
            Vstest.console.exe exited with code 0.
            **************** Completed test execution *********************
            Test results files: d:\a\_temp\TestResults\VssAdministrator_fv-az686_2019-12-26_06_10_28.trx
            No Result Found to Publish 'd:\a\_temp\TestResults\VssAdministrator_fv-az686_2019-12-26_06_10_28.trx'.
            Created test run: 1006840
            Publishing test results: 0
            Publishing test results to test run '1006840'.
            TestResults To Publish 0, Test run id:1006840
            Published test results: 0
            Publishing Attachments: 2
            Completed TestExecution Model...

而且我在测试窗口中也看不到了。

测试YAML脚本如下:

steps:
- task: VSTest@2
  displayName: 'Test Assemblies'
  inputs:
    testAssemblyVer2: |
     **\$(BuildConfiguration)\*test*.dll
     !**\obj\**
    codeCoverageEnabled: true
    platform: '$(BuildPlatform)'
    configuration: '$(BuildConfiguration)'

【问题讨论】:

    标签: azure-devops azure-pipelines vs-unit-testing-framework


    【解决方案1】:

    你的 YAML 没有任何问题,同样的定义对我来说都是可行的。

    共有 14 个测试文件与指定的模式匹配。

    d:\a\1\s\src.net 中没有可用的测试...

    根据这些错误消息,测试文件已从文件夹中识别出来,这意味着 dll 现在已经存在。但它仍然说没有可用的测试,这与vstest.console.exe没有识别测试更相关。

    例如,如果您的测试项目类型是NUnit,您可以使用一个扩展名NUnit测试适配器来支持在Visual Studio中运行的这种测试类型。

    但是,当项目发布到 VSTS 时,此扩展也无法发布,并且此扩展在 VSTS 托管代理中不存在。如果没有此扩展支持,vstest.console.exe 无法识别Nunit test,则会提示类似No test is available in xxxxxxx 的消息。参考this

    但是,您可以安装 nuget 包来替换该 VS 扩展的角色。

    如果它的类型是 Nunit 测试,你必须确保在你的 csproj 文件中添加对包 NUnitNUnit3TestAdapter 的引用:

    <PackageReference Include="NUnit">
          <Version>3.12.0</Version>
        </PackageReference>
    <PackageReference Include="NUnit3TestAdapter">
          <Version>3.15.1</Version>
        </PackageReference>
    

    类似的方法 tp xUnit test.

    【讨论】:

    • 我的nuget包配置文件中已经添加了这个包,你的意思是我还必须在我的csproj文件中添加配置,以帮助管道构建识别测试项目吗?配置如下:schemas.microsoft.com/developer/msbuild/2003">
    • 嗨@Merlin Liang,在我运行管道后,会显示另一个信息:确保测试发现者和执行者已注册并且平台和框架版本设置正确,然后重试。 PS:我的项目是MSTest测试项目
    • @element8763, 1. 对于最新的评论,该行显示我们的系统没有检测出测试/框架版本等提供的脚本。所以它让你请确保它们存在。 2. 您在第一条评论中提到的脚本是否在配置中?根据我的经验,这个系统税&lt;impot......&gt; is in csproj。如果你不介意,你能给我看一个你项目的样本吗?或者只是分享你csproj的文件?
    • 关于2,它是csproj文件的一部分。我只是做了一个测试解决方案,并在azure devops上添加了一个管道。,仍然是同样的错误。你可以找到代码link@ Merlin Liang - MSFT
    • @element8763,我看到 mstest 使用的是 .net core。所以请尝试使用 dotnet restore/build/test 来编译项目。这是我根据您的代码运行的结果:dev.azure.com/ForMerlin/MStest/_build/…(忽略发布任务,我没有在其中指定参数,但它的失败不影响测试)
    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-05
    • 2020-08-03
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多