在visual studio中运行单元测试时出错:缺少测试用例对象

时间:2018-02-16 17:43:35

标签: c# .net visual-studio resharper mstest

使用resharper从visual studio运行单元测试时出现以下错误:

Test-case objects missing for the following elements: ... Rebuild the project and try again

在单元测试方法旁边的工具提示中,它显示:Inconclusive: Test not run,我认为它曾在某一点上说Unit test skipped。 Resharper显示灰色眼睛图标。

Visual Studio的Test Explorer也存在一个奇怪的问题。它不会显示我的所有单元测试。事实上,它缺少200多个单元测试。它们只是没有出现在Test Explorer窗口中。我确实有一些测试出现并且运行得很好。

我已经尝试过的事情:重新启动我的机器,清理,重建,更改所有相关项目以使用相同的.net框架4.7。

我正在使用VS 2017 .net Framework 4.7,Resharper和MSTest。全部都有最新的更新和版本。

11 个答案:

答案 0 :(得分:26)

我删除了所有nuget包后遇到了这个错误,因为我更改了我的.net版本,并且不需要任何编译。

重新安装MSTest.TestAdapter之后nuget包re-sharper开始按预期再次运行我的单元测试

Install-Package MSTest.TestAdapter

答案 1 :(得分:17)

我知道这不会回答OP的问题,因为他/她已经尝试过,但也许它会帮助其他人。

对我来说,Visual Studio的简单重启解决了以下元素缺少的 测试用例对象:...重建项目并重试 问题。

答案 2 :(得分:3)

在我敲了一天之后,我让Test Explorer工作了。它是目标平台。

在单元测试项目属性中,在Build下,我将Platform目标设为x64。我将它切换到AnyCPU,测试资源管理器立即拿起我缺少的单元测试。然而,resharper仍然给我同样的错误。如果我找到解决方案,我会更新。与此同时,我现在至少可以运行和调试我的单元测试。

答案 3 :(得分:0)

我的问题是使用了错误的构建配置。

我的解决方案有很多项目和很多不同的构建配置,我无意中选择了错误的项目配置,该配置没有正确设置以包含我要使用的测试项目。

答案 4 :(得分:0)

这对我来说是因为我为FLEE安装了Nuget软件包,这将以下行插入到我的测试项目的app.config文件中:

{{1}}

由于我的机器上没有安装4.1.2.0版本(我有4.0.0.0),因此测试项目失败并显示了这个非常令人困惑的“错误消息”

一旦我安装了早期版本(1.05)的FLEE软件包(使用4.0.0.0),并且在我的app.config的bindingRedirect中将版本号更改为4.0.0.0,一切都变得正常了

答案 5 :(得分:0)

在使用F#项目时遇到此问题。在我的情况下,导致问题的原因是测试方法名称中包含方括号;

[<TestMethod>]
member x.``E is updated where generic form or visit should include (this) UPDATED VISIT AND FORM``() =
        let origExpr = "visit:form:INTQ1AB"
        let checkedExpr = "VISIT2:FormFour:INTQ1AB"
        ...

进行了不确定的测试,而如下删除了[(this)]周围的括号

[<TestMethod>]
member x.``E is updated where generic form or visit should include this UPDATED VISIT AND FORM``() =
        let origExpr = "visit:form:INTQ1AB"
        let checkedExpr = "VISIT2:FormFour:INTQ1AB"
        ...

允许测试成功完成。

答案 6 :(得分:0)

我将MSTest.TestAdapter从1.1.18升级到了1.3.2。终于为我解决了。

答案 7 :(得分:0)

当我让Resharper通过NuGet搜索Nunit的缺失参考文献时,我遇到了这个问题。它没有下载我需要的.NET核心兼容软件包版本,而是使用了.NET Framework版本。我卸载了NUnit软件包,然后使用NuGet软件包管理器重新安装了它。

答案 8 :(得分:0)

将解决方案克隆到新计算机上之后,我遇到了此错误。问题是我没有安装指定的dotnet框架-我只安装了2.1和3.0,而它需要2.2。公平地说,测试输出中的错误确实报告了这一点:

Testhost process exited with error: It was not possible to find any compatible framework version
The specified framework 'Microsoft.NETCore.App', version '2.2.0' was not found.
  - The following frameworks were found:
      2.1.13 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
      3.0.0 at [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
You can resolve the problem by installing the specified framework and/or SDK.
The .NET Core frameworks can be found at:
  - https://aka.ms/dotnet-download
. Please check the diagnostic logs for more information.

请注意,Visual Studio在安装缺少的框架后需要重新启动。

答案 9 :(得分:0)

当我更新一些测试项目以使用新格式的项目文件时,我遇到了这个问题,其中一些项目在运行测试时仍需要包含app.config文件,

  • 缺少以下元素的测试用例对象...
  • 缺少测试用例。重建项目,然后重试

在app.config的运行时部分中删除所有程序集绑定对我来说就是固定的-即在运行时部分中删除此类条目

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>

答案 10 :(得分:0)

该错误应该在Visible Studio的“输出”窗口中可见。您可能需要在选项中将其更改为详细程度。

在我的情况下,这是因为我引用的是没有强名的dll。