Junit会在每次测试方法调用时重新初始化类吗?

当我运行以下代码时,两个测试用例都变为现实:

import static junit.framework.Assert.assertEquals;

import org.junit.Test;

public class MyTest{

private int count;

@Before

public void before(){

count=1;

}

@Test

public void test1(){

count++;

assertEquals(2, count);

}

@Test

public void test2(){

count++;

assertEquals(2, count);

}

}

  1. test1-成功
  2. test2-失败(按预期该计数将变为3)

  1. test1-成功
  2. test2-成功

为什么junit reinitializing class/variable与每个测试方法都调用。它是junit中的错误或有意提供。

回答:

回答:

对于每种测试方法,将创建Junit的行为的 新实例MyTest

因此,在您的情况下,这两种方法的变量count都将具有value 1,因此这两种测试方法的值都count++将是2,因此测试用例将通过。

public class MyTest{

public MyTest(){

// called n times

System.out.println("Constructor called for MyTest");

}

@Before //called n times

public void setUp(){

System.out.println("Before called for MyTest");

}

//n test methods

}

如果您使用2种测试方法执行上述代码:

输出将是:

Constructor called for MyTest

Before called for MyTest

//test execution

Constructor called for MyTest

Before called for MyTest

以上是 Junit会在每次测试方法调用时重新初始化类吗? 的全部内容, 来源链接: utcz.com/qa/405381.html

回到顶部