温我参加考试:
@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
中的错误。但也许有人有点想法(?)
答案 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/Util
,Date_Helper
类或将相关代码移至已经存在的代码中 类。现在您可以从该类中调用所需的函数 您正在尝试测试。
无需更新依赖关系。只是一个很小的解决方法。