我想在testng @test中使用断言异常类型和消息,我的要求是从外部数据源传递期望的消息,这看起来很难通过@test作为参数传递
尝试了这个testng解决方案
@Test(expectedExceptions = StatusRuntimeException.class , expectedExceptionsMessageRegExp ="ExceptionMsg")
想要实现类似于给定的Junit示例
@Test
public void testMethod(){
valiadteException();
}
public void valiadteException(){
exception.expect(StatusRuntimeException.class);
exception.expectMessage("ExceptionMsg");
}
答案 0 :(得分:0)
您正在传递与输出消息不匹配的正则表达式。
如果您希望完整消息的一部分,请尝试使用:
@Test(expectedExceptions=StatusRuntimeException.class, expectedExceptionsMessageRegExp =".*ExceptionMsg.*")
这将检查邮件中是否包含ExceptionMsg
。
但是,如果ExceptionMsg
是您期望的完整消息,则必须转义正则表达式特殊字符才能使其正常工作。
必须通过在特殊字符之前添加转义字符.
来转义特殊字符,例如\
,例如:\.
如果没有更具体的信息,我无法提供更多信息。如果您添加了期望的消息,我可以在答案中提供其转义版本。
编辑:
如果您想要类似第二个的东西,我不知道它是否存在于testng中,但是您可以这样实现:
@Test
public void testMethod(){
// test code
try {
// call function/method that throws the StatusRuntimeException
} catch (StatusRuntimeException ex) {
// validate the exception
Assert.assertTrue(ex.getMessage().contains("ExceptionMsg"));
}
}