@RunWith(Parameterized.class)
public class MyTest{
@Parameters
public static Collection<Object[]> data() {
/*create and return a Collection
of Objects arrays here.
Each element in each array is
a parameter to your constructor.
*/
}
private int a,b,c;
public MyTest(int a, int b, int c) {
this.a= a;
this.b = b;
this.c = c;
}
@Test
public void test() {
//do your test with a,b
}
@Test
public void testC(){
//you can have multiple tests
//which all will run
//...test c
}
}
5条答案
按热度按时间zour9fqk1#
我在我们公司的同事用TestNG风格为JUnit编写了一个免费的DataProvider,您可以找到on github (https://github.com/TNG/junit-dataprovider)。
我们在非常大的项目中使用它,它对我们来说工作得很好。它比JUnit的
Parameterized
有一些优势,因为它将减少单独类的开销,你也可以执行单个测试。示例如下所示
**编辑:**从v1.7开始,它还支持其他提供数据的方式(字符串、列表),并且可以内联提供程序,因此不一定需要单独的方法。
在github的手册页上可以找到一个完整的工作示例。它还有一些其他的特性,比如收集实用类中的提供者,并从其他类中访问它们等等。手册页非常详细,我相信你会在那里找到任何问题的答案。
nmpmafwu2#
JUnit 4有参数化的测试,它和php数据提供者做同样的事情
bsxbgnwa3#
根据您对灵活性和可读性的需求,您可以选择
Parameterized
- junit的内置选项,dkatzel对此进行了描述。其他选项是由外部库(如zohhak)提供的外部junit runner,它可以让您执行以下操作:或者功能稍有不同的junitParams。只要选择最适合你的
qvtsj1bj4#
您可以使用JUnit 5的ParameterizedTest。下面是https://www.petrikainulainen.net/programming/testing/junit-5-tutorial-writing-parameterized-tests/的一个示例:
可以从注解、方法甚至CSV文件中加载测试参数。
g0czyy6m5#
这里有另一个选择。你不必使用谷歌Guava,这只是我的实现。
这里使用了与@dkatzel的答案相同的
@Parameters
,但是@Parameters
注解针对特定的测试方法,而不是类接受参数,因此您可以挑选哪些方法使用这组参数。