通过方法或类

时间:2017-07-06 16:29:25

标签: java junit nunit

最近,我正在阅读这本书Growing Object-Oriented Software, Guided by Tests,我对他们对Junit行为的描述感到困惑。

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

  

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

然后他们说在NUnit(.Net)中是不同的,因为它为所有测试方法重用了相同的测试对象,因此您需要使用SetupsTearDowns重置对象。

  

NUnit与JUnit的行为不同.Net中的工作人员应注意   NUnit为所有人重用了测试对象的相同实例   测试方法,因此任何可能更改的值都必须重置   [Setup]和[TearDown]方法(如果它们是字段)或本地化   测试方法。

我虽然JUnit的行为与描述NUnit行为一样,但是您的类实例可以在同一个类中重用,并使用Setups和TearDown重置它们。

因此,JUnit的行为方式,它会在每个方法中实例化测试类,否则会立即对测试类进行一次。

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

1 个答案:

答案 0 :(得分:2)

JUnit为每个测试实例化测试类(也称为使用@Test注释的方法)。

设置和拆卸方法只是为了帮助您编写清晰易读的测试 - 通过提取测试环境,前提条件和验证的常见设置,这样就不会弄乱测试本身。

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

  2. 环境设置特定于每个测试,并且不能在课堂上的所有测试中共享 - @Before@After注释