diff --git a/core-java-8/pom.xml b/core-java-8/pom.xml
index 18bdaa15f4..112e8b764d 100644
--- a/core-java-8/pom.xml
+++ b/core-java-8/pom.xml
@@ -1,5 +1,5 @@
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0
com.baeldung
core-java-8
@@ -104,6 +104,24 @@
aspectjweaver
${asspectj.version}
+
+ org.powermock
+ powermock-module-junit4
+ ${powermock.version}
+ test
+
+
+ org.powermock
+ powermock-api-mockito2
+ ${powermock.version}
+ test
+
+
+ org.jmockit
+ jmockit
+ ${jmockit.version}
+ test
+
@@ -119,7 +137,7 @@
org.apache.maven.plugins
maven-compiler-plugin
- 3.1
+ ${maven-compiler-plugin.version}
1.8
1.8
@@ -142,6 +160,16 @@
+
+ maven-surefire-plugin
+ ${maven-surefire-plugin.version}
+
+
+ -javaagent:${settings.localRepository}/org/jmockit/jmockit/${jmockit.version}/jmockit-${jmockit.version}.jar
+
+ true
+
+
@@ -159,9 +187,14 @@
3.6.1
1.8.9
+ 2.0.0-RC.4
+ 1.44
1.7.0
1.19
1.19
2.0.4.RELEASE
+
+ 3.8.0
+ 2.22.1
diff --git a/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java b/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java
new file mode 100644
index 0000000000..04c1a0b74e
--- /dev/null
+++ b/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeUnitTest.java
@@ -0,0 +1,43 @@
+package com.baeldung.time;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+
+import java.time.Clock;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.when;
+import static org.powermock.api.mockito.PowerMockito.mockStatic;
+
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({ LocalDateTime.class })
+public class LocalDateTimeUnitTest {
+
+ @Test
+ public void givenLocalDateTimeMock_whenNow_thenGetFixedLocalDateTime() {
+ Clock clock = Clock.fixed(Instant.parse("2014-12-22T10:15:30.00Z"), ZoneId.of("UTC"));
+ LocalDateTime dateTime = LocalDateTime.now(clock);
+ mockStatic(LocalDateTime.class);
+ when(LocalDateTime.now()).thenReturn(dateTime);
+ String dateTimeExpected = "2014-12-22T10:15:30";
+
+ LocalDateTime now = LocalDateTime.now();
+
+ assertThat(now).isEqualTo(dateTimeExpected);
+ }
+
+ @Test
+ public void givenFixedClock_whenNow_thenGetFixedLocalDateTime() {
+ Clock clock = Clock.fixed(Instant.parse("2014-12-22T10:15:30.00Z"), ZoneId.of("UTC"));
+ String dateTimeExpected = "2014-12-22T10:15:30";
+
+ LocalDateTime dateTime = LocalDateTime.now(clock);
+
+ assertThat(dateTime).isEqualTo(dateTimeExpected);
+ }
+}
diff --git a/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeWithJMockUnitTest.java b/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeWithJMockUnitTest.java
new file mode 100644
index 0000000000..13861dfd0b
--- /dev/null
+++ b/core-java-8/src/test/java/com/baeldung/time/LocalDateTimeWithJMockUnitTest.java
@@ -0,0 +1,48 @@
+package com.baeldung.time;
+
+import mockit.Expectations;
+import mockit.Mock;
+import mockit.MockUp;
+import org.junit.jupiter.api.Test;
+
+import java.time.Clock;
+import java.time.Instant;
+import java.time.LocalDateTime;
+import java.time.ZoneId;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+public class LocalDateTimeWithJMockUnitTest {
+
+ @Test
+ public void givenLocalDateTimeWithJMock_whenNow_thenGetFixedLocalDateTime() {
+ Clock clock = Clock.fixed(Instant.parse("2014-12-21T10:15:30.00Z"), ZoneId.of("UTC"));
+ new MockUp() {
+ @Mock
+ public LocalDateTime now() {
+ return LocalDateTime.now(clock);
+ }
+ };
+ String dateTimeExpected = "2014-12-21T10:15:30";
+
+ LocalDateTime now = LocalDateTime.now();
+
+ assertThat(now).isEqualTo(dateTimeExpected);
+ }
+
+ @Test
+ public void givenLocalDateTimeWithExpectations_whenNow_thenGetFixedLocalDateTime() {
+ Clock clock = Clock.fixed(Instant.parse("2014-12-23T10:15:30.00Z"), ZoneId.of("UTC"));
+ LocalDateTime dateTimeExpected = LocalDateTime.now(clock);
+ new Expectations(LocalDateTime.class) {
+ {
+ LocalDateTime.now();
+ result = dateTimeExpected;
+ }
+ };
+
+ LocalDateTime now = LocalDateTime.now();
+
+ assertThat(now).isEqualTo(dateTimeExpected);
+ }
+}