gpt4 book ai didi

java - 在 JUnit 中使用相同测试数据重复多个测试的简洁方法

转载 作者:行者123 更新时间:2023-12-02 05:36:22 25 4
gpt4 key购买 nike

我有许多测试 - 在不同的测试类中 - 应该使用相同的示例数据集运行。这是一个示例测试方法。

@Test
public void testTracerErrorPerPixel() {
// Iterate over all sample images
// ** This is the line I want to refactor out **
for (Image image : SampleImages.values()) {

// Do some tests on those images

Assert.assertTrue("Tracer error in " + image + " too large after tracing, error per pixel is " + someValue, someValue);
}
}

@Test
public void testTracerCorrectPixelPercent() {
// Iterate over all sample images
// ** This is the line I want to refactor out **
for (Image image : SampleImages.values()) {

// Do some different tests on those images

Assert.assertTrue("Correct pixel percent in " + image + " too low after tracing, % correct " + someValue, someValue);
}
}

有没有一种标准的更简洁的方法来做到这一点?使用 for (Image image : SampleImages.values()) { 感觉这样做的方式是错误的。

使用其他框架(例如 TestNG)是可以接受的。

最佳答案

我们正在使用参数化运行器来解决这个问题。更多信息请参见in the junit docs .

根据你的情况,你可以写

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

@RunWith(Parameterized.class)
public class ParameterTest {

@Parameters
public static Iterable<Object[]> data() {
// extract to some class for readability and reuse
return Arrays.asList(new Object[][] {
{ new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB) },
{ new BufferedImage(1, 1, BufferedImage.TYPE_INT_RGB) }
});
}

private Image image;

public ParameterTest(Image aImage) {
image = aImage;
}

@Test
public void testTracerErrorPerPixel() {
// Do some tests on those images
System.out.println(image);
}

@Test
public void testTracerCorrectPixelPercent() {
// Do some different tests on those images
System.out.println(image);
}
}

关于java - 在 JUnit 中使用相同测试数据重复多个测试的简洁方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24932384/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com