参数化测试类构造器报错:需仅含一个公共无参构造方法
问题解决:测试类构造器报错
报错信息翻译
测试类必须恰好有一个公共的无参构造方法
解决方案
- 给
ParameterTest类添加@RunWith(Parameterized.class)注解,这是JUnit 4参数化测试的必要配置。没加这个注解的话,JUnit会按普通测试类的规则检查构造器,强制要求存在无参构造。修改后的类代码示例:
@RunWith(Parameterized.class) public class ParameterTest extends MainTest { int number; boolean expectedPrime; @Parameterized.Parameters public static List<Integer> getData() { return Arrays.asList(1,2,6,9,482); } public ParameterTest(int number){ this.number = number; } @Before public void openBaseUrl(){ driver.get(getBASE_URL()+"primenumber.php"); } // 其他测试代码... }
- 检查父类
MainTest是否有可访问的无参构造方法。如果MainTest只有带参数的构造器,需要在ParameterTest的构造器中显式调用父类构造器并传入所需参数,示例:
public ParameterTest(int number) { super(/* 填入父类构造器要求的参数 */); this.number = number; }
内容的提问来源于stack exchange,提问作者cenitram
相关产品推荐
相关产品推荐

