在我的TestNG单元测试中,我有一个场景,我想测试抛出异常的情况,但我也想测试模拟子组件上没有调用某个方法。我想出了这个,但它很难看,很长,可读性不好:
@Test
public void testExceptionAndNoInteractionWithMethod() throws Exception {
when(subComponentMock.failingMethod()).thenThrow(RuntimeException.class);
try {
tested.someMethod(); //may call subComponentMock.methodThatShouldNotBeCalledWhenExceptionOccurs
} catch (RuntimeException e) {
verify(subComponentMock, never()).methodThatShouldNotBeCalledWhenExceptionOccurs(any());
return;
}
fail("Expected exception was not thrown");
}
有没有更好的解决方案来同时测试Exception和verify()方法?
3条答案
按热度按时间kuhbmx9i1#
我们决定使用Assert框架。
mfpqipee2#
我将通过创建两个测试并使用注解属性
expectedExceptions
和dependsOnMethods
来区分这两个问题。对我来说,它看起来更整洁。你摆脱了
try catch
块和不必要的fail
方法调用。olmpazwi3#
还有一个更方便的方法,没人提过。
https://javadoc.io/doc/org.testng/testng/latest/org/testng/Assert.html
例如: