使用 junit 进行迭代测试
iterative testing using junit
我有一堆测试输入,我想 运行 并将输出与预期进行比较:
@Test
void test () throws IOExeption {
for (File i : readDir()) {
File out = foo(i);
assertEquals(FileUtils.readLines(expected), FileUtils.readLines(out));
}
}
我想运行 使用 JUnit 进行测试。但是如果我像上面那样做,那么 JUnit 将在遇到第一个测试失败后停止。除了像下面这样让每个文件都有自己的测试用例之外,还有更好的方法吗?
@Test
void test1 () throws IOExeption {
File i = readFile("1.txt");
File out = foo(i);
assertEquals(FileUtils.readLines(expected), FileUtils.readLines(out));
}
@Test
void test2 () throws IOExeption {
File i = readFile("2.txt");
File out = foo(i);
assertEquals(FileUtils.readLines(expected), FileUtils.readLines(out));
}
我认为,您可以使用 Parameterized。这是 JUnit 的标准功能。下面你可以看到一个例子。
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
import java.util.Collection;
@RunWith(Parameterized.class)
public class Foo {
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] { { "1.txt" }, { "2.txt" } });
}
@Parameterized.Parameter // first data value (0) is default
public /* NOT private */ String fileName;
@Test
public void test() {
File i = readFile(fileName);
File out = foo(i);
assertEquals(FileUtils.readLines(expected), FileUtils.readLines(out));
}
}
我没有找到关于此的 JUnit 官方文档,但您可以找到更多详细信息,例如在本教程中:https://www.tutorialspoint.com/junit/junit_parameterized_test.htm
我有一堆测试输入,我想 运行 并将输出与预期进行比较:
@Test
void test () throws IOExeption {
for (File i : readDir()) {
File out = foo(i);
assertEquals(FileUtils.readLines(expected), FileUtils.readLines(out));
}
}
我想运行 使用 JUnit 进行测试。但是如果我像上面那样做,那么 JUnit 将在遇到第一个测试失败后停止。除了像下面这样让每个文件都有自己的测试用例之外,还有更好的方法吗?
@Test
void test1 () throws IOExeption {
File i = readFile("1.txt");
File out = foo(i);
assertEquals(FileUtils.readLines(expected), FileUtils.readLines(out));
}
@Test
void test2 () throws IOExeption {
File i = readFile("2.txt");
File out = foo(i);
assertEquals(FileUtils.readLines(expected), FileUtils.readLines(out));
}
我认为,您可以使用 Parameterized。这是 JUnit 的标准功能。下面你可以看到一个例子。
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.util.Arrays;
import java.util.Collection;
@RunWith(Parameterized.class)
public class Foo {
@Parameterized.Parameters
public static Collection<Object[]> data() {
return Arrays.asList(new Object[][] { { "1.txt" }, { "2.txt" } });
}
@Parameterized.Parameter // first data value (0) is default
public /* NOT private */ String fileName;
@Test
public void test() {
File i = readFile(fileName);
File out = foo(i);
assertEquals(FileUtils.readLines(expected), FileUtils.readLines(out));
}
}
我没有找到关于此的 JUnit 官方文档,但您可以找到更多详细信息,例如在本教程中:https://www.tutorialspoint.com/junit/junit_parameterized_test.htm