你好我有30个值引发的异常,我在接受输入的同一个方法上传递给我的测试,但似乎我不能把这个异常放在catch块中,有没有解决办法?
@DataProvider
public Object[][] providedInfo()
{
return new Object[][]
{
{MyGuests1.class,SQLException.class} //and many more
};
}
@Test(dataProvider="providedInfo")
public void f(Class c , Throwable ex) {
ItemsRepository x =new ItemsRepository();
try{
x.findAll(c);
}
catch(Throwable ex)
{
}
答案 0 :(得分:0)
您可以使用https://junit.org/junit4/javadoc/4.12/org/junit/rules/ExpectedException.html规则。
@Rule
public ExpectedException thrown= ExpectedException.none();
@DataProvider
public Object[][] providedInfo()
{
return new Object[][]
{
{MyGuests1.class,SQLException.class} //and many more
};
}
@Test(dataProvider="providedInfo")
public void f(Class c , Throwable ex) {
thrown.expect(ex);
ItemsRepository x =new ItemsRepository();
x.findAll(c);
}
如果抛出符合预期,则测试用例将失败。还有一些更冗长的测试选项。
此外,如果您使用Java 8或更高版本,您可能需要查看assertJ,因为它有一些额外的感知测试措施可能有所帮助,但我通常会发现它们的API更好。