我已经使用NUnit一段时间了,我一直在从AssertionHelper
派生我的测试类。通过这样做,我的测试使用如下语法:
Expect(myValue, Is.EqualTo(3), "value wasn't equal to 3");
而不是:
Assert.That(myValue, Is.EqualTo(3), "value wasn't equal to 3");
我看到几乎所有使用NUnit的示例都使用Assert.That()
语法,但似乎Expect()
更有意义(至少对我而言),因为我期待代码中的某种行为。
将AssertionHelper
与NUnit一起使用是否有任何不足之处,或者它真的归结为品味/风格问题?
提前致谢!
答案 0 :(得分:5)
两者都做同样的事情,并且两者都允许您指定实现IConstraint
接口的自定义约束。从我的角度来看Assert()
有点轻量级,因为不会强制你继承特殊类中的所有测试装置。
答案 1 :(得分:1)
AssertionHelper
的主要问题是很少有人使用它,因此新的NUnit功能和约束往往不会被添加到它。因为它被忽略而没有被广泛使用,NUnit team is considering removing it或将其作为一个单独的包。
该小组正在寻求社群对是否删除它的反馈,因此请随时对此问题发表评论。
答案 2 :(得分:0)
由于我命名变量的方式,我的测试通常以行结束:
Assert.That(actual, Is.EqualTo(expected));
哪个IMO比
读得更好(更流利)Expect(actual, Is.EqualTo(expected));
答案 3 :(得分:0)
Rob Prouse说NUnit团队正在弃用AssertionHelper是正确的。当我发现它在更新中被淘汰时,我已经使用了大约8个月,我提出维护它。关于这个问题的讨论进展得很慢,我有点不耐烦了,所以我在Nuget上编写了NUnit.StaticExpect并提供了AssertionHelper的替代品,并在代码中使用了“using static”import。我把一个生产项目改为它,它运作良好。
我也是在不同的路径上开始的:NExpect它提供的语法更容易让人想起Chai,但其可扩展性更像Jasmine。 NExpect处于一个非常有用的状态 - 我已经在我自己的项目中使用了一段时间了。有一个demo project,您可以通过以下方式观察断言的演变:
以及提供NExpect可扩展性的示例。希望这会有所帮助。