Junit测试中的java Teardown()用于重置字段
试图做一些JUnit测试,但是已经有一段时间了,所以我忘记了一些东西。如果我在测试一个类,我会在@before()中创建该类的一个对象,但在teardown中,我不应该将其设置为null吗?这样就可以消除任何问题或任何可能干扰我下一次测试的事情
到目前为止,我已经做到了
package potluck.Testing;
import static org.junit.Assert.*;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import potluck.domain.Controller;
/**
* @author Samuel
*
*/
public class ControllerTest {
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
Controller testCntlr = Controller.getInstance();
}
/**
* @throws java.lang.Exception
*/
@After
public void tearDown() throws Exception {
testCntlr() = null;
}
}
但是它说它不能解析为一个变量
# 1 楼答案
不需要。您不需要在tearDown方法中将字段设置为null
JUnit在测试类的新实例中运行每个测试方法
如果省略tearDown方法,测试将正常运行
只有当您的测试具有对象之外的副作用时,才需要使用
@After
拆卸方法,例如创建文件或文件夹、插入数据库、更新静态字段等。在这些情况下,可以使用拆卸方法撤消测试的副作用# 2 楼答案
我发现了错误。我没有在正确的位置实例化它。通过在@before之外声明它,我可以直接测试cntlr。getInstance();在@before中,这使它成为新的。然后它在@after中看到它
# 3 楼答案
将其设置为
ControllerTest
上的字段。如前所述,一旦setup()
完成,它就超出了范围不过,要回答更大的问题,你可能不必这么做。每次在
setup()
中创建一个新实例时,都会丢弃对旧实例的引用。旧的实例不应该影响将来的测试(尽管总是有办法给自己制造麻烦)