我的应用程序有一个流程,最后它的方法System.exit(int)
被调用。
我正在尝试通过使用TestNG进行测试来测试此流程。
但是,在运行测试时,尽管测试已完成,但我还是收到了一条奇怪的消息:
只是为了找到根本原因,我从实际流程中删除了System.exit(int)
,并按预期通过了测试,所以这里的问题是System.exit(int)
方法。
为了解决此问题,我尝试模拟有问题的方法,但找不到正确的方法。这是我所做的
java.lang.System.class
下添加了@PrepareForTest
。PowerMockito.mockStatic(java.lang.System.class)
我尝试了两种方法来模拟该方法:
a。
PowerMockito.replace(PowerMockito.method(System.class, "exit", int.class))
.with((proxy, method, args) -> null);
以这种方式运行时,似乎模拟无法正常工作,因为在测试结束时,我得到的消息与在System.exit(int)上未应用任何模拟时得到的消息相同。
< / li>b。
PowerMockito.doNothing().when(System.class, "exit", Mockito.any());
通过这种方式,我在测试开始时就得到了这个异常:
org.powermock.reflect.exceptions.MethodNotFoundException: No method found with name 'exit' with parameter types: [ <none> ] in class java.lang.System.
我已经以这种方式嘲笑了一些方法,不确定为什么使用System.exit(int)
不能正常工作。
有什么想法吗? 谢谢