Thomas Wang
unread,Dec 12, 2021, 1:21:44 PM12/12/21Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Sign in to report message as abuse
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to mockito
Within the `try` block for the mocked `Instant`, calling `format` failed with `NullPointerException`. Honestly, I'm not quite sure if this is a `mockito` or `DateTimeFormatter` or `Instant` issue. Could someone help me take a look? Thanks.
Here is my test:
```
@Test
public void testAdd() {
Instant mockedNow = Instant.now(Clock.fixed(Instant.parse("2021-12-01T10:00:00Z"), ZoneOffset.UTC));
DateTimeFormatter nowSimpleDateFormat = DateTimeFormatter
.ofPattern("yyyyMMdd'_'HHmmss")
.withLocale(Locale.US)
.withZone(ZoneId.systemDefault());
System.out.println(nowSimpleDateFormat.format(Instant.now()));
// this line passes ok
assertEquals(nowSimpleDateFormat.format(mockedNow), "20211201_020000");
// but once I add the stubbing, the same assertion failed with a NullPointerException
try (MockedStatic<Instant> mockedInstant = mockStatic(Instant.class)) {
mockedInstant.when(Instant::now).thenReturn(mockedNow);
// same assertion as line 27
assertEquals(nowSimpleDateFormat.format(mockedNow), "20211201_020000");
}
}
```
Here is the stacktrace.
```
java.lang.NullPointerException: instant
at java.base/java.util.Objects.requireNonNull(Objects.java:246)
at java.base/java.time.ZonedDateTime.ofInstant(ZonedDateTime.java:407)
at java.base/java.time.chrono.IsoChronology.zonedDateTime(IsoChronology.java:399)
at java.base/java.time.chrono.IsoChronology.zonedDateTime(IsoChronology.java:126)
at java.base/java.time.format.DateTimePrintContext.adjust(DateTimePrintContext.java:150)
at java.base/java.time.format.DateTimePrintContext.<init>(DateTimePrintContext.java:119)
at java.base/java.time.format.DateTimeFormatter.formatTo(DateTimeFormatter.java:1841)
at java.base/java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1817)
at io.datability.HelloTest.testAdd(HelloTest.java:31)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.junit.runner.JUnitCore.run(JUnitCore.java:160)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
```
I'm using Java 11. Here is my POM dependencies:
```
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.8.2</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-inline</artifactId>
<version>4.1.0</version>
<scope>test</scope>
</dependency>
```