最近,我正在阅读本书Growing Object-Oriented Software, Guided by Tests
,我对他们对Junit行为的描述感到困惑。通过方法或类创建每个Junit实例
如果我理解作者说的话,Junit会创建一个测试类的新实例,并在每个测试方法中确保它们彼此隔离。
要运行测试,JUnit将创建一个新的测试类实例,并调用相关的测试方法。每次创建一个新的测试对象 可确保测试彼此隔离,因为在每次测试之前将替换对象的字段。这意味着测试 可以自由更改任何测试对象字段的内容。
然后他们说,在NUnit的(净)是不同的,因为它重复使用相同的测试对象为所有的测试方法,所以你需要使用Setups
和TearDowns
重置对象。
NUnit的从JUnit的表现不同那些在
.Net
工作应注意 NUnit的重用所有 测试方法测试对象的同一实例,这样有可能改变的任何值必须要么在 [设置]重置和[TearDown]方法(如果它们是字段)或本地化为测试方法 。
虽然JUnit的行为就像他们描述的NUnit行为一样,所以您的类实例可以在同一个类中重用,并且您可以使用Setups和TearDown来重置它们。因此,JUnit的行为如何,它在每个方法中实例化测试类,否则它会立即测试类。
也许我不明白作者的意思。他们是什么意思?
描述是正确的,JUnit为每个测试创建一个新对象。亲自尝试一下。 – markspace
@markspace是的,我误解了JUnit的行为 – Pau
并且NUnit的描述也是正确的。不同的软件,针对不同的平台,由不同的人编写,具有不同的愿景。:-) – Charlie