Java 期望静态调用有一定的结果

Java 期望静态调用有一定的结果,java,powermock,Java,Powermock,我的方法中有一些系统函数的静态调用 长CurrentDateMillimes=System.currentTimeMillis 如何使用powermock测试此调用并为其设置特定结果 我的意思是这样的 System.currentTimeMillis(); expectLastCall().andReturn(leftBound); // I expect to return some certain amount of milliseconds mockStatic(System.class

我的方法中有一些系统函数的静态调用

长CurrentDateMillimes=System.currentTimeMillis

如何使用powermock测试此调用并为其设置特定结果

我的意思是这样的

System.currentTimeMillis();
expectLastCall().andReturn(leftBound); // I expect to return some certain amount of milliseconds
mockStatic(System.class);
expect(System.currentTimeMillis()).andReturn(rightBound.getTime());
replayAll();
assertTrue(DateUtils.isInRange(leftBound, rightBound));
verifyAll();

嗯……我已经这样做了

System.currentTimeMillis();
expectLastCall().andReturn(leftBound); // I expect to return some certain amount of milliseconds
mockStatic(System.class);
expect(System.currentTimeMillis()).andReturn(rightBound.getTime());
replayAll();
assertTrue(DateUtils.isInRange(leftBound, rightBound));
verifyAll();

也许这有帮助。但我强烈建议您重构代码,并将时间给予者的角色提取到适当的接口中,对于该接口,一个实现可以返回系统当前的时间毫秒。然后,单元测试可以简单地使用该接口的模拟。我用MockStatic解决了这个问题。至于重构…基本上这个调用在我自己的DateUtils类中。