2017-07-06 38 views
0

最近,我正在阅读本书Growing Object-Oriented Software, Guided by Tests,我对他们对Junit行为的描述感到困惑。通过方法或类创建每个Junit实例

如果我理解作者说的话,Junit会创建一个测试类的新实例,并在每个测试方法中确保它们彼此隔离。

要运行测试,JUnit将创建一个新的测试类实例,并调用相关的测试方法。每次创建一个新的测试对象 可确保测试彼此隔离,因为在每次测试之前将替换对象的字段。这意味着测试 可以自由更改任何测试对象字段的内容。

然后他们说,在NUnit的(净)是不同的,因为它重复使用相同的测试对象为所有的测试方法,所以你需要使用SetupsTearDowns重置对象。

NUnit的从JUnit的表现不同那些在.Net工作应注意 NUnit的重用所有 测试方法测试对象的同一实例,这样有可能改变的任何值必须要么在 [设置]重置和[TearDown]方法(如果它们是字段)或本地化为测试方法 。

虽然JUnit的行为就像他们描述的NUnit行为一样,所以您的类实例可以在同一个类中重用,并且您可以使用Setups和TearDown来重置它们。因此,JUnit的行为如何,它在每个方法中实例化测试类,否则它会立即测试类。

也许我不明白作者的意思。他们是什么意思?

+1

描述是正确的,JUnit为每个测试创建一个新对象。亲自尝试一下。 – markspace

+0

@markspace是的,我误解了JUnit的行为 – Pau

+1

并且NUnit的描述也是正确的。不同的软件,针对不同的平台,由不同的人编写,具有不同的愿景。:-) – Charlie

回答

2

JUnit为每个测试实例化测试类(也就是用@Test注解的方法)。

设置和拆卸方法仅用于帮助您编写清晰易读的测试 - 通过提取测试环境的常见设置,前提条件和验证,以免混淆测试本身。

  1. 的环境设置是静态并且可以共享accros类中的所有测试 - 这是确定只有一次创建它 - @BeforeClass@AfterClass注释(注意,方法必须是静态的)

  2. 的环境设置是特定于每个测试和不能accros类中的所有测试共享 - 的@Before@After注解

相关问题