之间有什么区别的NUnit和xUnit.net?开发其中两个而不是一个的意义何在?
我读过xUnit是由NUnit的发明者开发的:
xUnit.net是.NET Framework的单元测试工具。由NUnit 的原始发明人撰写
另一方面:
NUnit是适用于所有.Net语言的单元测试框架..当前的生产版本2.6版是此基于xUnit的单元测试工具的第七个主要版本。
那么真相在哪里?
之间有什么区别的NUnit和xUnit.net?开发其中两个而不是一个的意义何在?
我读过xUnit是由NUnit的发明者开发的:
xUnit.net是.NET Framework的单元测试工具。由NUnit 的原始发明人撰写
另一方面:
NUnit是适用于所有.Net语言的单元测试框架..当前的生产版本2.6版是此基于xUnit的单元测试工具的第七个主要版本。
那么真相在哪里?
Answers:
在撰写此答案时,最新的NUnit版本是v3.5,xUnit.net是v2.1。
这两个框架都很棒,并且都支持并行测试运行(尽管以不同的方式)。NUnit自2002年以来一直存在,它被广泛使用,有据可查并且拥有一个庞大的社区,而xUnit.net则更现代,更具TDD依附性,可扩展性,并且在.NET Core开发中也处于发展趋势。它也有据可查。
除此之外,我注意到的主要区别是xUnit.net运行测试方法的方式。因此,在NUnit中,我们有一个测试类和一组测试方法。NUnit创建测试类的新实例,然后从同一实例运行所有测试方法。而xUnit.net会为每个测试方法都创建测试类的新实例。。因此,不能使用字段或属性在测试方法之间共享数据,这是一种不好的做法,因为我们的测试方法会相互依赖,这在TDD中是不可接受的。因此,如果您使用xunit.net,则可以确保测试方法是完全隔离的。
但是,如果您愿意在测试方法之间共享某些数据,则xUnit将允许您这样做。因此,默认情况下,所有测试方法都是完全隔离的,但是您可以在特定情况下有意打破这种隔离。我喜欢这种态度,这就是为什么我更喜欢它。
xUnit优点:
xUnit通过避免使用旧的“ SetUp”和“ TearDown”方法来遵循新概念。它迫使我们像使用.NET开发人员那样使用IDisposable和构造函数。而且xUnit具有清晰的上下文共享概念。
xUnit缺点:
获取测试上下文的可用性尚未实现。