获取存储在类中的异常对象时,Junit 测试失败,而不是抛出
Posted
技术标签:
【中文标题】获取存储在类中的异常对象时,Junit 测试失败,而不是抛出【英文标题】:Junit test fails when fetching Exception object stored in a class, not thrown 【发布时间】:2022-01-20 10:09:04 【问题描述】:我有一个侦听器类,我在其中获取异常对象作为存储值。异常对象由框架存储在一个类中。稍后在侦听器中获取它以执行某些操作。
下面是要测试的实际方法:
@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 install 失败,因为 maven-surefire 插件运行的测试用例失败了
Tests run: 56, Failures: 0, Errors: 1, Skipped: 0
错误是因为第一个代码块的第 1 行。 测试此用例的推荐方法是什么?
【问题讨论】:
你能分享失败吗? 【参考方案1】:Maven 可以并行运行测试。因此,如果您正在操作/使用测试中的类级别属性,则其值可能会根据测试运行的顺序而有所不同。
解决此类问题的方法是不要有junit类级别的属性进行测试。相反,每个测试都有特定的变量。
【讨论】:
我在类中使用了一种通用方法进行 2 次测试,这导致了问题。我发现后正要来删除问题。但这很有帮助以上是关于获取存储在类中的异常对象时,Junit 测试失败,而不是抛出的主要内容,如果未能解决你的问题,请参考以下文章
如何让 JUnit 测试(从 Ant 脚本驱动)转储导致失败的异常堆栈?