【问题标题】:Why does dotnet vstest return "No test is available in" when the test works in vstest.console.exe?为什么在 vstest.console.exe 中进行测试时,dotnet vstest 返回“No test is available in”?
【发布时间】:2020-05-25 19:07:57
【问题描述】:

我在 .net framework 4.6 中为测试项目构建了一个 dll 文件。

当我做vstest.console.exe test.dll 时测试运行良好,但当我做dotnet vstest test.dll 时它说

test.dll 中没有可用的测试。确保测试发现者和执行者已注册并且平台和框架版本设置正确,然后重试。

我想在 dll 上运行 Coverlet,但在我让 dotnet vstest 工作之前,它似乎不起作用。

【问题讨论】:

    标签: c# .net visual-studio .net-framework-version vstest


    【解决方案1】:

    我有点能够重现您的问题,但在我的情况下,我无法让vstest.console.exe test.dlldotnet vstest test.dll 工作。他们都只是吐出关于没有可用测试的相同错误。

    我使用 NUnit 作为我的测试框架来重现该问题。为了解决这个问题,我添加了对 Nunit3TestAdapter 的引用并重建了解决方案。然后vstest.console.exe test.dlldotnet vstest test.dll 这两个命令都按预期工作。

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="NUnit" version="3.12.0" targetFramework="net46" />
      <package id="NUnit3TestAdapter" version="3.16.1" targetFramework="net46" developmentDependency="true" />
    </packages>
    

    如果您使用的是与 NUnit 不同的测试框架,则应该有一个相应的适配器来服务于相同的目的。

    我已验证这也适用于 MSTest。

    <?xml version="1.0" encoding="utf-8"?>
    <packages>
      <package id="MSTest.TestAdapter" version="2.1.0" targetFramework="net46" />
      <package id="MSTest.TestFramework" version="2.1.0" targetFramework="net46" />
    </packages>
    

    【讨论】:

    • 我们正在使用 Microsoft.VisualStudio.TestTools.UnitTesting
    • @agentq15 该命名空间属于MSTest.TestFramework nuget包,其对应的适配器是MSTest.TestAdapter,所以试试。我已经在我的回答中验证了它们与 NUnit 协同工作。
    【解决方案2】:

    我尝试在命令中添加此适配器参数(-a 和从解决方案文件夹到测试适配器的路径)并且它起作用了:

    dotnet test -a "..\packages\NUnit3TestAdapter.4.0.0\build\net35" --logger "trx;LogFileName=TestResults.trx" "..\bin\Debug\project.dll" 
    

    【讨论】:

      猜你喜欢
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      • 2020-07-20
      • 2016-11-14
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多