如何在 Rider 中进行 xUnit 测试?我收到错误 CS0246

Posted

技术标签:

【中文标题】如何在 Rider 中进行 xUnit 测试?我收到错误 CS0246【英文标题】:How to xUnit-Test in Rider? I'm getting error CS0246 【发布时间】:2018-06-21 18:26:35 【问题描述】:

我是 C# 新手,对 C# 中的单元测试更是陌生。现在我想向应用程序添加单元测试,但我似乎无法在 JetBrains Rider 中完成:

除了我的 WPF 应用程序项目之外,我还在我的解决方案中创建了一个新的“单元测试项目”。 Rider 安装 xunitxunit.abstractionsxunit.assertxunit.corexunit.extensibility.corexunit.extensibility.execution。它还创建了一个Tests.cs 类,其中包含一个带有[Fact] 属性的Test1() 方法。问题是:它立即显示'Fact' is not an attribute

在构建时,会产生两个 [CS0246] 错误:

Tests.cs(8, 10): [CS0246] Der Typ- oder Namespacename "Fact" wurde nicht gefunden (fehlt eine using-Direktive oder ein Assemblyverweise?)
Tests.cs(8, 10): [CS0246] Der Typ- oder Namespacename "FactAttribute" wurde nicht gefunden (fehlt eine using-Direktive oder ein Assemblyverweise?)

我不确定确切的英文翻译是什么,但我想你明白了。缺少哪些参考资料?这是 Rider 中的错误吗?

我也用 NUnit 尝试过,结果相似。

除此之外:我是否需要遵循任何文件结构或命名约定才能自动检测到测试?

【问题讨论】:

using Xunit; 添加到您的 Test.cs 文件的顶部。如果您将鼠标悬停在出现错误的项目并查看建议的修复(即,单击出现的灯泡),Rider 应该能够为您执行此操作。 它已经自动出现了,但它没有帮助。 Rider 没有为错误提供任何建议。 Rider 版本?您的目标是什么 .Net 版本?您是否打开了 NuGet (Alt-7) 选项卡并确保恢复包? 在我自己看了几个小时后,我在此处发布问题 5 分钟后得到了解决方案:我的应用程序面向 .NET 4.0。我也正确地将 xUnit 框架设置为 4.0。尽管通过安装较旧的 xunit 包来尊重这一点,但该模板似乎与 .NET 4.0 并不完全兼容。在我的虚拟项目上将目标框架更改为 .NET 4.5 后,一切都很好。不幸的是,我现在不能在我的生产项目上这样做。为了使其在 4.0 中工作,我需要进行哪些更改? Rider 是 2018.1.2 版本 【参考方案1】:
    确保已安装 NuGet 包“xunit”和“xunit.runer.visualstudio”(应该已自动安装),并且正如 Jonathon Chase 所提到的,将 using XUnit; 添加到所有包含测试的文件的顶部。李>

【讨论】:

应该是 using Xunit; 正如 Jonathon 所说...,而不是 using XUnit;

以上是关于如何在 Rider 中进行 xUnit 测试?我收到错误 CS0246的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XUnit 对 Web API 控制器进行单元测试

使用Xunit来进行单元测试

如何在需要 UserManager 但使用内存数据库的 XUnit 中测试方法

如何在 jwt 授权的 web api 上执行 XUnit 测试?

使用 xUnit 进行单元测试异常消息

如何使用 FluentAssertions 在 XUnit 中测试 MediatR 处理程序