You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/03/10 20:31:49 UTC

[plc4x] 03/03: - Completely converted the project to use JUnit5 - Fixed the JUnit5 integration in surefire and failsafe - Bumped the Camel version to 3.1.0

This is an automated email from the ASF dual-hosted git repository.

cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git

commit 196b4e5b8005bf8c150e90cf7c856ee4230343d2
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Mar 10 21:31:38 2020 +0100

    - Completely converted the project to use JUnit5
    - Fixed the JUnit5 integration in surefire and failsafe
    - Bumped the Camel version to 3.1.0
---
 build-utils/protocol-base-mspec/pom.xml            | 17 +-----
 .../apache/plc4x/java/PlcDriverManagerTest.java    | 24 ++++----
 .../PlcUsernamePasswordAuthenticationTest.java     |  5 +-
 .../plc4x/java/api/connection/PlcReaderTest.java   |  3 -
 .../plc4x/java/api/connection/PlcWriterTest.java   |  1 -
 .../exceptions/PlcInvalidFieldExceptionTest.java   |  2 +-
 .../api/messages/PlcProprietaryRequestTest.java    |  6 --
 .../api/messages/PlcProprietaryResponseTest.java   |  3 -
 .../java/api/messages/PlcReadRequestTest.java      |  3 -
 .../java/api/messages/PlcReadResponseTest.java     |  2 -
 .../plc4x/java/api/messages/PlcRequestTest.java    |  6 --
 .../api/messages/PlcSubscriptionEventTest.java     |  3 -
 .../api/messages/PlcSubscriptionRequestTest.java   |  2 -
 .../api/messages/PlcSubscriptionResponseTest.java  |  2 -
 .../api/messages/PlcUnsubscriptionRequestTest.java |  4 --
 .../messages/PlcUnsubscriptionResponseTest.java    |  2 -
 .../java/api/messages/PlcWriteRequestTest.java     |  3 -
 .../java/api/messages/PlcWriteResponseTest.java    |  2 -
 .../specific/TypeSafePlcReadRequestTest.java       |  3 -
 .../specific/TypeSafePlcWriteRequestTest.java      |  3 -
 .../java/api/types/PlcClientDatatypeTest.java      |  2 +-
 .../plc4x/java/api/types/PlcResponseCodeTest.java  |  2 +-
 .../java/api/types/PlcSubscriptionTypeTest.java    |  2 +-
 .../apache/plc4x/java/api/value/PlcValuesTest.java |  5 +-
 plc4j/drivers/mock/pom.xml                         | 10 +++-
 .../java/mock/connection/tcp/TcpHexDumper.java     |  5 +-
 .../mock/protocol/Plc4XSupportedDataTypes.java     |  2 +-
 .../org/apache/plc4x/java/mock/util/Assert.java    |  2 +-
 .../plc4x/java/opcua/OpcuaPlcDriverTest.java       |  6 +-
 .../org/apache/plc4x/java/opcua/UtilsTest.java     |  3 +-
 .../connection/OpcuaTcpPlcConnectionTest.java      |  6 +-
 plc4j/drivers/s7/pom.xml                           |  5 --
 .../simulated/connection/SimulatedDeviceTest.java  |  2 +-
 .../java/simulated/field/SimulatedFieldTest.java   |  2 +-
 plc4j/integrations/apache-camel/pom.xml            | 29 +++++++--
 .../org/apache/plc4x/camel/Plc4XComponent.java     |  3 +-
 .../java/org/apache/plc4x/camel/Plc4XConsumer.java |  9 ++-
 .../java/org/apache/plc4x/camel/Plc4XEndpoint.java |  8 +--
 .../apache/plc4x/camel/Plc4XPollingConsumer.java   |  9 ++-
 .../java/org/apache/plc4x/camel/Plc4XProducer.java | 17 ++++--
 .../java/org/apache/plc4x/camel/ConstantsTest.java | 25 ++++----
 .../java/org/apache/plc4x/camel/ManualTest.java    |  7 ++-
 .../org/apache/plc4x/camel/Plc4XComponentTest.java |  4 +-
 .../org/apache/plc4x/camel/Plc4XConsumerTest.java  |  2 +-
 .../org/apache/plc4x/camel/Plc4XEndpointTest.java  |  8 +--
 .../plc4x/camel/Plc4XPollingConsumerTest.java      |  2 +-
 .../org/apache/plc4x/camel/Plc4XProducerTest.java  | 10 ++--
 .../plc4x/edgent/PlcConnectionAdapterTest.java     |  3 -
 .../plc4x4nifi/Plc4xSinkProcessorTest.java         |  6 +-
 .../plc4x4nifi/Plc4xSourceProcessorTest.java       |  6 +-
 .../java/org/apache/plc4x/karaf/FeatureIT.java     |  4 +-
 plc4j/pom.xml                                      | 24 +++-----
 .../internal/DefaultSendRequestContextTest.java    |  2 +-
 .../optimizer/RequestTransactionManagerTest.java   |  8 +--
 plc4j/tools/opm/pom.xml                            |  5 --
 .../apache/plc4x/java/opm/ConnectedEntityTest.java |  3 +-
 .../org/apache/plc4x/java/opm/OpmUtilsTest.java    |  2 +-
 .../plc4x/java/opm/PlcEntityInterceptorTest.java   |  3 +-
 .../java/opm/PlcEntityManagerComplexTest.java      | 12 ++--
 .../plc4x/java/opm/PlcEntityManagerTest.java       |  5 +-
 .../plc4x/java/opm/SimpleAliasRegistryTest.java    |  2 +-
 plc4j/tools/scraper/pom.xml                        |  6 --
 .../triggeredscraper/TriggeredScraperImplTest.java |  7 +--
 .../triggerhandler/TriggerConfigurationTest.java   |  5 +-
 .../base/connection/SerialChannelFactoryTest.java  |  2 +-
 plc4j/transports/test/pom.xml                      |  6 --
 .../utils/rawsockets/attic/RawIpSocketTest.java    | 14 ++---
 .../rawsockets/netty/RawSocketChannelTest.java     |  7 ++-
 plc4j/utils/test-utils/pom.xml                     |  9 +--
 pom.xml                                            | 69 ++++++++++------------
 sandbox/code-gen/pom.xml                           | 17 +-----
 .../org/apache/plc4x/codegen/DFDLUtilTest.java     |  2 +-
 .../org/apache/plc4x/codegen/ModuleNodeTest.java   |  3 +-
 .../plc4x/codegen/ast/JavaGeneratorTest.java       |  9 +--
 .../plc4x/codegen/ast/PythonGeneratorTest.java     |  9 +--
 .../apache/plc4x/codegen/util/EnumFactoryTest.java |  3 +-
 .../apache/plc4x/codegen/util/PojoFactoryTest.java |  3 +-
 sandbox/test-java-amsads-driver/pom.xml            | 16 -----
 sandbox/test-java-df1-driver/pom.xml               | 16 -----
 sandbox/test-java-firmata-driver/pom.xml           | 15 -----
 80 files changed, 234 insertions(+), 352 deletions(-)

diff --git a/build-utils/protocol-base-mspec/pom.xml b/build-utils/protocol-base-mspec/pom.xml
index b8b0ee3..8e26ab2 100644
--- a/build-utils/protocol-base-mspec/pom.xml
+++ b/build-utils/protocol-base-mspec/pom.xml
@@ -68,22 +68,7 @@
     <!-- Testing -->
     <dependency>
       <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-params</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
+      <artifactId>junit-jupiter</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/PlcDriverManagerTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/PlcDriverManagerTest.java
index a2c3b9e..a1546a6 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/PlcDriverManagerTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/PlcDriverManagerTest.java
@@ -22,18 +22,19 @@ import org.apache.plc4x.java.api.authentication.PlcUsernamePasswordAuthenticatio
 import org.apache.plc4x.java.api.exceptions.PlcConnectionException;
 import org.apache.plc4x.java.api.exceptions.PlcException;
 import org.apache.plc4x.java.mock.MockPlcConnection;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.net.URLClassLoader;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsInstanceOf.instanceOf;
 import static org.hamcrest.core.IsNull.notNullValue;
 import static org.hamcrest.core.IsNull.nullValue;
-import static org.junit.Assert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class PlcDriverManagerTest {
 
@@ -71,9 +72,10 @@ public class PlcDriverManagerTest {
      *
      * @throws PlcConnectionException something went wrong
      */
-    @Test(expected = PlcConnectionException.class)
-    public void getNotExistingDriverTest() throws PlcConnectionException {
-        new PlcDriverManager().getConnection("non-existing-protocol://some-cool-url");
+    @Test
+    public void getNotExistingDriverTest() {
+        assertThrows(PlcConnectionException.class,
+            () -> new PlcDriverManager().getConnection("non-existing-protocol://some-cool-url"));
     }
 
     /**
@@ -81,9 +83,10 @@ public class PlcDriverManagerTest {
      *
      * @throws PlcConnectionException something went wrong
      */
-    @Test(expected = PlcConnectionException.class)
+    @Test
     public void getInvalidUriTest() throws PlcConnectionException {
-        new PlcDriverManager().getConnection("The quick brown fox jumps over the lazy dog");
+        assertThrows(PlcConnectionException.class,
+            () -> new PlcDriverManager().getConnection("The quick brown fox jumps over the lazy dog"));
     }
 
     /**
@@ -94,8 +97,8 @@ public class PlcDriverManagerTest {
      * @throws MalformedURLException something went wrong
      * @throws PlcConnectionException something went wrong
      */
-    @Test(expected = IllegalStateException.class)
-    public void getDuplicateDriver() throws MalformedURLException, PlcConnectionException {
+    @Test
+    public void getDuplicateDriver() throws MalformedURLException {
         // Save and replace the context classloader as we need to force the ServiceLoader to
         // use a different service file.
         ClassLoader originalClassloader = Thread.currentThread().getContextClassLoader();
@@ -104,7 +107,8 @@ public class PlcDriverManagerTest {
         ClassLoader fakeClassLoader = new URLClassLoader(urls, originalClassloader);
 
         // expect exception
-        new PlcDriverManager(fakeClassLoader).getConnection("api-mock://some-cool-url");
+        assertThrows(IllegalStateException.class,
+            () -> new PlcDriverManager(fakeClassLoader).getConnection("api-mock://some-cool-url"));
     }
 
 }
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/authentication/PlcUsernamePasswordAuthenticationTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/authentication/PlcUsernamePasswordAuthenticationTest.java
index 0e1e92c..2122afa 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/authentication/PlcUsernamePasswordAuthenticationTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/authentication/PlcUsernamePasswordAuthenticationTest.java
@@ -20,11 +20,12 @@ package org.apache.plc4x.java.api.authentication;
 
 
 import nl.jqno.equalsverifier.EqualsVerifier;
+import org.hamcrest.MatcherAssert;
 import org.hamcrest.Matchers;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertThat;
 
 public class PlcUsernamePasswordAuthenticationTest {
 
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/connection/PlcReaderTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/connection/PlcReaderTest.java
index cdfa6d1..730c730 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/connection/PlcReaderTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/connection/PlcReaderTest.java
@@ -21,7 +21,6 @@ package org.apache.plc4x.java.api.connection;
 import org.apache.plc4x.java.api.messages.PlcReadResponse;
 import org.apache.plc4x.java.api.model.PlcField;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
-import org.junit.Test;
 
 import java.util.Collections;
 import java.util.List;
@@ -30,8 +29,6 @@ import java.util.concurrent.ExecutionException;
 
 import static org.hamcrest.Matchers.equalTo;
 import static org.hamcrest.Matchers.instanceOf;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 
 public class PlcReaderTest {
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/connection/PlcWriterTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/connection/PlcWriterTest.java
index 3069ef0..424f44c 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/connection/PlcWriterTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/connection/PlcWriterTest.java
@@ -19,7 +19,6 @@
 package org.apache.plc4x.java.api.connection;
 
 import org.apache.plc4x.java.api.model.PlcField;
-import org.junit.Test;
 
 import java.util.Collections;
 import java.util.concurrent.CompletableFuture;
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/exceptions/PlcInvalidFieldExceptionTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/exceptions/PlcInvalidFieldExceptionTest.java
index 9041662..b5ca4de 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/exceptions/PlcInvalidFieldExceptionTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/exceptions/PlcInvalidFieldExceptionTest.java
@@ -24,7 +24,7 @@ import org.junit.jupiter.api.Test;
 import java.util.regex.Pattern;
 
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 class PlcInvalidFieldExceptionTest {
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcProprietaryRequestTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcProprietaryRequestTest.java
index 142ea07..e2a1ce5 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcProprietaryRequestTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcProprietaryRequestTest.java
@@ -18,12 +18,6 @@
  */
 package org.apache.plc4x.java.api.messages;
 
-import org.junit.Test;
-
-import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-
 public class PlcProprietaryRequestTest {
 
 /*    @Test
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcProprietaryResponseTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcProprietaryResponseTest.java
index 26a1ca6..0486d7b 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcProprietaryResponseTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcProprietaryResponseTest.java
@@ -19,11 +19,8 @@
 package org.apache.plc4x.java.api.messages;
 
 import org.hamcrest.core.IsEqual;
-import org.junit.Test;
 
 import static org.hamcrest.Matchers.equalTo;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
 
 public class PlcProprietaryResponseTest {
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcReadRequestTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcReadRequestTest.java
index 74ff01b..18aaea4 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcReadRequestTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcReadRequestTest.java
@@ -19,12 +19,9 @@
 package org.apache.plc4x.java.api.messages;
 
 import org.apache.plc4x.java.api.model.PlcField;
-import org.junit.Before;
-import org.junit.Test;
 
 import java.util.Collections;
 
-import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 
 public class PlcReadRequestTest {
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcReadResponseTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcReadResponseTest.java
index 5a17d91..278f235 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcReadResponseTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcReadResponseTest.java
@@ -18,8 +18,6 @@
  */
 package org.apache.plc4x.java.api.messages;
 
-import org.junit.Test;
-
 import java.util.Collections;
 import java.util.List;
 
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcRequestTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcRequestTest.java
index cb66e9e..cbe4794 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcRequestTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcRequestTest.java
@@ -18,18 +18,12 @@
  */
 package org.apache.plc4x.java.api.messages;
 
-import org.junit.Before;
-import org.junit.Test;
-
 import java.util.ArrayList;
 import java.util.Optional;
 
 import static org.hamcrest.collection.IsEmptyCollection.empty;
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 
 public class PlcRequestTest {
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionEventTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionEventTest.java
index c44794f..043668a 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionEventTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionEventTest.java
@@ -18,12 +18,9 @@
  */
 package org.apache.plc4x.java.api.messages;
 
-import org.junit.Test;
-
 import java.util.List;
 
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.*;
 import static org.mockito.Mockito.mock;
 
 public class PlcSubscriptionEventTest {
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionRequestTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionRequestTest.java
index 498faa2..2805bf4 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionRequestTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionRequestTest.java
@@ -18,8 +18,6 @@
  */
 package org.apache.plc4x.java.api.messages;
 
-import org.junit.Test;
-
 public class PlcSubscriptionRequestTest {
 
 /*    @Test
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionResponseTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionResponseTest.java
index 2ef0ceb..1d11454 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionResponseTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcSubscriptionResponseTest.java
@@ -18,8 +18,6 @@
  */
 package org.apache.plc4x.java.api.messages;
 
-import org.junit.Test;
-
 import java.util.List;
 
 import static org.mockito.Mockito.mock;
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcUnsubscriptionRequestTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcUnsubscriptionRequestTest.java
index 54f8e3c..643e3eb 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcUnsubscriptionRequestTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcUnsubscriptionRequestTest.java
@@ -18,15 +18,11 @@
  */
 package org.apache.plc4x.java.api.messages;
 
-import org.junit.Before;
-import org.junit.Test;
 
 import java.util.List;
 
 import static org.hamcrest.collection.IsEmptyCollection.empty;
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
 
 public class PlcUnsubscriptionRequestTest {
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcUnsubscriptionResponseTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcUnsubscriptionResponseTest.java
index d0b4aa1..6f05987 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcUnsubscriptionResponseTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcUnsubscriptionResponseTest.java
@@ -18,8 +18,6 @@
  */
 package org.apache.plc4x.java.api.messages;
 
-import org.junit.Test;
-
 public class PlcUnsubscriptionResponseTest {
 
 /*    @Test
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcWriteRequestTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcWriteRequestTest.java
index 28f5bfe..56eb00c 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcWriteRequestTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcWriteRequestTest.java
@@ -19,12 +19,9 @@
 package org.apache.plc4x.java.api.messages;
 
 import org.apache.plc4x.java.api.model.PlcField;
-import org.junit.Before;
-import org.junit.Test;
 
 import java.util.Collections;
 
-import static org.junit.Assert.fail;
 import static org.mockito.Mockito.mock;
 
 public class PlcWriteRequestTest {
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcWriteResponseTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcWriteResponseTest.java
index ea87c8f..be28fbf 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcWriteResponseTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/PlcWriteResponseTest.java
@@ -18,8 +18,6 @@
  */
 package org.apache.plc4x.java.api.messages;
 
-import org.junit.Test;
-
 import java.util.Collections;
 import java.util.List;
 
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadRequestTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadRequestTest.java
index faa4cca..e4adf7c 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadRequestTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcReadRequestTest.java
@@ -20,13 +20,10 @@ package org.apache.plc4x.java.api.messages.specific;
 
 import org.apache.plc4x.java.api.messages.PlcReadRequest;
 import org.apache.plc4x.java.api.model.PlcField;
-import org.junit.Before;
-import org.junit.Test;
 
 import java.util.Collections;
 
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteRequestTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteRequestTest.java
index af8d390..5a2c4f4 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteRequestTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/messages/specific/TypeSafePlcWriteRequestTest.java
@@ -20,13 +20,10 @@ package org.apache.plc4x.java.api.messages.specific;
 
 import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.api.model.PlcField;
-import org.junit.Before;
-import org.junit.Test;
 
 import java.util.Collections;
 
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcClientDatatypeTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcClientDatatypeTest.java
index 4de5341..62268f8 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcClientDatatypeTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcClientDatatypeTest.java
@@ -22,8 +22,8 @@ package org.apache.plc4x.java.api.types;
 
 import org.junit.jupiter.api.Test;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsNull.notNullValue;
-import static org.junit.Assert.assertThat;
 
 
 class PlcClientDatatypeTest {
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcResponseCodeTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcResponseCodeTest.java
index 65cd8c1..dba62fd 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcResponseCodeTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcResponseCodeTest.java
@@ -21,8 +21,8 @@ package org.apache.plc4x.java.api.types;
 
 import org.junit.jupiter.api.Test;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsNull.notNullValue;
-import static org.junit.Assert.assertThat;
 
 class PlcResponseCodeTest {
 
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcSubscriptionTypeTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcSubscriptionTypeTest.java
index 88d9f2d..5a60c78 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcSubscriptionTypeTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/types/PlcSubscriptionTypeTest.java
@@ -22,7 +22,7 @@ package org.apache.plc4x.java.api.types;
 import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.core.IsNull.notNullValue;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 class PlcSubscriptionTypeTest {
 
diff --git a/plc4j/api/src/test/java/org/apache/plc4x/java/api/value/PlcValuesTest.java b/plc4j/api/src/test/java/org/apache/plc4x/java/api/value/PlcValuesTest.java
index 1d2355a..1d202e9 100644
--- a/plc4j/api/src/test/java/org/apache/plc4x/java/api/value/PlcValuesTest.java
+++ b/plc4j/api/src/test/java/org/apache/plc4x/java/api/value/PlcValuesTest.java
@@ -19,6 +19,7 @@
 
 package org.apache.plc4x.java.api.value;
 
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
 
@@ -26,8 +27,6 @@ import java.lang.reflect.Method;
 import java.util.Arrays;
 import java.util.List;
 
-import static org.junit.Assert.assertNotNull;
-
 class PlcValuesTest {
 
     @ParameterizedTest
@@ -36,7 +35,7 @@ class PlcValuesTest {
         Method declaredMethod = PlcValues.class.getDeclaredMethod("of", clazz);
         for (Object value : values) {
             Object invoke = declaredMethod.invoke(null, value);
-            assertNotNull(invoke);
+            Assertions.assertNotNull(invoke);
         }
     }
 
diff --git a/plc4j/drivers/mock/pom.xml b/plc4j/drivers/mock/pom.xml
index 1ddb081..5659773 100644
--- a/plc4j/drivers/mock/pom.xml
+++ b/plc4j/drivers/mock/pom.xml
@@ -52,8 +52,14 @@
       <artifactId>commons-lang3</artifactId>
     </dependency>
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <!-- This is intentional as we are using this in the compile code -->
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest</artifactId>
       <!-- This is intentional as we are using this in the compile code -->
       <scope>compile</scope>
     </dependency>
diff --git a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/connection/tcp/TcpHexDumper.java b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/connection/tcp/TcpHexDumper.java
index 0be77df..4181d6e 100644
--- a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/connection/tcp/TcpHexDumper.java
+++ b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/connection/tcp/TcpHexDumper.java
@@ -21,7 +21,6 @@ package org.apache.plc4x.java.mock.connection.tcp;
 import org.apache.commons.io.HexDump;
 import org.apache.commons.io.IOUtils;
 import org.apache.plc4x.java.api.exceptions.PlcRuntimeException;
-import org.junit.rules.ExternalResource;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -35,7 +34,7 @@ import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.TimeUnit;
 
-public class TcpHexDumper extends ExternalResource implements Closeable {
+public class TcpHexDumper implements Closeable {
 
     private static final Logger logger = LoggerFactory.getLogger(TcpHexDumper.class);
 
@@ -109,7 +108,6 @@ public class TcpHexDumper extends ExternalResource implements Closeable {
         logger.info("Stopped");
     }
 
-    @Override
     public void after() {
         try {
             stop(true);
@@ -121,7 +119,6 @@ public class TcpHexDumper extends ExternalResource implements Closeable {
         }
     }
 
-    @Override
     public void before() throws Throwable {
         init(portToUse);
     }
diff --git a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/protocol/Plc4XSupportedDataTypes.java b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/protocol/Plc4XSupportedDataTypes.java
index c7ed153..fd6523e 100644
--- a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/protocol/Plc4XSupportedDataTypes.java
+++ b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/protocol/Plc4XSupportedDataTypes.java
@@ -37,7 +37,7 @@ import java.util.function.Function;
 import java.util.stream.Stream;
 
 import static org.hamcrest.Matchers.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class Plc4XSupportedDataTypes {
 
diff --git a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/util/Assert.java b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/util/Assert.java
index de32c1d..dbd8dfb 100644
--- a/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/util/Assert.java
+++ b/plc4j/drivers/mock/src/main/java/org/apache/plc4x/java/mock/util/Assert.java
@@ -29,7 +29,7 @@ import java.io.IOException;
 
 import static java.lang.Integer.toHexString;
 import static org.apache.commons.lang3.StringUtils.leftPad;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class Assert {
 
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
index 02eee37..c917a54 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/OpcuaPlcDriverTest.java
@@ -24,7 +24,6 @@ import org.apache.plc4x.java.api.messages.PlcReadResponse;
 import org.apache.plc4x.java.api.types.PlcResponseCode;
 import org.apache.plc4x.java.opcua.connection.OpcuaTcpPlcConnection;
 import org.eclipse.milo.examples.server.ExampleServer;
-import org.junit.Assert;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
@@ -32,6 +31,7 @@ import org.junit.jupiter.api.Test;
 import static org.apache.plc4x.java.opcua.OpcuaPlcDriver.INET_ADDRESS_PATTERN;
 import static org.apache.plc4x.java.opcua.OpcuaPlcDriver.OPCUA_URI_PATTERN;
 import static org.apache.plc4x.java.opcua.UtilsTest.assertMatching;
+import static org.assertj.core.api.Assertions.fail;
 
 /**
  */
@@ -136,10 +136,8 @@ public class OpcuaPlcDriverTest {
 
             opcuaConnection.close();
             assert !opcuaConnection.isConnected();
-
-
         } catch (Exception e) {
-            Assert.fail("Exception during readVariables Test EXCEPTION: " + e.getMessage());
+            fail("Exception during readVariables Test EXCEPTION: " + e.getMessage());
         }
     }
 
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/UtilsTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/UtilsTest.java
index 6f1b268..a84f308 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/UtilsTest.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/UtilsTest.java
@@ -18,9 +18,10 @@
 */
 package org.apache.plc4x.java.opcua;
 
+
 import java.util.regex.Pattern;
 
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  */
diff --git a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnectionTest.java b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnectionTest.java
index 5e5006a..ac8468c 100644
--- a/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnectionTest.java
+++ b/plc4j/drivers/opcua/src/test/java/org/apache/plc4x/java/opcua/connection/OpcuaTcpPlcConnectionTest.java
@@ -18,15 +18,15 @@
 */
 package org.apache.plc4x.java.opcua.connection;
 
-import org.junit.Test;
 import org.junit.jupiter.api.AfterEach;
 import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.net.InetAddress;
 import java.net.UnknownHostException;
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
 
 /**
  */
diff --git a/plc4j/drivers/s7/pom.xml b/plc4j/drivers/s7/pom.xml
index fa30030..c6ce6f3 100644
--- a/plc4j/drivers/s7/pom.xml
+++ b/plc4j/drivers/s7/pom.xml
@@ -133,11 +133,6 @@
       <!-- Scope is 'provided' as this way it's not shipped with the driver -->
       <scope>provided</scope>
     </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
 
 </project>
diff --git a/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/SimulatedDeviceTest.java b/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/SimulatedDeviceTest.java
index 7b6b28c..a3262d5 100644
--- a/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/SimulatedDeviceTest.java
+++ b/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/connection/SimulatedDeviceTest.java
@@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test;
 
 import java.util.Optional;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class SimulatedDeviceTest {
 
diff --git a/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/field/SimulatedFieldTest.java b/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/field/SimulatedFieldTest.java
index 3a69eb2..dc71eb0 100644
--- a/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/field/SimulatedFieldTest.java
+++ b/plc4j/drivers/simulated/src/test/java/org/apache/plc4x/java/simulated/field/SimulatedFieldTest.java
@@ -25,7 +25,7 @@ import org.apache.plc4x.java.simulated.types.SimulatedFieldType;
 import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class SimulatedFieldTest {
diff --git a/plc4j/integrations/apache-camel/pom.xml b/plc4j/integrations/apache-camel/pom.xml
index 7cc9f4e..4aaf0e7 100644
--- a/plc4j/integrations/apache-camel/pom.xml
+++ b/plc4j/integrations/apache-camel/pom.xml
@@ -33,7 +33,7 @@
   <description>Integration module for integrating PLC4X into Apache Camel.</description>
 
   <properties>
-    <camel.version>2.24.2</camel.version>
+    <camel.version>3.1.0</camel.version>
   </properties>
 
   <dependencies>
@@ -45,8 +45,22 @@
 
     <dependency>
       <groupId>org.apache.camel</groupId>
-      <artifactId>camel-core</artifactId>
-      <!-- TODO: version temporary defined due to PLC4X-22-->
+      <artifactId>camel-api</artifactId>
+      <version>${camel.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-core-engine</artifactId>
+      <version>${camel.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-mock</artifactId>
+      <version>${camel.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-support</artifactId>
       <version>${camel.version}</version>
     </dependency>
 
@@ -76,7 +90,14 @@
     <!-- Testing -->
     <dependency>
       <groupId>org.apache.camel</groupId>
-      <artifactId>camel-test</artifactId>
+      <artifactId>camel-test-junit5</artifactId>
+      <!-- TODO: version temporary defined due to PLC4X-22-->
+      <version>${camel.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.camel</groupId>
+      <artifactId>camel-main</artifactId>
       <!-- TODO: version temporary defined due to PLC4X-22-->
       <version>${camel.version}</version>
       <scope>test</scope>
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
index 276cbc4..71a252d 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XComponent.java
@@ -19,7 +19,7 @@ under the License.
 package org.apache.plc4x.camel;
 
 import org.apache.camel.Endpoint;
-import org.apache.camel.impl.DefaultComponent;
+import org.apache.camel.support.DefaultComponent;
 
 import java.util.Map;
 
@@ -37,4 +37,5 @@ public class Plc4XComponent extends DefaultComponent {
         Plc4XEndpoint plc4XEndpoint = (Plc4XEndpoint) endpoint;
         plc4XEndpoint.setDriver(remaining.split(":")[0]);
     }
+
 }
\ No newline at end of file
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
index 91bf0f0..b9414cd 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XConsumer.java
@@ -20,9 +20,9 @@ package org.apache.plc4x.camel;
 
 import org.apache.camel.*;
 import org.apache.camel.spi.ExceptionHandler;
+import org.apache.camel.support.AsyncProcessorConverterHelper;
 import org.apache.camel.support.LoggingExceptionHandler;
-import org.apache.camel.support.ServiceSupport;
-import org.apache.camel.util.AsyncProcessorConverterHelper;
+import org.apache.camel.support.service.ServiceSupport;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcException;
 import org.apache.plc4x.java.api.messages.*;
@@ -122,4 +122,9 @@ public class Plc4XConsumer extends ServiceSupport implements Consumer, java.util
         return collection;
     }
 
+    @Override
+    public Processor getProcessor() {
+        // TODO: No idea what to do here ...
+        return null;
+    }
 }
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
index 9a9cec9..1d2e4dc 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XEndpoint.java
@@ -19,11 +19,11 @@ under the License.
 package org.apache.plc4x.camel;
 
 import org.apache.camel.*;
-import org.apache.camel.impl.DefaultEndpoint;
 import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
+import org.apache.camel.support.DefaultEndpoint;
 import org.apache.plc4x.java.PlcDriverManager;
 
 import java.util.Objects;
@@ -35,7 +35,7 @@ public class Plc4XEndpoint extends DefaultEndpoint {
      * The name of the PLC4X driver
      */
     @UriPath(label = "common")
-    @Metadata(required = "true")
+    @Metadata(required = true)
     @SuppressWarnings("unused")
     private String driver;
 
@@ -43,7 +43,7 @@ public class Plc4XEndpoint extends DefaultEndpoint {
      * The address for the PLC4X driver
      */
     @UriParam
-    @Metadata(required = "false")
+    @Metadata(required = false)
     @SuppressWarnings("unused")
     private String address;
 
@@ -51,7 +51,7 @@ public class Plc4XEndpoint extends DefaultEndpoint {
      * TODO: document me
      */
     @UriParam
-    @Metadata(required = "false")
+    @Metadata(required = false)
     @SuppressWarnings("unused")
     private Class dataType;
 
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
index 67c4c36..84e54bb 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XPollingConsumer.java
@@ -21,9 +21,10 @@ package org.apache.plc4x.camel;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.PollingConsumer;
+import org.apache.camel.Processor;
 import org.apache.camel.spi.ExceptionHandler;
 import org.apache.camel.support.LoggingExceptionHandler;
-import org.apache.camel.support.ServiceSupport;
+import org.apache.camel.support.service.ServiceSupport;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcException;
 import org.apache.plc4x.java.api.messages.PlcReadRequest;
@@ -138,4 +139,10 @@ public class Plc4XPollingConsumer extends ServiceSupport implements PollingConsu
         return collection;
     }
 
+    @Override
+    public Processor getProcessor() {
+        // TODO: No idea what to do here ...
+        return null;
+    }
+
 }
diff --git a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
index d9f7077..aa099f6 100644
--- a/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
+++ b/plc4j/integrations/apache-camel/src/main/java/org/apache/plc4x/camel/Plc4XProducer.java
@@ -21,17 +21,22 @@ package org.apache.plc4x.camel;
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.Exchange;
 import org.apache.camel.Message;
-import org.apache.camel.impl.DefaultAsyncProducer;
+import org.apache.camel.support.DefaultAsyncProducer;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.exceptions.PlcException;
 import org.apache.plc4x.java.api.messages.PlcWriteRequest;
 import org.apache.plc4x.java.api.messages.PlcWriteResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.util.List;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.atomic.AtomicInteger;
 
 public class Plc4XProducer extends DefaultAsyncProducer {
+
+    private static final Logger LOG = LoggerFactory.getLogger(Plc4XProducer.class);
+
     private PlcConnection plcConnection;
     private AtomicInteger openRequests;
 
@@ -63,7 +68,7 @@ public class Plc4XProducer extends DefaultAsyncProducer {
         CompletableFuture<? extends PlcWriteResponse> completableFuture = builder.build().execute();
         int currentlyOpenRequests = openRequests.incrementAndGet();
         try {
-            log.debug("Currently open requests including {}:{}", exchange, currentlyOpenRequests);
+            LOG.debug("Currently open requests including {}:{}", exchange, currentlyOpenRequests);
             Object plcWriteResponse = completableFuture.get();
             if (exchange.getPattern().isOutCapable()) {
                 Message out = exchange.getOut();
@@ -74,7 +79,7 @@ public class Plc4XProducer extends DefaultAsyncProducer {
             }
         } finally {
             int openRequestsAfterFinish = openRequests.decrementAndGet();
-            log.trace("Open Requests after {}:{}", exchange, openRequestsAfterFinish);
+            LOG.trace("Open Requests after {}:{}", exchange, openRequestsAfterFinish);
         }
     }
 
@@ -95,14 +100,14 @@ public class Plc4XProducer extends DefaultAsyncProducer {
     @Override
     protected void doStop() throws Exception {
         int openRequestsAtStop = openRequests.get();
-        log.debug("Stopping with {} open requests", openRequestsAtStop);
+        LOG.debug("Stopping with {} open requests", openRequestsAtStop);
         if (openRequestsAtStop > 0) {
-            log.warn("There are still {} open requests", openRequestsAtStop);
+            LOG.warn("There are still {} open requests", openRequestsAtStop);
         }
         try {
             plcConnection.close();
         } catch (Exception e) {
-            log.warn("Could not close {}", plcConnection, e);
+            LOG.warn("Could not close {}", plcConnection, e);
         }
         super.doStop();
     }
diff --git a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ConstantsTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
index b13c074..611873e 100644
--- a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
+++ b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ConstantsTest.java
@@ -18,20 +18,25 @@ under the License.
 */
 package org.apache.plc4x.camel;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.lang.reflect.Constructor;
 
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 public class ConstantsTest {
 
-    @Test(expected = IllegalStateException.class)
-    public void testConstantsNotInstanceable() throws Throwable {
-        try {
-            Constructor<Constants> constructor = Constants.class.getDeclaredConstructor();
-            constructor.setAccessible(true);
-            constructor.newInstance();
-        } catch (Exception e) {
-            throw e.getCause();
-        }
+    @Test
+    public void testConstantsNotInstanceable() {
+        assertThrows(IllegalStateException.class, () -> {
+            try {
+                Constructor<Constants> constructor = Constants.class.getDeclaredConstructor();
+                constructor.setAccessible(true);
+                constructor.newInstance();
+            } catch (Exception e) {
+                throw e.getCause();
+            }
+        });
     }
+
 }
\ No newline at end of file
diff --git a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
index 9eff617..bde19e6 100644
--- a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
+++ b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/ManualTest.java
@@ -19,9 +19,9 @@
 package org.apache.plc4x.camel;
 
 import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.main.BaseMainSupport;
 import org.apache.camel.main.Main;
 import org.apache.camel.main.MainListenerSupport;
-import org.apache.camel.main.MainSupport;
 
 import java.util.Date;
 
@@ -69,13 +69,14 @@ public class ManualTest {
     public static class Events extends MainListenerSupport {
 
         @Override
-        public void afterStart(MainSupport main) {
+        public void afterStart(BaseMainSupport main) {
             System.out.println("MainExample with Camel is now started!");
         }
 
         @Override
-        public void beforeStop(MainSupport main) {
+        public void beforeStop(BaseMainSupport main) {
             System.out.println("MainExample with Camel is now being stopped!");
         }
+
     }
 }
diff --git a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
index 4030c75..d7da472 100644
--- a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
+++ b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XComponentTest.java
@@ -20,9 +20,9 @@ package org.apache.plc4x.camel;
 
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.test.junit4.CamelTestSupport;
+import org.apache.camel.test.junit5.CamelTestSupport;
 import org.apache.plc4x.java.api.model.PlcField;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.concurrent.TimeUnit;
diff --git a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
index 4ec5c8a..60e594d 100644
--- a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
+++ b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XConsumerTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.plc4x.camel;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 // TODO: implement me
 public class Plc4XConsumerTest {
diff --git a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
index b849e2c..cf3d03d 100644
--- a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
+++ b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XEndpointTest.java
@@ -20,19 +20,19 @@ package org.apache.plc4x.camel;
 
 import org.apache.camel.Component;
 import org.apache.camel.Processor;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.core.Is.is;
 import static org.hamcrest.core.IsNull.notNullValue;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.mock;
 
 public class Plc4XEndpointTest {
 
     Plc4XEndpoint SUT;
 
-    @Before
+    @BeforeEach
     public void setUp() {
         SUT = new Plc4XEndpoint("plc4x:mock:10.10.10.1/1/1", mock(Component.class));
     }
diff --git a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java
index 10362a8..68f7b51 100644
--- a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java
+++ b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XPollingConsumerTest.java
@@ -18,7 +18,7 @@
  */
 package org.apache.plc4x.camel;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 //TODO: implement me
 public class Plc4XPollingConsumerTest {
diff --git a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
index f078c09..636ae9d 100644
--- a/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
+++ b/plc4j/integrations/apache-camel/src/test/java/org/apache/plc4x/camel/Plc4XProducerTest.java
@@ -23,8 +23,8 @@ import org.apache.camel.ExchangePattern;
 import org.apache.plc4x.java.PlcDriverManager;
 import org.apache.plc4x.java.api.PlcConnection;
 import org.apache.plc4x.java.api.messages.PlcWriteRequest;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.lang.reflect.Field;
 import java.util.Arrays;
@@ -39,7 +39,7 @@ public class Plc4XProducerTest {
 
     private Exchange testExchange;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         Plc4XEndpoint endpointMock = mock(Plc4XEndpoint.class, RETURNS_DEEP_STUBS);
         when(endpointMock.getEndpointUri()).thenReturn("plc4x:mock:10.10.10.1/1/1");
@@ -66,7 +66,7 @@ public class Plc4XProducerTest {
         SUT.process(testExchange);
         when(testExchange.getPattern()).thenReturn(ExchangePattern.InOut);
         SUT.process(testExchange);
-        when(testExchange.getPattern()).thenReturn(ExchangePattern.OutOnly);
+        when(testExchange.getPattern()).thenReturn(ExchangePattern.InOptionalOut);
         SUT.process(testExchange);
         when(testExchange.getIn().getBody()).thenReturn(Arrays.asList("test","test"));
         when(testExchange.getIn().getBody(eq(List.class))).thenReturn(Arrays.asList("test","test"));
@@ -83,7 +83,7 @@ public class Plc4XProducerTest {
         when(testExchange.getPattern()).thenReturn(ExchangePattern.InOut);
         SUT.process(testExchange, doneSync -> {
         });
-        when(testExchange.getPattern()).thenReturn(ExchangePattern.OutOnly);
+        when(testExchange.getPattern()).thenReturn(ExchangePattern.InOptionalOut);
         SUT.process(testExchange, doneSync -> {
         });
     }
diff --git a/plc4j/integrations/apache-edgent/src/test/java.sav/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java b/plc4j/integrations/apache-edgent/src/test/java.sav/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
index 2cab25f..951d2f3 100644
--- a/plc4j/integrations/apache-edgent/src/test/java.sav/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
+++ b/plc4j/integrations/apache-edgent/src/test/java.sav/org/apache/plc4x/edgent/PlcConnectionAdapterTest.java
@@ -34,8 +34,6 @@ import org.apache.plc4x.java.mock.connection.MockConnection;
 import org.apache.plc4x.java.mock.field.MockField;
 import org.apache.plc4x.test.FastTests;
 import org.hamcrest.core.IsInstanceOf;
-import org.junit.Test;
-import org.junit.experimental.categories.Category;
 
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
@@ -45,7 +43,6 @@ import static org.hamcrest.core.IsEqual.equalTo;
 import static org.hamcrest.core.IsNot.not;
 import static org.hamcrest.core.IsNull.notNullValue;
 import static org.hamcrest.core.IsSame.sameInstance;
-import static org.junit.Assert.assertThat;
 
 public class PlcConnectionAdapterTest {
 
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSinkProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSinkProcessorTest.java
index 25eecbc..b7f112b 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSinkProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSinkProcessorTest.java
@@ -19,15 +19,15 @@ package org.apache.plc4x.processors.plc4x4nifi;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.apache.plc4x.nifi.Plc4xSinkProcessor;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 public class Plc4xSinkProcessorTest {
 
     private TestRunner testRunner;
 
-    @Before
+    @BeforeEach
     public void init() {
         testRunner = TestRunners.newTestRunner(Plc4xSinkProcessor.class);
     }
diff --git a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSourceProcessorTest.java b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSourceProcessorTest.java
index 06a7bda..00ce027 100644
--- a/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSourceProcessorTest.java
+++ b/plc4j/integrations/apache-nifi/nifi-plc4x-processors/src/test/java/org/apache/plc4x/processors/plc4x4nifi/Plc4xSourceProcessorTest.java
@@ -21,15 +21,15 @@ package org.apache.plc4x.processors.plc4x4nifi;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.apache.plc4x.nifi.Plc4xSourceProcessor;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 public class Plc4xSourceProcessorTest {
 
     private TestRunner testRunner;
 
-    @Before
+    @BeforeEach
     public void init() {
         testRunner = TestRunners.newTestRunner(Plc4xSourceProcessor.class);
     }
diff --git a/plc4j/karaf-features/karaf-itest/src/test/java/org/apache/plc4x/karaf/FeatureIT.java b/plc4j/karaf-features/karaf-itest/src/test/java/org/apache/plc4x/karaf/FeatureIT.java
index 92d79a8..d02505a 100644
--- a/plc4j/karaf-features/karaf-itest/src/test/java/org/apache/plc4x/karaf/FeatureIT.java
+++ b/plc4j/karaf-features/karaf-itest/src/test/java/org/apache/plc4x/karaf/FeatureIT.java
@@ -28,8 +28,8 @@ import org.osgi.framework.Bundle;
 
 import java.util.stream.Stream;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.ops4j.pax.exam.CoreOptions.maven;
 import static org.ops4j.pax.exam.karaf.options.KarafDistributionOption.logLevel;
 
diff --git a/plc4j/pom.xml b/plc4j/pom.xml
index 95b4377..1c0556b 100644
--- a/plc4j/pom.xml
+++ b/plc4j/pom.xml
@@ -247,11 +247,10 @@
               <failOnWarning>true</failOnWarning>
               <ignoredDependencies>
                 <ignoredDependency>org.assertj:assertj-core</ignoredDependency>
-                <ignoredDependency>junit:junit</ignoredDependency>
+                <ignoredDependency>org.junit.jupiter:junit-jupiter</ignoredDependency>
                 <ignoredDependency>org.junit.jupiter:junit-jupiter-api</ignoredDependency>
                 <ignoredDependency>org.junit.jupiter:junit-jupiter-params</ignoredDependency>
-                <ignoredDependency>org.junit.jupiter:junit-jupiter-engine</ignoredDependency>
-                <ignoredDependency>org.junit.vintage:junit-vintage-engine</ignoredDependency>
+                <ignoredDependency>org.hamcrest:hamcrest</ignoredDependency>
                 <ignoredDependency>org.hamcrest:hamcrest-core</ignoredDependency>
                 <ignoredDependency>org.hamcrest:hamcrest-library</ignoredDependency>
                 <ignoredDependency>org.mockito:mockito-core</ignoredDependency>
@@ -281,40 +280,33 @@
       <scope>test</scope>
     </dependency>
 
-    <!-- JUnit 4 Support -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
     <!-- JUnit 5 Support -->
     <dependency>
       <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
+      <artifactId>junit-jupiter</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-params</artifactId>
+      <artifactId>junit-jupiter-api</artifactId>
       <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-engine</artifactId>
+      <artifactId>junit-jupiter-params</artifactId>
       <scope>test</scope>
     </dependency>
+
     <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest-core</artifactId>
       <scope>test</scope>
     </dependency>
-
     <dependency>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest-library</artifactId>
diff --git a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/internal/DefaultSendRequestContextTest.java b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/internal/DefaultSendRequestContextTest.java
index dea7957..af500b4 100644
--- a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/internal/DefaultSendRequestContextTest.java
+++ b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/internal/DefaultSendRequestContextTest.java
@@ -31,7 +31,7 @@ import java.time.Duration;
 import java.util.function.Consumer;
 
 import static org.hamcrest.Matchers.*;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.verify;
diff --git a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManagerTest.java b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManagerTest.java
index 25629fa..77ea488 100644
--- a/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManagerTest.java
+++ b/plc4j/spi/src/test/java/org/apache/plc4x/java/spi/optimizer/RequestTransactionManagerTest.java
@@ -20,17 +20,16 @@
 package org.apache.plc4x.java.spi.optimizer;
 
 import org.apache.plc4x.java.spi.transaction.RequestTransactionManager;
-import org.junit.Ignore;
-import org.junit.Test;
 import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ExecutionException;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class RequestTransactionManagerTest {
 
@@ -126,7 +125,6 @@ public class RequestTransactionManagerTest {
     }
 
     @Test
-    @Ignore("This test is randomly failing on Jenkins")
     @Disabled("This test is randomly failing on Jenkins")
     public void abortTransactionFromExternally() throws ExecutionException, InterruptedException {
         CompletableFuture<Void> sendRequest = new CompletableFuture<>();
diff --git a/plc4j/tools/opm/pom.xml b/plc4j/tools/opm/pom.xml
index 8e53bcb..87d6767 100644
--- a/plc4j/tools/opm/pom.xml
+++ b/plc4j/tools/opm/pom.xml
@@ -61,11 +61,6 @@
 
     <!--Testing-->
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
       <scope>test</scope>
diff --git a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java
index 580aa8e..713027a 100644
--- a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java
+++ b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/ConnectedEntityTest.java
@@ -25,6 +25,7 @@ import org.apache.plc4x.java.api.types.PlcResponseCode;
 import org.apache.plc4x.java.api.value.PlcString;
 import org.apache.plc4x.java.mock.connection.MockConnection;
 import org.apache.plc4x.java.mock.connection.MockDevice;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -33,7 +34,7 @@ import org.mockito.junit.jupiter.MockitoExtension;
 
 import java.util.stream.IntStream;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.*;
 
diff --git a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/OpmUtilsTest.java b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/OpmUtilsTest.java
index 1753f0b..8d8b5eb 100644
--- a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/OpmUtilsTest.java
+++ b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/OpmUtilsTest.java
@@ -22,7 +22,7 @@ package org.apache.plc4x.java.opm;
 import org.assertj.core.api.WithAssertions;
 import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class OpmUtilsTest implements WithAssertions {
 
diff --git a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityInterceptorTest.java b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityInterceptorTest.java
index 04b32e3..390f7f4 100644
--- a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityInterceptorTest.java
+++ b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityInterceptorTest.java
@@ -28,6 +28,7 @@ import org.apache.plc4x.java.mock.connection.MockConnection;
 import org.apache.plc4x.java.mock.connection.MockDevice;
 import org.apache.plc4x.java.spi.messages.DefaultPlcReadResponse;
 import org.assertj.core.api.WithAssertions;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
@@ -49,7 +50,7 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicBoolean;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.Mockito.mock;
diff --git a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerComplexTest.java b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerComplexTest.java
index 4ca774b..52f767a 100644
--- a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerComplexTest.java
+++ b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerComplexTest.java
@@ -38,7 +38,7 @@ import org.apache.plc4x.java.spi.messages.InternalPlcWriteRequest;
 import org.apache.plc4x.java.spi.messages.PlcReader;
 import org.apache.plc4x.java.spi.messages.PlcWriter;
 import org.assertj.core.api.WithAssertions;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentMatchers;
@@ -57,9 +57,7 @@ import java.util.concurrent.CompletableFuture;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.when;
 
 
@@ -104,7 +102,7 @@ public class PlcEntityManagerComplexTest implements WithAssertions {
 
         ConnectedEntity connect = manager.read(ConnectedEntity.class, "s7://localhost:5555/0/0");
 
-        Assert.assertNotNull(connect);
+        assertNotNull(connect);
 
         // Call different method
         String s = connect.toString();
@@ -119,7 +117,7 @@ public class PlcEntityManagerComplexTest implements WithAssertions {
 
         ConnectedEntity connect = manager.connect(ConnectedEntity.class, "s7://localhost:5555/0/0");
 
-        Assert.assertNotNull(connect);
+        assertNotNull(connect);
 
         // Call different method
         String s = connect.toString();
@@ -160,7 +158,7 @@ public class PlcEntityManagerComplexTest implements WithAssertions {
 
         ConnectedEntity connect = manager.connect(ConnectedEntity.class, "s7://localhost:5555/0/0");
 
-        Assert.assertNotNull(connect);
+        assertNotNull(connect);
 
         // Call getter
         assertEquals(1, connect.getIntVar());
diff --git a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
index 5e65d7c..eb09956 100644
--- a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
+++ b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/PlcEntityManagerTest.java
@@ -28,6 +28,7 @@ import org.apache.plc4x.java.api.value.PlcString;
 import org.apache.plc4x.java.mock.connection.MockConnection;
 import org.apache.plc4x.java.mock.connection.MockDevice;
 import org.assertj.core.api.WithAssertions;
+import org.junit.jupiter.api.Assertions;
 import org.junit.jupiter.api.Nested;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
@@ -36,8 +37,8 @@ import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.junit.jupiter.MockitoExtension;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.*;
diff --git a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/SimpleAliasRegistryTest.java b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/SimpleAliasRegistryTest.java
index 5e64d58..967f314 100644
--- a/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/SimpleAliasRegistryTest.java
+++ b/plc4j/tools/opm/src/test/java/org/apache/plc4x/java/opm/SimpleAliasRegistryTest.java
@@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test;
 import java.util.HashMap;
 import java.util.NoSuchElementException;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class SimpleAliasRegistryTest implements WithAssertions {
 
diff --git a/plc4j/tools/scraper/pom.xml b/plc4j/tools/scraper/pom.xml
index 2beeef4..7ee7e5a 100644
--- a/plc4j/tools/scraper/pom.xml
+++ b/plc4j/tools/scraper/pom.xml
@@ -95,12 +95,6 @@
       <scope>test</scope>
     </dependency>
 
-    <dependency>
-      <groupId>org.apache.plc4x</groupId>
-      <artifactId>plc4j-utils-test-utils</artifactId>
-      <version>0.7.0-SNAPSHOT</version>
-      <scope>test</scope>
-    </dependency>
     <!--dependency>
       <groupId>org.apache.plc4x</groupId>
       <artifactId>plc4j-driver-modbus</artifactId>
diff --git a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java
index a9032eb..69421b6 100644
--- a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java
+++ b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/TriggeredScraperImplTest.java
@@ -31,8 +31,7 @@ import org.apache.plc4x.java.scraper.config.ScraperConfigurationClassicImpl;
 import org.apache.plc4x.java.scraper.exception.ScraperException;
 import org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler.collector.TriggerCollector;
 import org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler.collector.TriggerCollectorImpl;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
 import org.mockito.Mockito;
 import org.mockito.invocation.InvocationOnMock;
 import org.mockito.stubbing.Answer;
@@ -42,9 +41,7 @@ import org.slf4j.LoggerFactory;
 import java.io.IOException;
 import java.util.Random;
 
-import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 /**
@@ -59,7 +56,7 @@ public class TriggeredScraperImplTest {
     private MockDevice mockDevice1;
     private MockDevice mockDevice2;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         driverManager = new PlcDriverManager();
         MockConnection mock1Connection = ((MockConnection) driverManager.getConnection("mock:1"));
diff --git a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerConfigurationTest.java b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerConfigurationTest.java
index 722899e..0c014d5 100644
--- a/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerConfigurationTest.java
+++ b/plc4j/tools/scraper/src/test/java/org/apache/plc4x/java/scraper/triggeredscraper/triggerhandler/TriggerConfigurationTest.java
@@ -21,8 +21,6 @@ package org.apache.plc4x.java.scraper.triggeredscraper.triggerhandler;
 
 import org.apache.plc4x.java.scraper.exception.ScraperConfigurationException;
 import org.apache.plc4x.java.scraper.triggeredscraper.TriggeredScrapeJobImpl;
-import org.apache.plc4x.test.FastTests;
-import org.junit.experimental.categories.Category;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.Arguments;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -32,10 +30,10 @@ import org.slf4j.LoggerFactory;
 
 import java.util.stream.Stream;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.Matchers.nullValue;
 import static org.hamcrest.core.IsEqual.equalTo;
 import static org.hamcrest.core.IsNull.notNullValue;
-import static org.junit.Assert.assertThat;
 
 /**
  * testing valid and invalid triggerConfigStrings
@@ -89,7 +87,6 @@ class TriggerConfigurationTest {
     }
 
     @ParameterizedTest
-    @Category(FastTests.class)
     @MethodSource("validTriggerPattern")
     void testValidFieldQueryParsing(String triggerConfig,
                                     TriggerConfiguration.TriggerType triggerType,
diff --git a/plc4j/transports/serial/src/test/java/org/apache/plc4x/java/base/connection/SerialChannelFactoryTest.java b/plc4j/transports/serial/src/test/java/org/apache/plc4x/java/base/connection/SerialChannelFactoryTest.java
index 967c5b3..01bfb9e 100644
--- a/plc4j/transports/serial/src/test/java/org/apache/plc4x/java/base/connection/SerialChannelFactoryTest.java
+++ b/plc4j/transports/serial/src/test/java/org/apache/plc4x/java/base/connection/SerialChannelFactoryTest.java
@@ -30,7 +30,7 @@ import org.apache.plc4x.java.transport.serial.SerialChannel;
 import org.apache.plc4x.java.transport.serial.SerialChannelFactory;
 import org.apache.plc4x.java.transport.serial.SerialChannelHandler;
 import org.apache.plc4x.java.transport.serial.SerialSocketAddress;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/plc4j/transports/test/pom.xml b/plc4j/transports/test/pom.xml
index cac99e6..513b2fe 100644
--- a/plc4j/transports/test/pom.xml
+++ b/plc4j/transports/test/pom.xml
@@ -44,12 +44,6 @@
     </dependency>
 
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <!-- This is a compile dependency for this test artifact -->
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
       <groupId>org.hamcrest</groupId>
       <artifactId>hamcrest-core</artifactId>
       <!-- This is a compile dependency for this test artifact -->
diff --git a/plc4j/utils/raw-sockets/src/test/java/org/apache/plc4x/java/utils/rawsockets/attic/RawIpSocketTest.java b/plc4j/utils/raw-sockets/src/test/java/org/apache/plc4x/java/utils/rawsockets/attic/RawIpSocketTest.java
index 15cbb68..7c85f49 100644
--- a/plc4j/utils/raw-sockets/src/test/java/org/apache/plc4x/java/utils/rawsockets/attic/RawIpSocketTest.java
+++ b/plc4j/utils/raw-sockets/src/test/java/org/apache/plc4x/java/utils/rawsockets/attic/RawIpSocketTest.java
@@ -15,10 +15,9 @@
  */
 package org.apache.plc4x.java.utils.rawsockets.attic;
 
-import org.apache.plc4x.java.utils.rawsockets.attic.RawIpSocket;
 import org.apache.plc4x.test.RequirePcap;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 import org.pcap4j.core.PcapAddress;
 import org.pcap4j.core.PcapNetworkInterface;
 import org.pcap4j.core.Pcaps;
@@ -29,14 +28,13 @@ import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.TimeoutException;
 
-import static org.hamcrest.Matchers.*;
-import static org.junit.Assert.fail;
-import static org.junit.Assume.assumeThat;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.fail;
 
 public class RawIpSocketTest {
 
     @Test
-    @Ignore("Need to make tests run in Docker container first as this test requires libpcap or the entrie application to be run as 'root'")
+    @Disabled("Need to make tests run in Docker container first as this test requires libpcap or the entrie application to be run as 'root'")
     @RequirePcap
     public void testPingPacket() throws Exception {
         // Protocol number 1 = ICMP (Ping)
@@ -70,7 +68,7 @@ public class RawIpSocketTest {
             }
         }
         // On travis we won't have any interface at all so we don't need to run there
-        assumeThat(rawIpSocket, notNullValue());
+        assertNotNull(rawIpSocket);
 
         // Simple ICMP (Ping packet)
         byte[] rawData = new byte[]{
diff --git a/plc4j/utils/raw-sockets/src/test/java/org/apache/plc4x/java/utils/rawsockets/netty/RawSocketChannelTest.java b/plc4j/utils/raw-sockets/src/test/java/org/apache/plc4x/java/utils/rawsockets/netty/RawSocketChannelTest.java
index d11d184..3f8d822 100644
--- a/plc4j/utils/raw-sockets/src/test/java/org/apache/plc4x/java/utils/rawsockets/netty/RawSocketChannelTest.java
+++ b/plc4j/utils/raw-sockets/src/test/java/org/apache/plc4x/java/utils/rawsockets/netty/RawSocketChannelTest.java
@@ -26,13 +26,14 @@ import io.netty.buffer.Unpooled;
 import io.netty.channel.*;
 import io.netty.channel.oio.OioEventLoopGroup;
 import org.apache.plc4x.java.utils.rawsockets.netty.address.RawSocketAddress;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.pcap4j.core.PcapNetworkInterface;
 import org.pcap4j.core.Pcaps;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 /**
  * TODO write comment
  *
@@ -74,7 +75,7 @@ public class RawSocketChannelTest {
             // Start the client.
             PcapNetworkInterface loopbackDevice = Pcaps.findAllDevs().stream().filter(
                 PcapNetworkInterface::isLoopBack).findFirst().orElse(null);
-            Assert.assertNotNull("Couldn't find loopback device", loopbackDevice);
+            assertNotNull(loopbackDevice);
             final ChannelFuture f = bootstrap.connect(new RawSocketAddress(loopbackDevice.getName()));
             // Wait for sync
             f.sync();
diff --git a/plc4j/utils/test-utils/pom.xml b/plc4j/utils/test-utils/pom.xml
index c2e4843..75d875e 100644
--- a/plc4j/utils/test-utils/pom.xml
+++ b/plc4j/utils/test-utils/pom.xml
@@ -73,13 +73,14 @@
     </dependency>
 
     <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.xmlunit</groupId>
       <artifactId>xmlunit-core</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <scope>compile</scope>
+    </dependency>
   </dependencies>
 
 </project>
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 8ddc855..255fb2a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -106,6 +106,7 @@
     <plc4x-code-generation.version>1.2.0-SNAPSHOT</plc4x-code-generation.version>
 
     <antlr.version>4.7.2</antlr.version>
+    <apiguardian.version>1.1.0</apiguardian.version>
     <asm.version>5.0.4</asm.version>
     <assertj.version>3.11.1</assertj.version>
     <bouncycastle.version>1.60</bouncycastle.version>
@@ -131,10 +132,10 @@
     <equalsverifier.version>3.0.2</equalsverifier.version>
     <findbugs.version>3.0.1</findbugs.version>
     <freemarker.version>2.3.28</freemarker.version>
-    <groovy.version>2.5.8</groovy.version>
+    <groovy.version>3.0.2</groovy.version>
     <gson.version>2.8.5</gson.version>
     <guava.version>27.0.1-jre</guava.version>
-    <hamcrest.version>1.3</hamcrest.version>
+    <hamcrest.version>2.2</hamcrest.version>
     <httpclient.version>4.5.10</httpclient.version>
     <jackson.version>2.10.0</jackson.version>
     <jmh.version>1.21</jmh.version>
@@ -142,9 +143,8 @@
     <joda-time.version>2.10.5</joda-time.version>
     <jopt-simple.version>5.0.2</jopt-simple.version>
     <jserialcom.version>2.5.1</jserialcom.version>
-    <junit.jupiter.version>5.5.0</junit.jupiter.version>
-    <junit.platform.version>1.3.2</junit.platform.version>
-    <junit.version>4.12</junit.version>
+    <junit.jupiter.version>5.6.0</junit.jupiter.version>
+    <junit.platform.version>1.6.0</junit.platform.version>
     <log4j.version>2.11.1</log4j.version>
     <logback.version>1.2.3</logback.version>
     <logstash.version>7.4.0</logstash.version>
@@ -390,11 +390,6 @@
         <version>${joda-time.version}</version>
       </dependency>
       <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>${junit.version}</version>
-      </dependency>
-      <dependency>
         <groupId>net.bytebuddy</groupId>
         <artifactId>byte-buddy</artifactId>
         <version>${byte-buddy.version}</version>
@@ -577,6 +572,11 @@
         <version>${plc4x-code-generation.version}</version>
       </dependency>
       <dependency>
+        <groupId>org.apiguardian</groupId>
+        <artifactId>apiguardian-api</artifactId>
+        <version>${apiguardian.version}</version>
+      </dependency>
+      <dependency>
         <groupId>org.assertj</groupId>
         <artifactId>assertj-core</artifactId>
         <version>${assertj.version}</version>
@@ -665,6 +665,11 @@
       </dependency>
       <dependency>
         <groupId>org.hamcrest</groupId>
+        <artifactId>hamcrest</artifactId>
+        <version>${hamcrest.version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.hamcrest</groupId>
         <artifactId>hamcrest-core</artifactId>
         <version>${hamcrest.version}</version>
       </dependency>
@@ -680,29 +685,28 @@
       </dependency>
       <dependency>
         <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-api</artifactId>
+        <artifactId>junit-jupiter</artifactId>
         <version>${junit.jupiter.version}</version>
       </dependency>
       <dependency>
         <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-engine</artifactId>
+        <artifactId>junit-jupiter-api</artifactId>
         <version>${junit.jupiter.version}</version>
       </dependency>
       <dependency>
         <groupId>org.junit.jupiter</groupId>
-        <artifactId>junit-jupiter-params</artifactId>
+        <artifactId>junit-jupiter-engine</artifactId>
         <version>${junit.jupiter.version}</version>
       </dependency>
       <dependency>
-        <groupId>org.junit.vintage</groupId>
-        <artifactId>junit-vintage-engine</artifactId>
+        <groupId>org.junit.jupiter</groupId>
+        <artifactId>junit-jupiter-params</artifactId>
         <version>${junit.jupiter.version}</version>
       </dependency>
       <dependency>
         <groupId>org.junit.platform</groupId>
-        <artifactId>junit-platform-launcher</artifactId>
-        <version>1.5.0</version>
-        <scope>test</scope>
+        <artifactId>junit-platform-engine</artifactId>
+        <version>${junit.platform.version}</version>
       </dependency>
       <dependency>
         <groupId>org.mockito</groupId>
@@ -1174,31 +1178,22 @@
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.22.2</version>
-          <dependencies>
-            <dependency>
-              <groupId>org.junit.jupiter</groupId>
-              <artifactId>junit-jupiter-engine</artifactId>
-              <version>${junit.jupiter.version}</version>
-            </dependency>
-          </dependencies>
+          <configuration>
+            <argLine>
+              --illegal-access=permit
+            </argLine>
+          </configuration>
         </plugin>
 
         <plugin>
           <groupId>org.apache.maven.plugins</groupId>
           <artifactId>maven-failsafe-plugin</artifactId>
           <version>2.22.2</version>
-          <dependencies>
-            <dependency>
-              <groupId>org.junit.platform</groupId>
-              <artifactId>junit-platform-surefire-provider</artifactId>
-              <version>${junit.platform.version}</version>
-            </dependency>
-            <dependency>
-              <groupId>org.junit.jupiter</groupId>
-              <artifactId>junit-jupiter-engine</artifactId>
-              <version>${junit.jupiter.version}</version>
-            </dependency>
-          </dependencies>
+          <configuration>
+            <argLine>
+              --illegal-access=permit
+            </argLine>
+          </configuration>
         </plugin>
 
         <plugin>
diff --git a/sandbox/code-gen/pom.xml b/sandbox/code-gen/pom.xml
index 815551b..0b7ccc7 100644
--- a/sandbox/code-gen/pom.xml
+++ b/sandbox/code-gen/pom.xml
@@ -46,23 +46,8 @@
     </dependency>
 
     <dependency>
-      <groupId>org.junit.vintage</groupId>
-      <artifactId>junit-vintage-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
       <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.platform</groupId>
-      <artifactId>junit-platform-launcher</artifactId>
+      <artifactId>junit-jupiter</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/DFDLUtilTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/DFDLUtilTest.java
index d46cce5..37b20d7 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/DFDLUtilTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/DFDLUtilTest.java
@@ -18,7 +18,7 @@ under the License.
 */
 package org.apache.plc4x.codegen;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ModuleNodeTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ModuleNodeTest.java
index 3ff4675..815e462 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ModuleNodeTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ModuleNodeTest.java
@@ -27,7 +27,8 @@ import java.io.File;
 import java.io.IOException;
 import java.util.Collections;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 
 class ModuleNodeTest {
 
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/JavaGeneratorTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/JavaGeneratorTest.java
index 93e642f..7a2e154 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/JavaGeneratorTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/JavaGeneratorTest.java
@@ -18,20 +18,21 @@ under the License.
 */
 package org.apache.plc4x.codegen.ast;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.Collections;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class JavaGeneratorTest {
 
     private CodeWriter writer;
     private JavaGenerator generator;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         writer = new CodeWriter(4);
         generator = new JavaGenerator(writer);
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PythonGeneratorTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PythonGeneratorTest.java
index c66b934..8ba86e8 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PythonGeneratorTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/ast/PythonGeneratorTest.java
@@ -18,20 +18,21 @@ under the License.
 */
 package org.apache.plc4x.codegen.ast;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.Collections;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class PythonGeneratorTest {
 
     public Generator generator;
     public CodeWriter writer;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         this.writer = new CodeWriter(4);
         this.generator = new PythonGenerator(writer);
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/EnumFactoryTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/EnumFactoryTest.java
index 245438d..26b3014 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/EnumFactoryTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/EnumFactoryTest.java
@@ -19,8 +19,7 @@ under the License.
 package org.apache.plc4x.codegen.util;
 
 import org.apache.plc4x.codegen.ast.*;
-import org.apache.plc4x.codegen.util.EnumFactory;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 
diff --git a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/PojoFactoryTest.java b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/PojoFactoryTest.java
index b04ae77..b702f1a 100644
--- a/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/PojoFactoryTest.java
+++ b/sandbox/code-gen/src/test/java/org/apache/plc4x/codegen/util/PojoFactoryTest.java
@@ -19,8 +19,7 @@ under the License.
 package org.apache.plc4x.codegen.util;
 
 import org.apache.plc4x.codegen.ast.*;
-
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class PojoFactoryTest {
 
diff --git a/sandbox/test-java-amsads-driver/pom.xml b/sandbox/test-java-amsads-driver/pom.xml
index d395df5..ba72c0d 100644
--- a/sandbox/test-java-amsads-driver/pom.xml
+++ b/sandbox/test-java-amsads-driver/pom.xml
@@ -157,22 +157,6 @@
       <artifactId>jackson-dataformat-xml</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.platform</groupId>
-      <artifactId>junit-platform-launcher</artifactId>
-      <scope>test</scope>
-    </dependency>
-
   </dependencies>
 
 </project>
diff --git a/sandbox/test-java-df1-driver/pom.xml b/sandbox/test-java-df1-driver/pom.xml
index f26d94b..9d1904e 100644
--- a/sandbox/test-java-df1-driver/pom.xml
+++ b/sandbox/test-java-df1-driver/pom.xml
@@ -147,22 +147,6 @@
       <artifactId>jackson-dataformat-xml</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.platform</groupId>
-      <artifactId>junit-platform-launcher</artifactId>
-      <scope>test</scope>
-    </dependency>
-
   </dependencies>
 
 </project>
diff --git a/sandbox/test-java-firmata-driver/pom.xml b/sandbox/test-java-firmata-driver/pom.xml
index 15c1f3a..9aef411 100644
--- a/sandbox/test-java-firmata-driver/pom.xml
+++ b/sandbox/test-java-firmata-driver/pom.xml
@@ -128,21 +128,6 @@
       <artifactId>jackson-dataformat-xml</artifactId>
       <scope>test</scope>
     </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-api</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.jupiter</groupId>
-      <artifactId>junit-jupiter-engine</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.junit.platform</groupId>
-      <artifactId>junit-platform-launcher</artifactId>
-      <scope>test</scope>
-    </dependency>
 
     <dependency>
       <groupId>org.apache.plc4x</groupId>