我有一个监听器类,在其中我将异常对象作为存储值。异常对象由框架存储在类中。它稍后会在侦听器中获取以执行某些操作。
以下是要测试的实际方法:
@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类级别的属性进行测试。相反,每个测试都有特定的变量。