首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用LocalDateTime模拟PowerMockito

用LocalDateTime模拟PowerMockito
EN

Stack Overflow用户
提问于 2016-07-29 07:39:49
回答 1查看 3.4K关注 0票数 2

我试图在方法中使用LocalDateTime对象来模拟一个类。嘲弄类会导致:

java.lang.IllegalStateException原因:在java.time.LocalDateTime中找不到源错误toInstant(java.time.ZoneOffset)

我已经找到了与this相关的问题(这个类是最终的)--并试图在测试setUp中这样做:

代码语言:javascript
复制
PowerMockito.mockStatic(LocalDateTime.class);

但我还是会犯同样的错误。一个不工作的测试设置是:

代码语言:javascript
复制
@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方法

EN

回答 1

Stack Overflow用户

发布于 2016-07-29 07:44:42

为了模拟来自JDK的类,您需要使用@PrepareForTest(LocalDateTime.class)为测试准备这些类(当然,您的测试运行程序应该是@RunWith(PowerMockRunner.class)

但是,更好的方法是避免使用PowerMockito,设计类时可以将LocalDateTime注入其中。

PowerMockito是一个非常强大的工具,应该很少使用,只有当你必须做一些棘手的代码覆盖,而你的经理正用枪指着你的脑袋时,这才是最后的手段。这是一条简单而快捷的出路,不是一个好办法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38653144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档