question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

Powermock does not play well with java.time

See original GitHub issue

From davidkar…@gmail.com on January 28, 2015 14:23:28

have this in a unit test which is annotated by: @RunWith(PowerMockRunner.class):

    LocalDate.now().minusYears(3).atStartOfDay().toInstant(ZoneOffset.UTC);

and it will blow up with:

teException: Failed to transform class with name com.davidkarlsen.traktorscrobbler.FileHandlingRouteBuilderTest. Reason: [source error] toInstant(java.time.ZoneOffset) not found in java.time.LocalDateTime at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:266) at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:180) at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:68) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:344) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:145) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:40) at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:244) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:61) at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:32) at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:34) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:408) at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104) at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59) at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33) at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:36) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67) Caused by: javassist.CannotCompileException: [source error] toInstant(java.time.ZoneOffset) not found in java.time.LocalDateTime at javassist.expr.MethodCall.replace(MethodCall.java:241) at org.powermock.core.transformers.impl.MainMockTransformer$PowerMockExpressionEditor.edit(MainMockTransformer.java:288) at javassist.expr.ExprEditor.loopBody(ExprEditor.java:192) at javassist.expr.ExprEditor.doit(ExprEditor.java:91) at javassist.CtClassType.instrument(CtClassType.java:1431) at org.powermock.core.transformers.impl.MainMockTransformer.transform(MainMockTransformer.java:74) at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:251) … 25 more

_Original issue: http://code.google.com/p/powermock/issues/detail?id=537_

Issue Analytics

  • State:closed
  • Created 8 years ago
  • Reactions:1
  • Comments:10 (1 by maintainers)

github_iconTop GitHub Comments

1reaction
rcoelho6commented, Mar 15, 2019

I have similar issue on version 1.7.4:

Code: ZonedDateTime zonedDate = Instant.now().atZone(ZoneOffset.systemDefault()).withHour(14).withMinute(0).withSecond(0); Instant baseInstant = zonedDate.toInstant();

Error: java.lang.IllegalStateException: Failed to transform class with name br.com.tempest.d7.engine.heuristics.impl.TimeBetweenHeuristicTest. Reason: [source error] toInstant() not found in java.time.ZonedDateTime at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:296) at org.powermock.core.classloader.MockClassLoader.loadModifiedClass(MockClassLoader.java:204) at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass1(DeferSupportingClassLoader.java:89) at org.powermock.core.classloader.DeferSupportingClassLoader.loadClass(DeferSupportingClassLoader.java:79) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:161) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.createDelegatorFromClassloader(JUnit4TestSuiteChunkerImpl.java:48) at org.powermock.tests.utils.impl.AbstractTestSuiteChunkerImpl.createTestDelegators(AbstractTestSuiteChunkerImpl.java:108) at org.powermock.modules.junit4.common.internal.impl.JUnit4TestSuiteChunkerImpl.<init>(JUnit4TestSuiteChunkerImpl.java:71) at org.powermock.modules.junit4.common.internal.impl.AbstractCommonPowerMockRunner.<init>(AbstractCommonPowerMockRunner.java:36) at org.powermock.modules.junit4.PowerMockRunner.<init>(PowerMockRunner.java:34) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:31) at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:24) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:29) at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:57) at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:24) at org.junit.internal.requests.FilterRequest.getRunner(FilterRequest.java:33) at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:49) at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) Caused by: javassist.CannotCompileException: [source error] toInstant() not found in java.time.ZonedDateTime at javassist.expr.MethodCall.replace(MethodCall.java:241) at org.powermock.core.transformers.impl.AbstractMainMockTransformer$PowerMockExpressionEditor.edit(AbstractMainMockTransformer.java:370) at javassist.expr.ExprEditor.loopBody(ExprEditor.java:192) at javassist.expr.ExprEditor.doit(ExprEditor.java:91) at javassist.CtClassType.instrument(CtClassType.java:1431) at org.powermock.core.transformers.impl.ClassMockTransformer.transformMockClass(ClassMockTransformer.java:65) at org.powermock.core.transformers.impl.AbstractMainMockTransformer.transform(AbstractMainMockTransformer.java:62) at org.powermock.core.classloader.MockClassLoader.loadMockClass(MockClassLoader.java:277) ... 27 more Caused by: compile error: toInstant() not found in java.time.ZonedDateTime at javassist.compiler.TypeChecker.atMethodCallCore(TypeChecker.java:749) at javassist.compiler.TypeChecker.atCallExpr(TypeChecker.java:695) at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:157) at javassist.compiler.ast.CallExpr.accept(CallExpr.java:46) at javassist.compiler.Javac$1.setReturnType(Javac.java:460) at javassist.compiler.JvstTypeChecker.atCallExpr(JvstTypeChecker.java:147) at javassist.compiler.ast.CallExpr.accept(CallExpr.java:46) at javassist.compiler.TypeChecker.atVariableAssign(TypeChecker.java:249) at javassist.compiler.TypeChecker.atAssignExpr(TypeChecker.java:218) at javassist.compiler.ast.AssignExpr.accept(AssignExpr.java:39) at javassist.compiler.CodeGen.doTypeCheck(CodeGen.java:242) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:330) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atIfStmnt(CodeGen.java:398) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:355) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.CodeGen.atStmnt(CodeGen.java:351) at javassist.compiler.ast.Stmnt.accept(Stmnt.java:50) at javassist.compiler.Javac.compileStmnt(Javac.java:569) at javassist.expr.MethodCall.replace(MethodCall.java:235) ... 34 more

0reactions
fungi8commented, Nov 13, 2020

am also version 1.74. I have the same problem with you. How do you solve it? @rcoelho6

Read more comments on GitHub >

github_iconTop Results From Across the Web

Powermock does not create mock for java.time.ZonedDateTime
The java.time.ZonedDateTime is a final system class, so it could mocked only by using workaround. And the workaround requires that the class ...
Read more >
Mockito Mock Static Method - PowerMock - DigitalOcean
Hello Pankaj , For mocking static methods , if we use PowerMockito , it will increse the memory consumption and soon we will...
Read more >
Mockito 2.x over PowerMock Migration: Top 10 Tips and Tricks
1. Use the proper PowerMock's Mockito API extension. Using powermock-api-mockito extension does not work with Mockito 2.x, you will have ...
Read more >
Java Unit Testing Skill - PowerMock - Alibaba Cloud Community
It can be used to simulate an object instance of a specified class. When simulating a non-final method of a non-final class, such...
Read more >
Improve your JUnit tests with Mockito and PowerMock - Reddit
getData() in that method? Well, don't. Call that from another method that is passing the data received to the one that's actually doing...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found