为什么testFixture而不是TestClass?

时间:2010-07-05 04:55:45

标签: nunit

组织单元测试有三种方法:按夹具,类或特征测试。但TestClass的NUnit属性称为TestFixture。这有历史原因吗?

3 个答案:

答案 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属性/方法来创建/销毁测试夹具(例如,使用正确的对象初始化实例变量)。