如何在Azure DevOps Pipeline中添加单元测试

6

构建运行良好,但无法看到单元测试结果。当添加了一个使用经典编辑器的构建管道时,我的解决方案也是如此。

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

    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...

而且我无法从“Tests”窗口中再看到任何内容。

以下是测试YAML脚本:

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

3

您的YAML没有任何问题,相同的定义对我来说都起作用。

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

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

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

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

但是,当项目发布到VSTS时,此扩展程序也无法发布,并且此扩展程序不存在于VSTS托管代理中。没有此扩展程序的支持,vstest.console.exe无法识别Nunit测试,然后它会提示如No test is available in xxxxxxx的消息。请参见这里

但是,您可以安装NuGet软件包以替换VS扩展程序的角色。

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

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

类似于xUnit测试的方法。

该包已经添加到我的NuGet包配置文件中,您的意思是我还需要将配置添加到我的csproj文件中,以帮助管道构建识别测试项目吗? 配置如下:<Project ToolsVersion="15.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="..\packages\MSTest.TestAdapter.1.3.2\build\net45\MSTest.TestAdapter.props" - Kevin YANG
@element8763,1. 对于最新的评论,该行显示我们的系统没有检测到测试/框架版本和脚本提供的等内容。因此,请确保它们存在。 2. 您在第一条评论中提到的脚本是否在配置文件中?根据我的经验,这个语法<impot......>在csproj中。如果您不介意,能否向我展示您项目中的一个样例?或者只是分享您的csproj文件给我? - Mengdi Liang
关于第二点,它是csproj文件的一部分。我只是做了一个测试解决方案,并在Azure DevOps上添加了一个管道,但仍然出现相同的错误。您可以在此链接中找到代码:https://dev.azure.com/kevinyangfan/UnitTestSolution/_git/UnitTestSolution @Merlin Liang - MSFT - Kevin YANG
@element8763,我看到mstest正在使用.NET Core,因此请尝试使用dotnet restore/build/test来编译该项目。这是基于您的代码运行的结果:https://dev.azure.com/ForMerlin/MStest/_build/results?buildId=1462&view=ms.vss-test-web.build-test-results-tab(忽略发布任务,我没有在其中指定参数,但它的失败不会影响测试)。 - Mengdi Liang
@element8763,我正在复制你的项目。请查看这些截图:https://imgur.com/a/30rLy8g 获取我的构建定义。 - Mengdi Liang
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接