找不到PowerMockito和Java 8 ZoneDateTime toInstant()
我运行我的测试时:找不到PowerMockito和Java 8 ZoneDateTime toInstant(),datetime,java-8,powermock,Datetime,Java 8,Powermock,我运行我的测试时: @RunWith(PowerMockRunner.class) @PrepareForTest(MyStuff.class) public class MyStuffTest { ..whatever 在我将zoneDateTime类添加到该代码后,它开始失败,出现以下错误: java.lang.IllegalStateException:无法转换名为的类 MyCode原因:[源错误]中未找到toInstant() java.time.zoneDateTime 在我的代码中
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyStuff.class)
public class MyStuffTest { ..whatever
在我将zoneDateTime
类添加到该代码后,它开始失败,出现以下错误:
java.lang.IllegalStateException:无法转换名为的类
MyCode原因:[源错误]中未找到toInstant()
java.time.zoneDateTime
在我的代码中,我有:
long longTimeNoSee = ZonedDateTime.parse(getateTimeString()).toInstant().toEpochMilli();
我猜这是powermock中的一个bug。但也许有人有了一些想法(?)这似乎确实是Powermock中的一个bug。看 您可能希望添加示例并投票支持此问题
更新:根据Powermock的说法,这似乎是javassist中的一个问题:我也有同样的问题。使用
Instant.from()
修复了此问题
因此,在您的情况下,以下内容应该有效:
ZonedDateTime.parse(Instant.from(getateTimeString())).toEpochMilli()代码>使用powermockito版本1.6.6或更高版本
此外,请确保使用最新的javassist版本或至少3.23.0-GA注意:严格适用于在此处尝试了所有操作但仍无法运行的用户
我刚刚将包含usingtoInstant()
的方法移动到一个新的助手类中
现在一切都很好
因此,我建议您创建一个新的Helper/Util
,Date\u Helper
类,或者将相关代码移动到现有的
班级。现在,您可以从
您正在尝试测试
不需要更新依赖项。只是一个小小的解决办法。您好。你处理好这个问题了吗?isBefore()方法的情况与此完全相同。尽管我运行的是使用Javassist 3.20.0的PowerMock 1.6.5,但我仍然看到了此错误,因此应该包括对该问题的修复。@JustinEmery我也遇到了同样的问题。我们使用PowerMock 1.6.6,其中错误被标记为已修复。我们的测试还是失败了。我做了一些研究,结果发现我们的项目库使用了一个较旧版本的javassist,它是在以前加载的。因此,请检查您的库是否包含早期的javassist版本。更新这些JAR为我解决了这个问题。升级javassist
到3.23.0-GA
和powermock
到1.7.4
对我有效。最新的javassist版本(目前为3.23.1-GA)不起作用。手动添加版本3.23.0-GA的javassist依赖项,就像你说的那样,为我修复了它。