我正在尝试模拟System类以获取currentTimeMillis()的常量值。 由于我不能使用Mockito来模拟最终类我使用的是PowerMock,但是当模拟System.currentTimeMillis()时,我发现错误“无法解析方法(长)”。
我的代码如下:
PowerMockito.mockStatic(System.class);
when(System.currentTimeMillis()).thenReturn(CURRENT_TIME_STAMP);
我还注释了我的课程:
@RunWith(PowerMockRunner.class)
@PrepareForTest(System.class)
public class DateTimeUtilsTest {
答案 0 :(得分:1)
解决。
应该是
PowerMockito.when(System.currentTimeMillis()).thenReturn(CURRENT_TIME_STAMP);
或静态导入PowerMockito
import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.when;
类似地,可以模拟任何System类方法,也可以模拟任何其他最终类。
答案 1 :(得分:1)
这就是为什么你应该首先编写测试,然后你不要编写不可测试的代码。
您的代码不应直接访问瞬态静态,而是通过可以模拟的组件。