Java Junit通过@Parameters进行多输入/多方法测试

Java Junit通过@Parameters进行多输入/多方法测试,java,junit,Java,Junit,我对JUnit4比较陌生;我发现我可以在一个方法上重复相同的测试,使用不同的输入,使用@Parameters注释标记一个返回数组Iterable的方法,比如列表 我发现JUnit确实要求Iterable of Array的方法提供程序是静态的,并命名为data,这意味着您可以测试不同的方法,但始终使用相同的数据 事实上,您可以使用@参数标记任何方法(使用任何返回类型,顺便说一句),但没有任何效果;只考虑data()方法 我希望JUnit可以做的是,让一些不同的数据集用@参数注释,以及一些机制(比

我对JUnit4比较陌生;我发现我可以在一个方法上重复相同的测试,使用不同的输入,使用
@Parameters
注释标记一个返回数组Iterable的方法,比如
列表

我发现JUnit确实要求Iterable of Array的方法提供程序是静态的,并命名为
data
,这意味着您可以测试不同的方法,但始终使用相同的数据

事实上,您可以使用
@参数
标记任何方法(使用任何返回类型,顺便说一句),但没有任何效果;只考虑
data()
方法

我希望JUnit可以做的是,让一些不同的数据集用
@参数注释
,以及一些机制(比如@Test的一个参数),这些机制可以指定在执行
testFoo()
testBar()
的数据集
Y
时使用数据集
X

换句话说,我想在每个测试方法中设置一个本地(而不是类/实例)数据集

据我所知,你必须为你想用多个输入测试的每个方法构建一个单独的类,这使得这个东西变得毫无用处;AAMOF我为自己构建了一个适度的框架(实际上是基于JUnit的),它确实允许我使用多个输入(带有跟踪功能)测试多个方法,所有这些方法都包含在一个类中,避免了代码的扩散


我错过什么了吗

方法调用什么并不重要,只要它有
@Parameters
注释即可

拥有多个数据集的最简单方法是将测试放在一个抽象类中,让具体的子类拥有带有
@Parameters
方法的方法

然而,我会质疑为什么在同一个测试类中,每个测试都要有多个数据集。这可能违反了单一责任原则,您可能应该将数据集分成每个测试类