组织单元测试有三种方法:按夹具,类或特征测试。但TestClass的NUnit属性称为TestFixture。这有历史原因吗?
答案 0 :(得分:17)
主要的历史原因是NUnit从JUnit开始直接生产,junit称它为测试夹具。
NUnit 1.0早于我的时间,但我被告知它是通过将JUnit中的所有.java文件重命名为.cs文件并尝试编译而开始的。它已从那里修复,并添加了一个用户界面。当我加入NUnit 2.0时,NUnit 1.0中仍有一个名为IsVisualAgeForJava
的方法,因为JUnit当时有特殊的行为。
在NUnit 2.0中,我们的目标是使NUnit更加.NET。所以我们添加了属性和一堆其他东西。我们所有人都来自java背景,并与JUnit合作多年。使用[TestFixture]
似乎很自然。
答案 1 :(得分:17)
我尊重Mike Two的回应,但我会断言NUnit团队得到了这个错误,并且使用[TestFixture]
是NUnit面前的语义疣。 测试类不是夹具。根据我对JUnit的研究,我没有找到任何关于测试类作为测试夹具的引用,也没有找到关于测试类的“测试夹具”的讨论。相反,关于夹具的所有JUnit / xUnit讨论都与设置和拆卸有关,当然,这是用于设置实际测试夹具的常用方法。
请注意,在NUnit 2.5中,您可以删除[TestFixture]注释。
更新(2012年7月)
我刚刚阅读了黄瓜书,在第99页,作者Matt Wynne解释了使用“灯具”的起源。我引用:
有一个悠久的传统(来自硬件世界,测试装置的起源)调用测试系统和被测系统之间的链接。这是我们在本书中称为自动化代码的“胶水代码”角色。 FIT测试框架使用该术语的含义。 一些单元测试工具(例如NUnit)通过将测试用例类本身称为夹具而进一步混淆了该问题。无处不在的语言! (Wynne& Hellesoy,2012)
答案 2 :(得分:5)
现在你问起来了,我只是查了一下 测试夹具是在测试运行之前必须建立的固定基线状态,这样结果是可预测和可重复的。在单元测试框架中,我们使用SetUp和TearDown属性/方法来创建/销毁测试夹具(例如,使用正确的对象初始化实例变量)。