JUnit - 在@Before中一次启动的字段在测试中为null

Dav*_*d S 2 java junit

就像标题所说,即使我已经在@Before方法中将它们作为一次性设置启动,我仍然会在测试用例中获得无效的字段.唯一的例外是第一个运行的测试有效.

我能够使用以下代码复制行为:

public class NetworkTest extends TestCase{
    private static Boolean oneTimeSetUpDone = false;
    private Client client;

    @Before
    public void setUp(){
        if(!oneTimeSetUpDone){
            client = new Client();

            oneTimeSetUpDone = true;
        }   
    }

    @Test
    public void testConnection(){
        System.out.println(client);
        assertFalse(true);
    }

    @Test
    public void testMultiConnection(){
        System.out.println(client);
        assertFalse(true);
    }
Run Code Online (Sandbox Code Playgroud)

我在这里遗漏了什么或为什么在第一次测试运行后字段会被清除?

And*_*rup 5

@Before每次测试之前运行- 您应该考虑@Test在测试类的新实例中运行的每一个,并@Before设置该实例(专业提示:查看类' .hashCode()- 在每个测试方法中它是不同的).

您可以@BeforeClass在您的情况下使用.

干杯,