use*_*896 3 variables null junit static
我创建了一些静态变量@BeforeClass.我应该将它们设置为null @AfterClass吗?这些是非IO相关对象.
例:
public class ClassTest{
private static String staticText;
@BeforeClass
public static void setUp(){
staticText="long text";
}
//test methods
//Is this necessary
@AfterClass
public static void tearDown(){
staticText=null;
}
}
Run Code Online (Sandbox Code Playgroud)
简答:
对于静态成员:对于JUnit3和JUnit4,静态成员永远不能进行垃圾收集,除非您明确地使其引用无效(例如在@AfterClass方法中).
对于非静态成员:如果您正在使用JUnit3,那么最好在方法中使非静态成员变量无效@After.如果您将JUnit4与默认测试运行器一起使用,那么这种做法是不必要的.
答案很长:
JUnit为该类中存在的每个测试方法创建一个单独的测试类实例.JUnit3保留对所有这些实例的引用,直到测试套件完成执行,因此最好在方法中清理这些引用tearDown().(当然,由于在它所属的类的所有实例中只存在一个静态变量实例,因此对于非静态变量更为重要.)
JUnit4仍然具有为每个测试方法创建测试类的单独实例的行为,但只要您使用默认测试运行器,那么它只保留对当前正在执行的测试的测试类实例的引用属于.因此,即使您没有在方法中显式地使它们无效,也会清除非静态成员变量tearDown().
但要注意,如果您使用自定义JUnit4测试运行器(通过@RunWith注释),则无法保证对测试类实例的引用保留多长时间.
| 归档时间: |
|
| 查看次数: |
2861 次 |
| 最近记录: |