c# - 我们如何确保所有 NUnit [Test] 方法都是公开的?

标签 c# nunit nunit-3.0 .net-attributes

我们今天有一个错过/跳过测试用例的案例:

开发人员没有将 [Test] 公开,因此 NUnit (v 3.9.0) 没有运行它。

[TestFixture]
public class StackTests
{
    [Test]
    public void Fail1()
    {
        Assert.Fail("Will be run");
    }

    [Test]
    void Fail2()
    {
        Assert.Fail("will NOT be run - none the wiser");
    }
}

当开发人员注意到 Fail2 没有运行时,他又花了 20 分钟试图找出它没有被发现的原因,结果 🤦(U+1F926) 当我们注意到丢失的 public 时。

根据我的经验,NUnit [Test] 方法上缺少 public 是一个重复的绊脚石,很容易被遗漏。

有没有办法让 NUnit 或编译器对非公共(public) [Test] 方法发出警告?

还是我们被偶尔的 🤦🤦🤦 困住了?

最佳答案

有一个 analyzers package对于 NUnit。它doesn't look like有一个适合你的案例的分析器,但是有 an open issue .

您可以贡献一个分析器——看起来讨论停留在测试夹具应该有哪些构造函数上,我怀疑他们会接受一个分析器,它只是检查测试方法是否公开,这应该很容易编写.


另一种选择是采用始终指定访问修饰符的编码标准——因此 void Fail2() 将被禁止,但是 public void Fail2()private void Fail2() 将被接受。您可以使用 .editorconfig 规则执行此操作 dotnet_style_require_accessibility_modifiers = always .

关于c# - 我们如何确保所有 NUnit [Test] 方法都是公开的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58447186/

相关文章:

c# - 如何输出使用 NUnit 3 运行的测试结果?

c# - 具体来说,% 在 C# 中做什么?

javascript - 如何从javascript json接收WebAPI中的字典

c# - 在 Windows 中使用 Java 或 C# 添加自定义文件属性/属性

c# - 如何使用 Visual Studio 2015 运行 UWP NUnit 测试?

c# - 在 C# 中测试类库

c# - 如何根据起始集将一组时间间隔转换为另一组时间间隔

c# - 在内存中填充 SQLite 以进行单元测试

powershell - 从 Powershell 运行 NUnit 3

regex - NUnit 控制台命令行正则表达式不区分大小写?