【问题标题】:dotnet tests not run with flag --no-build in dockerdotnet 测试未在 docker 中使用标志 --no-build 运行
【发布时间】:2020-10-06 12:13:56
【问题描述】:

我有一个单元测试(dotnet 应用程序),我在 docker 容器中运行下一个命令:“dotnet test mytest.csproj --no-build /p:CollectCoverage=true ...”。最终我没有得到测试的结果。当需要下载 nuget 包时,我使用标志 --no-build 来消除网络上的额外负载(它只发生在 docker 映像中)。

在测试之前,我创建了一个 docker 映像,用于构建测试项目。 然后,当我在容器内运行测试时,我只得到一个状态:“构建成功”而不是运行测试。如果删除标志“--no-build”测试开始。或者如果在运行测试之前执行“dotnet build”,即使使用标志 --no-build 也会运行测试。

我注意到如果在 .dll 文件“dotnet test mytest.dll --no-build /p:CollectCoverage=true ...”上运行测试成功,但这里还有另一个问题:没有 cobertura 结果。并且参数 /p:CollectCoverage=true 将同样无效。

我该如何解决这个问题?

屏幕上没有完整的 Dockerfile,只有 dotnet 所需的步骤

【问题讨论】:

    标签: docker unit-testing .net-core nuget


    【解决方案1】:

    检查您的 sln 文件。 仅使用 --no-build 标志运行测试的情况可能是由于缺少 test.csproj 的 Release 或 Debug 配置

    例如,如果它只有调试配置,那么这将导致找不到测试:

    dotnet build -c Release
    dotnet test -c Release --no-build --list-tests
    

    要诊断它,您可以提高详细程度。很好的是,这还列出了执行的测试用例及其状态:

    dotnet test -c Release --no-build -v=normal
    

    【讨论】:

      【解决方案2】:

      遇到了同样的问题。将以下属性添加到我的测试项目的 .csproj 文件解决了这个问题:

      <Project Sdk="Microsoft.NET.Sdk">
        ...
        <PropertyGroup>
          ...
          <IsTestProject>true</IsTestProject>
          ...
        </PropertyGroup>
        ...
      </Project>
      

      【讨论】:

        猜你喜欢
        • 2021-11-22
        • 1970-01-01
        • 1970-01-01
        • 2019-06-08
        • 2021-09-16
        • 1970-01-01
        • 2020-04-22
        • 2017-03-21
        • 1970-01-01
        相关资源
        最近更新 更多