如何在测试方法中使用ExpectedExceptionsMessageRegExp

时间:2019-06-21 19:47:28

标签: java selenium automation testng

我想在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");
}

1 个答案:

答案 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"));
    }
}