我对PowerMock有一个非常奇怪的问题,我希望有人更熟悉它的内部结构可以建议下一个方向来追逐。
受测试的课程是泽西岛资源课程。正在测试的方法中有一个wait()语句,随后它会在Helper类上调用2个静态方法。当调用Helper类的第一个静态方法时,将执行实际方法,而不是模拟。
细微差别:
我尝试编写一个测试存根来证明我的问题要发布在这里,但即使我不能在除原始类之外的任何内容上重现它。不幸的是,我无法发布该课程,因此我提出了盲目建议的请求。
为什么wait()会在PowerMock中造成副作用?
不确定这是否相关,但wait()是由通常设置回调的方法调用引起的。我不需要回调(不是我的测试点),所以我只是嘲笑这个方法并且没有设置回调。由于没有通知,wait()只是在指定的时间限制后返回。
在我的测试框架中,我使用的是JerseyTest 2.14(带有Grizzly容器),RestAssured 2.8.0和PowerMock 1.5.5。
答案 0 :(得分:0)
不是您正在寻找的答案,但我不止一次地看到,这是任何PowerMock问题的更好答案:不要使用PowerMock。 即使是开发它的人也建议不要使用它。
当您的生产代码强制您转向PowerMock时;然后考虑更改您的生产代码。换句话说:如果您认为需要PowerMock来测试您的代码;然后大部分时间,这意味着你正在处理糟糕的设计和实施
说真的:PowerMock及其字节码操作可以打开一堆问题蠕虫。从长远来看,您最好花时间重新设计“被测系统”,以便使用合理的框架使其可测试。例如,PowerMock打破了大多数用于测量代码覆盖率的框架。今天可能不会伤害你的东西,但也许会在以后。