假设我有这样的代码:
boolean ret = a() && b() && c() && d() && e();
通常情况下,只有在a()-d()的所有调用返回true时,才会调用e()。是否可能有一些编译器或JVM选项可以禁用短路评估,因此始终调用e(),而不管其他函数的结果如何?基本上,我正在对一个巨大系统进行UAT测试,并且需要测试e(),但是设置确保所有a()、b()等都返回true的环境和场景非常麻烦...
编辑:好吧,我想使用位与而不是逻辑与可能提供某种解决方法,但理想情况下,我正在寻找不需要对源代码进行任何更改的解决方案。由于正式和技术原因(如我所述,系统很大,我们需要在分段区域之间推广和部署代码并获得签名),这仅用于测试,生产版本需要启用惰性评估(即使用&&)。
事后总结:
- “正确”的答案是:没有。 - “有用”的答案是:您可以将&&更改为&。 - “我最终做的”答案是:远程调试系统,在表达式上设置断点并告诉eclipse运行e()。
e()
,你为什么觉得需要呢?为了测试目的,你应该设置一个场景,使得所有其他情况都返回 true。这可能涉及模拟对象或其他注入值,但你仍然应该找到一种方法来做到这一点。请注意,暂时禁用逻辑意味着你没有测试部署到生产环境的代码(因为该方法运行不同的代码)。 - Clockwork-Muse