我们今天有一个错过/跳过测试用例的案例:
开发人员没有将 [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/