为什么testFixture而不是TestClass?

Sib*_*Guy 21 nunit

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

yba*_*kos 19

我尊重Mike Two的回应,但我会断言NUnit团队弄错了,并且使用[TestFixture]NUnit是一个语义疣.测试类不是固定装置.根据我对JUnit的研究,我没有找到任何关于测试类作为测试夹具的引用,也没有找到关于测试类的"测试夹具"的讨论.相反,关于夹具的所有JUnit/xUnit讨论都与设置和拆卸有关,当然,这是用于设置实际测试夹具的常用方法.

请注意,在NUnit 2.5中,您可以删除[TestFixture]注释.

更新:(2012年7月)

我刚刚阅读了黄瓜书,在第99页,作者Matt Wynne解释了使用"夹具"的起源.我引用:

有一个悠久的传统(来自硬件世界,测试装置的起源)调用测试系统和被测系统之间的链接.这是我们在本书中称为自动化代码的"胶水代码"角色.FIT测试框架使用该术语的含义.一些单元测试工具(例如NUnit)通过将测试用例类本身称为夹具而进一步混淆了该问题.无处不在的语言!(Wynne&Hellesoy,2012)

  • 我同意你的看法。那是一个错误。一旦到了就很难收回。但是我确实认为当时 JUnit 中存在类似的行为。我可能完全错了。这一切都发生在 2002 年初,我可能记错了。无论哪种方式,您都断言测试类和夹具是不同的东西是正确的。 (3认同)
  • 感谢Mike Two,我总是着迷于我们工艺项目背后的传奇历史.我也意识到,如果我不喜欢它,我不应该抱怨,而是提交补丁.我只是想知道我是否过于迂腐,因为迄今为止没有其他人对NUnit做过这样的改变. (2认同)

Mik*_*Two 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].


Gis*_*shu 6

现在你问起来了,我只是查了一下.
测试夹具是在测试运行之前必须建立的固定基线状态,这样结果是可预测和可重复的.在单元测试框架中,我们使用SetUp和TearDown属性/方法来创建/销毁测试夹具(例如,使用正确的对象初始化实例变量).