如何使用 Junit 5 编写具有 System.exit() 的测试用例方法?
Posted
技术标签:
【中文标题】如何使用 Junit 5 编写具有 System.exit() 的测试用例方法?【英文标题】:How to write a test case method having System.exit() using Junit 5? 【发布时间】:2022-01-05 00:03:04 【问题描述】:场景:在集成测试期间要测试的负面场景之下。当前测试用例因退出而失败并且未到达测试方法。
示例:
private void method1(int a)
try
if(a == 0)
throw exception();
else
---
catch(exceptionclass e)
System.exit(1);
【问题讨论】:
【参考方案1】:在我看来,在对象上调用方法会导致 JVM 存在,这听起来很糟糕。通常应该在main方法中完成。
所以我会重构你的代码,这样你的测试对象会抛出一种Exception
来指示发生了某种致命错误,这样主方法就可以捕获它并终止 JVM。
然后你可以简单地测试它是否会从你的测试用例中抛出这个Exception
。
【讨论】:
实际上我必须将退出代码返回给shell脚本以进一步处理 让main方法返回而不是由an对象返回 对不起,我还是不清楚,从方法级别或从主方法调用 System.exit(1),有什么不同?无论哪种方式集成测试用例都会失败吗?以上是关于如何使用 Junit 5 编写具有 System.exit() 的测试用例方法?的主要内容,如果未能解决你的问题,请参考以下文章
当 JUnit 5 没有 assertThat() 函数时,如何将 Hamcrest 与 JUnit 5 一起使用?
如何使用 Junit 5 使用 Testcontainer 对 Kafka 运行集成测试