Junit测试在获取存储在类中的Exception对象时失败,而不是抛出



我有一个监听器类,在其中我将异常对象作为存储值。异常对象由框架存储在类中。它稍后会在侦听器中获取以执行某些操作。

以下是要测试的实际方法:

@Override
public void afterChunkError(ChunkContext chunkContext) {
Exception e = (Exception) chunkContext.getAttribute("sb_rollback_exception"); // LINE 1
if (e instanceof ValidationException) { // LINE 2
logger.error(messageSource
.getMessage("errors.maxInteger", new String[] { "Point", "1000000" }, Locale.getDefault())); 
//insert exception details to DB.
}
}

junit看起来像这样:

RuntimeException runtimeException = new RuntimeException("My Run Time Exception");
JobException exception = new JobException(runtimeException);
Mockito.when(chunkContext.getAttribute("sb_rollback_exception")).thenReturn(exception);

它作为一个独立的测试用例运行良好。mvn安装失败,因为maven surefire插件运行的测试用例失败,称

Tests run: 56, Failures: 0, Errors: 1, Skipped: 0

错误是由于第一个代码块的第1行。测试这个用例的推荐方法是什么?

Maven可以并行运行测试。所以,如果您正在操作/使用测试中的类级别属性,其值可能会根据测试运行的顺序而有所不同。

解决这些问题的方法是不使用junit类级别的属性进行测试。相反,每个测试都有特定的变量。

相关内容

最新更新