1.原因
@Test方法所在类中,不能存在有参数构造函数,无参构造可以存在。JUnit在运行测试之前,会对测试类做一些初始化和验证工作。对于普通的非参数化测试,JUnit期望测试类有一个无参的公共构造函数,这样它才能够实例化测试类并执行其中的测试方法。但是,当你进行参数化测试时,通常会定义一个带有参数的构造函数来接收测试数据,这样普通的构造函数就不符合要求了。
2.解决方法
1.在类前面添加@RunWith(Parameterized.class)
@RunWith(Parameterized.class)
的作用是告诉JUnit使用特定的运行器(在这里是Parameterized
运行器)来运行测试类。这个运行器知道如何处理带有参数的构造函数,它会遍历你提供的参数集合,为每个参数集创建一个测试实例,并调用带有参数的构造函数来传递这些参数,之后再执行测试方法。
2.其他方法
- 把有参构造器去掉,使用set方法初始化变量
- 不要使用@Test注解,使用main方法执行.
- 在另外一个类中使用@Test方法