Java JUnit@ParameterizedTest类对象作为值源?

Java JUnit@ParameterizedTest类对象作为值源?,java,junit,Java,Junit,我想创建一个ParameterizedTest,同时测试一组不同的AI,确保不会花费太长时间进行计算。但是,我无法在ValueSource中创建新对象,因此我不确定如何继续 问题是我需要将常量值传递给ValueSource,这就是我遇到的问题如何使对象保持恒定? @ParameterizedTest @ValueSource(ais = {new AdvancedAI(), new blabla}) public void moveCalculatedInTimeBy(AI Test

我想创建一个ParameterizedTest,同时测试一组不同的AI,确保不会花费太长时间进行计算。但是,我无法在ValueSource中创建新对象,因此我不确定如何继续

问题是我需要将常量值传递给ValueSource,这就是我遇到的问题如何使对象保持恒定?


 @ParameterizedTest
  @ValueSource(ais = {new AdvancedAI(), new blabla})
  public void moveCalculatedInTimeBy(AI TestAI) {
    long startTime = System.currentTimeMillis();
    Turn turn = Turn.initialTurn();
    Move calculatedMove = TestAI.calculateMove(Optional.empty(), turn);
    long endTime = System.currentTimeMillis() - startTime;
    assertTrue(endTime <= 8000);
  }


@参数化测试
@ValueSource(ais={new AdvancedAI(),new blabla})
公共无效移动时间(AI测试i){
long startTime=System.currentTimeMillis();
Turn-Turn=Turn.initialTurn();
Move calculatedMove=TestAI.calculateMove(可选.empty(),转动);
long-endTime=System.currentTimeMillis()-startTime;

assertTrue(endTime使用
@ValueSource
用于简单参数,这种参数可以设置为注释元素的值。换句话说,原语、字符串和类1。由于您希望提供类的实例,因此这对您不起作用。相反,您需要使用类似于2的值

@ParameterizedTest
@MethodSource(“TestiProvider”)
无效移动计算时间(AI测试i){
//执行测试。。。
}
静态列表和Javadoc以获取更多信息,例如工厂方法允许的返回类型


1.枚举常量也可以在注释中使用,但不能生成通用的枚举注释元素。这就是为什么JUnit 5也有
@EnumSource

2.您还可以直接使用
@ArgumentsSource
,如果需要,可以使用它定义
ArgumentsProvider