获取存储在 class 中的异常对象时 Junit 测试失败,未抛出
Junit test fails when fetching Exception object stored in a class, not thrown
我有一个侦听器 class,我在其中获取异常对象作为存储值。框架将异常对象存储在 class 中。稍后在侦听器中获取它以进行某些操作。
下面是实际要测试的方法:
@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 可以运行 并行测试。因此,如果您是 manipulating/using 来自测试的 class 级别属性,其值可能会因测试顺序而异 运行ning.
解决此类问题的方法是不要有junit class 级别的属性进行测试。相反,每个测试都有特定的变量。
我有一个侦听器 class,我在其中获取异常对象作为存储值。框架将异常对象存储在 class 中。稍后在侦听器中获取它以进行某些操作。
下面是实际要测试的方法:
@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 可以运行 并行测试。因此,如果您是 manipulating/using 来自测试的 class 级别属性,其值可能会因测试顺序而异 运行ning.
解决此类问题的方法是不要有junit class 级别的属性进行测试。相反,每个测试都有特定的变量。