我正在从 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/