如何加载大量数据并在几个测试用例中使用它?

时间:2014-07-18 11:28:14

标签: java unit-testing junit integration-testing

我想用“真实”数据测试我的代码。这个数据可以在套件中的每个测试中重复使用,因为它是只读数据。

数据的加载很长,我想在整个套件中重复使用加载的数据(在众多测试用例中)。现在我将数据存储为静态字段。像这样:

Context.setData(new DataReader().getData(url));

什么是更“JUnit”的方式(即加载大量数据并在几个测试用例中使用它)?我真的不喜欢这个,因为它有明显的缺点。例如,谁初始化数据?

我还有什么其他方法可以实现这个目标?

1 个答案:

答案 0 :(得分:1)

您可能想要使用ParametrizedTests

import java.net.URL;
import java.util.Arrays;
import java.util.Collection;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import org.junit.runners.Parameterized.Parameters;

@RunWith(Parameterized.class)
public class MyTest {

    @Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(new Object[][] {
                 { new DataReader().getData(url) }
           });
    }

    private final Data data;

    public MyTest( Data data) {
        this.data = data;
    }

    @Test
    public void test1() {
        //
    }

    @Test
    public void test2() {
        //
    }
}

注释@Parameters的方法只调用一次。