我试图在方法中使用LocalDateTime对象来模拟一个类。嘲弄类会导致:
java.lang.IllegalStateException原因:在java.time.LocalDateTime中找不到源错误toInstant(java.time.ZoneOffset)
我已经找到了与this相关的问题(这个类是最终的)--并试图在测试setUp中这样做:
PowerMockito.mockStatic(LocalDateTime.class);但我还是会犯同样的错误。一个不工作的测试设置是:
@Before
public void setUp() {
PowerMockito.mockStatic(LocalDateTime.class);
LocalDateTime ld = LocalDateTime.now();
Instant now = Instant.now();
now.atOffset(ZoneOffset.UTC);
PowerMockito.when(LocalDateTime.toInstant(any(ZoneOffset.class))).thenReturn(now); // <= fails with above exception
}如何正确地模拟LocalDateTime类,以便Mockito可以调用toInstant方法
发布于 2016-07-29 07:44:42
为了模拟来自JDK的类,您需要使用@PrepareForTest(LocalDateTime.class)为测试准备这些类(当然,您的测试运行程序应该是@RunWith(PowerMockRunner.class)。
但是,更好的方法是避免使用PowerMockito,设计类时可以将LocalDateTime注入其中。
PowerMockito是一个非常强大的工具,应该很少使用,只有当你必须做一些棘手的代码覆盖,而你的经理正用枪指着你的脑袋时,这才是最后的手段。这是一条简单而快捷的出路,不是一个好办法。
https://stackoverflow.com/questions/38653144
复制相似问题