gpt4 book ai didi

junit - 在游戏中使用参数化的 JUnit 测试!框架

转载 作者:行者123 更新时间:2023-12-02 03:48:32 26 4
gpt4 key购买 nike

我想在游戏中使用参数化的 JUnit 测试!框架 (1.2.5) 应用程序。

这是我非常简单的测试示例:

import java.util.Arrays;
import java.util.List;

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

import play.test.FunctionalTest;

@RunWith(Parameterized.class)
public class ParameterizedExampleTest extends FunctionalTest {

private int i;

@Parameters
public static List<Object[]> parameters() {
return Arrays.asList(new Object[][] {{1},{2},{3}});
}

public ParameterizedExampleTest(int i) {
this.i = i;
}

@Test
public void someTest() {
System.out.println("i is " + i);
}
}

当我运行测试时,我得到一个 IllegalArgumentException 告诉我“测试类只能有一个构造函数”。我完全同意这一点,因为 FunctionalTest extends BaseTest 有一个 @RunWith(PlayJUnitRunner.class) 注释,而 PlayJUnitRunner 有一个构造函数。

欢迎任何帮助!

最佳答案

我找到了一个相当不错的解决方案:

import java.util.Arrays;
import java.util.List;

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

import play.test.FunctionalTest;

@RunWith(Parameterized.class)
public class ParameterizedExampleTest extends FunctionalTest {

@Parameter(0)
public int i;

@Parameters
public static List<Object[]> parameters() {
return Arrays.asList(new Object[][] {{1},{2},{3}});
}

@Test
public void someTest() {
System.out.println("i is " + i);
}
}

您必须使用 @Parameter(...) 注释和参数数组中参数的编号来标记参数。不需要构造函数,因此它可以顺利运行。

缺点:您将需要 JUnit 4.11,因为此功能未在 play (1.2.5) 附带的 4.10 中实现。

关于junit - 在游戏中使用参数化的 JUnit 测试!框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15382393/

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