[英]How do I test expectedExceptionsMessageRegExp (exception message) using TestNG?
[英]Testng test for specific exception with message
我正在尝试测试一种方法是否在其消息中抛出特定异常,如下所示:
@DataProvider(name = "correctPairs")
public Object[][] expectedResultsTest() {
return new Object[][] {
{ null, new NullPointerException("Class cannot be null") },
};
}
@Test(dataProvider = "correctPairs")
public void ormDefinitionClassTest(final Class<?> value, final Throwable e) {
try {
DatabaseManager databaseManager = new DatabaseManager();
databaseManager.findAll(value);
} catch (Throwable ex) {
Assert.assertEquals(ex, e);
}
但是它失败了,但有一个例外:
java.lang.AssertionError: expected [java.lang.NullPointerException: Class cannot be null] but found [java.lang.NullPointerException: Class cannot be null]
如何通过使用@DataProvider检查异常是否相等?
我将使用来自AssertJ流畅断言的catchThrowable方法。 这样,您可以检查测试正文中的异常,例如
Throwable t = catchThrowable(() -> databaseManager.findAll(value));
assertThat(t).isInstanceOf(e);
编辑:这里的问题可能是您假设这两个异常对象相等,但它们不是相等的对象。 您可以做的是分别声明它们的类型和消息。
您的错误在于平等测试。
Assert.assertEquals(new NullPointerException(), new NullPointerException());
返回false,因为两个异常的实例不同。 您必须先比较类,然后再比较消息。
class A implements ThrowingRunnable{
@Override
public void run() throws AuthenticationFailedException{
spy.processAuthenticationResponse(mockRequest, mockResponse, authenticationContext);
}
}
assertThrows(AuthenticationFailedException.class,new A());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.