我想知道,
如果在@Before方法中我正在初始化模拟对象,我不应该在@After中取消对它的引用吗?还是多余?为什么呢?
没有必要,JUnit 会为每个测试方法创建一个新的测试实例。
但是,如果是静态字段,那就是另一回事了,应该实现适当的生命周期,但我强烈建议您不要在 JUnit 测试中使用静态字段!相反,请考虑实现自己的JUnit Runner。
对于TestNG来说,这是一个不同的故事,因为TestNG创建了测试的单个实例,所以你必须小心模拟的生命周期。
Nullifying"引用在这里不会改变任何内容。
@Before
注释方法在每个测试方法之前运行。如果您使用此方法初始化模拟,它们将在每次测试之前重新初始化。有一个不同的注释 - @BeforeClass
,此注释导致在该测试类中的任何测试方法执行之前仅执行一次方法。但是,在这种情况下,"取消"引用将无济于事,因为您仍然需要创建一个新的模拟对象并将其引用分配给您的字段。