JetBrains Rider无法检测到单元测试。

10

我正在使用JetBrains Rider运行.net Core项目的单元测试。但出于某些原因,它无法识别解决方案中的任何测试用例。

这些测试用例之前可以被检测到,现在突然间就不行了。我已经重启了Rider并重新构建了解决方案,但问题似乎没有得到解决。

有什么建议可以帮助调试吗?


1
尝试在backend.log中查找明显的原因。 否则,请通过Help->Report a Bug向Rider团队提交工单,并同意附加日志。 - Ivan Shakhov
不确定这是否是一个解决方案,但当在单元测试项目上点击“构建所选项目”时,“运行单元测试”按钮不再被禁用。 - Nika Nabakhteveli
6个回答

2
我之前在Rider上遇到了这个问题。我的队友们仍然可以运行我们的NUnit测试(无论是在Rider还是Visual Studio中),但我不能。"Run Unit Tests"菜单项都被禁用了,通常出现在测试夹具类和测试方法旁边的运行图标也没有出现。
原来这是Rider中的一个bug,导致.NET Core版本与Microsoft.NET.Test.Sdk库不兼容。我运行了Visual Studio Updater,而我的队友们没有运行,所以我使用的是最新版本的.NET Core,而他们不是。
这是我向JetBrains提交的错误报告。你可以看到,他们将其迁移到了ReSharper,但该错误也影响了Rider。虽然当时已经修复了,但我认为我后来又见过它。
要查找是否存在相同的问题,请尝试以下操作:
- 确保.NET(Core)和Microsoft.NET.Test.Sdk库都是最新的。 - 如果这样做不起作用,请将Microsoft.NET.Test.Sdk降级到旧版本(16.3.0之前的任何版本都可以)。

2
我曾经遇到过类似的问题,就是在解决方案资源管理器中右键点击测试项目时,Rider(2023.1.3)禁用了“运行单元测试”选项。
对我来说,解决方法是进入测试项目,右键点击一个单独的测试文件,然后我就可以运行该测试。
然后,项目又神奇地可以进行测试了。

2
我在Rider 2023.1.3版本中遇到了类似的问题。某些测试类的运行/调试单元测试选项被禁用,而且这些类在单元测试资源管理器中也没有显示,并且它们从测试会话中消失了。
通过点击"文件"->"无效缓存..."并重新启动Rider解决了这个问题。

真是荒谬,但只是为了确认一下,这对我也起作用了。 - Scyssion
这解决了我的问题。我也设置了Visual Studio的IDE位置。 - undefined

0
我遇到了类似的问题:Visual Studio可以识别和运行单元测试项目,但Rider无法识别它们(单元测试资源管理器)也无法手动运行它们(右键单击->运行单元测试)。
这些单元测试针对较旧的框架版本(4.6.1和一些.net standard 2.0)用于一个遗留产品。
对我来说,解决方法是确保安装了MSTest.TestAdapter包。MSTest.TestFramework已安装,并且其版本与所有其他工作项目匹配。但是,新创建的项目没有自动包含此包(MSTest.Adapter),即使使用当时最新版本的Visual Studio创建项目(2023年8月)。
简而言之:确保将MSTest.TestFramework和MSTest.TestAdapter都添加为NuGet包。您可能还需要手动更新csproj文件,以确保正确的和标签存在。值得注意的是,对于我的情况,测试适配器位置是相对路径,用于查找解决方案的packages目录。 例如:
  <Import Project="..\..\..\..\packages\MSTest.TestAdapter.2.2.3\build\net45\MSTest.TestAdapter.props" Condition="Exists('..\..\..\..\packages\MSTest.TestAdapter.2.2.3\build\net45\MSTest.TestAdapter.props')" />
  <Import Project="..\..\..\..\packages\MSTest.TestAdapter.2.2.3\build\net45\MSTest.TestAdapter.targets" Condition="Exists('..\..\..\..\packages\MSTest.TestAdapter.2.2.3\build\net45\MSTest.TestAdapter.targets')" />

然后在一些项目中的“EnsureNuGetPackageBuildImports”目标中,错误条目中应该存在类似的路径结构。
<Error Condition="!Exists('..\..\..\..\packages\MSTest.TestAdapter.2.2.3\build\net45\MSTest.TestAdapter.props')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\MSTest.TestAdapter.2.2.3\build\net45\MSTest.TestAdapter.props'))" />
<Error Condition="!Exists('..\..\..\..\packages\MSTest.TestAdapter.2.2.3\build\net45\MSTest.TestAdapter.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\..\..\..\packages\MSTest.TestAdapter.2.2.3\build\net45\MSTest.TestAdapter.targets'))" />

0

我们曾经遇到过这个问题,我们使用了MSTest。我们尝试了重建、清理等方法,但都没有起作用。但是以下方法确实有效:

  • 注释掉“[TestClass]”
  • 重新构建

所有菜单都恢复了正常功能。我希望这能帮助未来的我在几个月后回到这个问题时解决它。


0
在我的情况下,我没有注意到.csproj文件中存在Git冲突。当我解决了这些冲突后,Rider再次像以前一样识别了测试文件。
我曾经查看项目视图以查看哪些文件有错误,但是没有显示任何错误。显然,合并冲突也导致了这个问题。

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