java - JUnit 5 : Accessing index inside ParameterizedTest

标签 java junit5

考虑这个片段:

@ParameterizedTest
@ValueSource(strings = {"a", "b", "c"})
void test(final String line) {
    // code here
}

这将是一个实际测试,但为简单起见,假设其目的只是打印:
Line 1: processed "a" successfully.
Line 2: processed "b" successfully.
Line 3: failed to process "c".

换句话说,我希望可以访问测试值的索引 考试。
根据我的发现,{index}可以在测试之外使用以正确命名。

最佳答案

我不确定 JUnit 5 当前是否支持这个。解决方法可能是使用 @MethodSource并提供 List<Argument>符合您的需求。

public class MyTest {

  @ParameterizedTest
  @MethodSource("methodSource")
  void test(final String input, final Integer index) {
    System.out.println(input + " " + index);
  }

  static Stream<Arguments> methodSource() {
    List<String> params = List.of("a", "b", "c");

    return IntStream.range(0, params.size())
      .mapToObj(index -> Arguments.arguments(params.get(index), index));
  }
}

关于java - JUnit 5 : Accessing index inside ParameterizedTest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62418780/

相关文章:

Java 相当于 PHP str_word_count?

java - 类级别的 JUnit5 参数化测试

intellij-idea - 为什么在 IntelliJ 中运行 TestCase 时 JUnit Jupiter 和 JUnit Vintage 分开了?

java - 使用JUnit5时,我收到警告: "ClassNotFoundException: org.junit.platform.engine.support.filter.ExclusionReasonConsumingFilter"

java - Android从python服务器中的套接字接收消息

oracle alter session查询的Java准备语句参数

java - @Disabled 在 JUnit5 中不起作用

eclipse - JUnit5 测试在 maven 上工作正常,但在通过 Eclipse 运行时不行, "No tests found with test runner ' JUnit 5'."

java - 如何理解 for 循环初始化的第 23 行发生了什么

java - 从查询中获取表名