Junit使用文件输入参数化测试

我有一个关于使用参数化测试来查询我的APIunit testing的查询。 而不是建立一个类似的arraylist

Arrays.asList(new Object[]{ {1},{2},{3} }); 

我想逐个读取文件中的行并将它们填入数组中。 这样一切都会被推广。 任何人都可以用示例建议我这样的方法吗?

还有一种方法可以在不将各种参数声明为私有成员并在测试单元的构造函数中初始化它的情况下进行测试吗?

编辑:Duncan提出的代码

 @RunWith(Parameterized.class) public class JunitTest2 { SqlSession session; Integer num; Boolean expectedResult; static BufferedInputStream buffer = null; public JunitTest2(Integer num, Boolean expected){ this.num = num; this.expectedResult = expected; } @Before public void setup() throws IOException{ session = SessionUtil.getSqlSessionFactory(0).openSession(); SessionUtil.setSqlSession(session); buffer = new BufferedInputStream(getClass().getResourceAsStream("input.txt")); System.out.println("SETUP!"); } @Test public void test() { assertEquals(expectedResult, num > 0); System.out.println("TESTED!"); } @Parameterized.Parameters public static Collection getNum() throws IOException{ //I want my code to read input.txt line by line and feed the input in an arraylist so that it returns an equivalent of the code below return Arrays.asList(new Object[][]{ {2, true}, {3, true}, {-1, false} }); } @After public void tearDown() throws IOException{ session.close(); buffer.close(); System.out.println("TEARDOWN!"); } } 

我的input.txt也将如下:

 2 true 3 true -1 false 

 @RunWith(JUnitParamsRunner.class) public class FileParamsTest { @Test @FileParameters("src/test/resources/test.csv") public void loadParamsFromFileWithIdentityMapper(int age, String name) { assertTrue(age > 0); } } 

JUnitParams支持从CSV文件加载数据。

CSV文件将包含

 1,true 2,false 

看看junitparams项目,特别是这个例子 。 它将向您展示如何使用CSV文件进行参数输入。 这是一个简短的例子:

我的test.csv文件:

 1, one 2, two 3, three 

我的测试:

 package com.stackoverflow.sourabh.example; import static org.junit.Assert.assertTrue; import junitparams.FileParameters; import junitparams.JUnitParamsRunner; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(JUnitParamsRunner.class) public class FileReadingParameterizedTest { @Test @FileParameters("src/test/resources/test.csv") public void testWithCSV(int number, String name) { assertTrue(name + " is not at least two", number >= 2); } } 

显然,第一个测试将失败,产生错误消息, 一个不是至少两个