首页 > 解决方案 > 如何实现单个 JUnit 测试用例之间的公共数据共享

问题描述

我有三个测试用例,即Test1.java, Test2.java, Test3.java。在每个测试用例中,我都在与一个即将读取数据的文件进行交互。这意味着我正在读取每个测试用例的文件数据@BeforeClass并卸载每个测试用例的相同数据@AfterClass

所以现在我的要求是,我想在执行这 3 个测试用例之前进行文件读取操作,并且在执行它们时应该能够在这 3 个测试用例之间共享相同的数据。

目前我已经实现了以下:

public class Test1{
private File testFile;
    @BeforeClass
    public static void setUpFiledata() {
        // Code for reading the file data
    }
    @AfterClass
    public static void tearDownFiledata() {
        // Code for unloading the file data
    }
}

public class Test2{
private File testFile;
    @BeforeClass
    public static void setUpFiledata() {
        // Code for reading the file data
    }
    @AfterClass
    public static void tearDownFiledata() {
        // Code for unloading the file data
    }
}

public class Test3{
private File testFile;
    @BeforeClass
    public static void setUpFiledata() {
        // Code for reading the file data
    }
    @AfterClass
    public static void tearDownFiledata() {
        // Code for unloading the file data
    }
}

在上面的代码中,每个测试用例都有一个@BeforeClass&@AfterClass方法来初始化每个测试用例通用的文件。现在我需要一种可以在每个测试用例中共享文件内容的方法。

标签: javajunitjunit4

解决方案


您可以使用测试套件来运行这些测试,并在测试套件上使用@BeforeClass@AfterClass

@RunWith(Suite.class)
@Suite.SuiteClasses({Test1.class, Test2.class, Test3.class})
public class MySuite {
    @BeforeClass
    public static void setUpFiledata() {
        // Code for reading the file data
    }
    @AfterClass
    public static void tearDownFiledata() {
        // Code for unloading the file data
    }
}

推荐阅读