获取存储在 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 级别的属性进行测试。相反,每个测试都有特定的变量。