未找到PowerMockito和Java 8 ZonedDateTime toInstant()

时间:2014-08-12 19:46:24

标签: datetime java-8 powermock

温我参加考试:

@RunWith(PowerMockRunner.class)
@PrepareForTest(MyStuff.class)
public class MyStuffTest { ..whatever

在我将ZonedDateTime类添加到该代码之后,它发现了以下错误:

  

java.lang.IllegalStateException:无法转换具有名称的类   MyCode原因:[源错误]找不到toInstant()   java.time.ZonedDateTime

我的代码中的某处:

long longTimeNoSee = ZonedDateTime.parse(getateTimeString()).toInstant().toEpochMilli();

我想这是powermock中的错误。但也许有人有点想法(?)

4 个答案:

答案 0 :(得分:5)

这确实是Powermock中的一个错误。见

https://github.com/jayway/powermock/issues/557

您可能需要添加示例并对此问题进行投票。

更新:根据Powermock,它似乎是javassist中的一个问题:https://github.com/jboss-javassist/javassist/issues/43

答案 1 :(得分:2)

使用 powermockito 版本1.6.6 或更高版本。

此外,请确保使用最新的Javassist版本或至少使用 3.23.0-GA

答案 2 :(得分:1)

我有同样的问题。通过使用Instant.from()修复它。 所以在你的情况下,下面应该工作: ZonedDateTime.parse(Instant.from(getateTimeString()))toEpochMilli();

答案 3 :(得分:0)

注意:严格针对在这里尝试过所有功能但仍无法运行的人

我刚刚将包含使用toInstant()的方法移到了新的帮助器类。

现在一切正常。

因此,这是我的建议,您可以创建一个新的Helper/UtilDate_Helper类或将相关代码移至已经存在的代码中 类。现在您可以从该类中调用所需的函数 您正在尝试测试。

无需更新依赖关系。只是一个很小的解决方法。