java - JUnit - 预期的异常消息正则表达式

标签 java testing junit testng

我正在从 TestNg 切换到 JUnit。我需要将预期的异常消息与预定义的正则表达式相匹配,例如在以下 TestNg 代码中:

@Test(expectedExceptions = SomeClass.class, expectedExceptionsMessageRegExp = "**[123]regexExample*")
    public void should_throw_exception_when_...() throws IOException {
        generatesException();
    }

这很好用,但我无法在 JUnit 中实现相同的行为。我想出了这个解决方案:

@Rule
public ExpectedException expectedEx = ExpectedException.none();

@Test
public void should_throw_exception_when_...() throws IOException {
    expectedEx.expect(SomeClass.class);
    expectedEx.expectMessage("**[123]regexExample*");
    generatesException();
}

但是方法 expectedEx.expectMessage("**[123]regexExample*"); 不支持正则表达式,我需要为它提供准确的硬编码消息。我已经看到这可以通过为 Matcher 提供该方法来实现,但我不确定如何正确地做到这一点。

有什么好的方法吗?

最佳答案

你能用StringContains吗?匹配器?

expectedEx.expectMessage(StringContains.containsString("regexExample"));

不幸的是,库中没有正则表达式匹配器(据我所知)。许多人已经实现了他们自己的。

关于java - JUnit - 预期的异常消息正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27781380/

相关文章:

junit - 模拟包私有(private)类

java - 如何在java中使用while循环反转字符串?

java - 使用 Scanner.nextLine() 方法的时机

java - 使用不同的值调用递归函数

java - 如何同时为java开发人员、c/c++开发人员、php开发人员安装eclipse?

php - 如何测试由对 php 的多个 ajax 请求创建的竞争条件?

java - 在 eclipse 中断言条件

perl - 如何轻松地将开发目录中已卸载的 Perl 模块添加到 @INC?

使用 PICT 进行测试,但测试用例不完整

spring boot 测试错误的配置类