有没有办法知道 @MethodSource 内部为哪种测试方法提供数据?

Is there a way to know inside a @MethodSource for which test method it's providing data?

在我的 TestClass 中,我有很多不同的测试方法,它们都必须 运行 使用相同的数据,因此具有相同的 @MethodSource:

 public class TestClass {
    private class TestData { /* some fields */ }
    private List<TestData> testDataTemplates = asList( 
        new TestData(...),
        /* some more elements */ 
    );

    static private Stream<Arguments> testDataProvider {
        List<TestData> testData = new ArrayList<>();
        // Here we do some nested .forEach iterating over the testDataTemplates
        return testData.stream();
    }

    @ParametrizedTest
    @MethodSource("testDataProvider")
    public void testMethod1(...) { }

    // some more test methods

    @ParametrizedTest
    @MethodSource("testDataProvider")
    public void testMethodN(...) { }

}

对于testMethodN,有必要使数据与其他方法略有不同。我的想法是检测内部 testDataProvider 当前正在为哪种方法生成数据并相应地调整输出。

有办法吗?
如果不是,那么实现我需要的最干净的方法是什么,再次强调 testDataProvidertestMethodN 的输出与其他测试方法的输出真的非常相似?

可以使用新的 @MethodSource:

来解决这个问题
static private Stream<Arguments> filteredTestDataProvider() {
    List<Arguments> testCases = new ArrayList<>();

     testDataProvider().forEach(args -> {
          // decide whether and how the current args are used
     });

     return testCases.stream();
}

当然,testMethodN@MethodSource("filteredTestDataProvider") 也应该相应地进行调整。