测试方法有很多例外

时间:2018-02-22 20:20:58

标签: java testng

你好我有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)
 {

 } 

1 个答案:

答案 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更好。