METRON-2307 Migrate to JUnit5 (justinleet) closes apache/metron#1554
diff --git a/.travis.yml b/.travis.yml
index a0d8d13..78cc5f7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -60,6 +60,7 @@
 
     - name: Verify Licenses
       script:
+        - time mvn install -T 2C -q -DskipTests=true -Dmaven.javadoc.skip=true -B -V -Dskip.npm
         - time ./dev-utilities/build-utils/verify_licenses.sh
 
 before_cache:
diff --git a/dependencies_with_url.csv b/dependencies_with_url.csv
index a716e48..1575454 100644
--- a/dependencies_with_url.csv
+++ b/dependencies_with_url.csv
@@ -50,6 +50,9 @@
 javax.xml.bind:jaxb-api:jar:2.3.0:compile,CDDL,https://jaxb.dev.java.net/
 javax.xml.stream:stax-api:jar:1.0-2:compile,COMMON DEVELOPMENT AND DISTRIBUTION LICENSE (CDDL) Version 1.0,https://docs.oracle.com/javase/7/docs/api/javax/xml/stream/package-summary.html
 jline:jline:jar:0.9.94:compile,BSD,http://jline.sourceforge.net
+junit:junit:jar:3.8.1:compile,Common Public License Version 1.0,http://junit.org
+junit:junit:jar:4.10:compile,Common Public License Version 1.0,http://junit.org
+junit:junit:jar:4.11:compile,Common Public License Version 1.0,http://junit.org
 junit:junit:jar:4.12:compile,Eclipse Public License 1.0,http://junit.org
 net.razorvine:pyrolite:jar:4.13:compile,MIT,https://github.com/irmen/Pyrolite
 net.sf.jopt-simple:jopt-simple:jar:3.2:compile,The MIT License,http://jopt-simple.sourceforge.net
@@ -77,7 +80,7 @@
 org.lz4:lz4-java:jar:1.4.0:compile,ASLv2,https://github.com/lz4/lz4-java
 org.mitre.taxii:taxii:jar:1.1.0.1:compile,The BSD 3-Clause License,https://github.com/TAXIIProject/java-taxii
 org.mitre:stix:jar:1.2.0.2:compile,The BSD 3-Clause License,https://github.com/STIXProject/java-stix
-org.mockito:mockito-core:jar:1.10.19:compile,The MIT License,http://www.mockito.org
+org.mockito:mockito-core:jar:3.1.0:compile,The MIT License,http://www.mockito.org
 org.roaringbitmap:RoaringBitmap:jar:0.5.11:compile,ASLv2,https://github.com/RoaringBitmap/RoaringBitmap
 org.scala-lang:scala-library:jar:2.10.6:compile,BSD-like,http://www.scala-lang.org/
 org.scala-lang.modules:scala-parser-combinators_2.11:jar:1.0.4:compile,BSD-like,http://www.scala-lang.org/
@@ -503,3 +506,10 @@
 com.github.stephenc.jcip:jcip-annotations:jar:1.0-1:compile,ASLv2,http://stephenc.github.io/jcip-annotations/
 com.nimbusds:nimbus-jose-jwt:jar:4.41.2:compile,ASLv2,https://bitbucket.org/connect2id/nimbus-jose-jwt/wiki/Home
 tomcat:jasper-compiler:jar:5.5.23:compile,ASLv2,https://tomcat.apache.org/
+org.apiguardian:apiguardian-api:jar:1.1.0:compile,ASLv2,https://github.com/apiguardian-team/apiguardian/blob/master/LICENSE
+org.junit.jupiter:junit-jupiter-api:jar:5.5.2:compile,EPL 2.0,https://junit.org
+org.junit.platform:junit-platform-engine:jar:1.5.2:compile,EPL 2.0,https://junit.org
+org.junit.platform:junit-platform-commons:jar:1.5.2:compile,EPL 2.0,https://junit.org
+net.bytebuddy:byte-buddy-agent:jar:1.9.10:compile,ASLv2,https://bytebuddy.net/
+net.bytebuddy:byte-buddy:jar:1.9.10:compile,ASLv2,https://bytebuddy.net/
+org.objenesis:objenesis:jar:2.6:compile,ASLv2,http://objenesis.org/license.html
\ No newline at end of file
diff --git a/metron-analytics/metron-maas-common/src/test/java/org/apache/metron/maas/discovery/ServiceDiscoveryIntegrationTest.java b/metron-analytics/metron-maas-common/src/test/java/org/apache/metron/maas/discovery/ServiceDiscoveryIntegrationTest.java
index 6eeb64a..4e0ddf7 100644
--- a/metron-analytics/metron-maas-common/src/test/java/org/apache/metron/maas/discovery/ServiceDiscoveryIntegrationTest.java
+++ b/metron-analytics/metron-maas-common/src/test/java/org/apache/metron/maas/discovery/ServiceDiscoveryIntegrationTest.java
@@ -29,21 +29,22 @@
 import org.apache.metron.maas.config.Endpoint;
 import org.apache.metron.maas.config.Model;
 import org.apache.metron.maas.config.ModelEndpoint;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-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.URL;
 import java.util.concurrent.atomic.AtomicInteger;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class ServiceDiscoveryIntegrationTest {
   private TestingServer testZkServer;
   private String zookeeperUrl;
   private CuratorFramework client;
   private ServiceDiscoverer discoverer;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     testZkServer = new TestingServer(true);
     zookeeperUrl = testZkServer.getConnectString();
@@ -93,31 +94,31 @@
     //wait for zk to percolate the changes.
     Thread.sleep(2000);
 
-    Assert.assertEquals(3, discoverer.getEndpoints(new Model("casey", "3.14159")).size());
-    Assert.assertEquals(1, discoverer.getEndpoints(new Model("casey", "3.1416")).size());
-    Assert.assertEquals(0, discoverer.getEndpoints(new Model("casey", "3.17")).size());
+    assertEquals(3, discoverer.getEndpoints(new Model("casey", "3.14159")).size());
+    assertEquals(1, discoverer.getEndpoints(new Model("casey", "3.1416")).size());
+    assertEquals(0, discoverer.getEndpoints(new Model("casey", "3.17")).size());
 
     discoverer.unregisterByContainer("1");
     Thread.sleep(2000);
-    Assert.assertEquals(2, discoverer.getEndpoints(new Model("casey", "3.14159")).size());
-    Assert.assertEquals(1, discoverer.getEndpoints(new Model("casey", "3.1416")).size());
-    Assert.assertEquals(0, discoverer.getEndpoints(new Model("casey", "3.17")).size());
+    assertEquals(2, discoverer.getEndpoints(new Model("casey", "3.14159")).size());
+    assertEquals(1, discoverer.getEndpoints(new Model("casey", "3.1416")).size());
+    assertEquals(0, discoverer.getEndpoints(new Model("casey", "3.17")).size());
 
-    Assert.assertEquals(2, discoverer.listEndpoints(new Model("casey", null)).keySet().size());
-    Assert.assertEquals(1, discoverer.listEndpoints(new Model("casey", "3.1416")).keySet().size());
-    Assert.assertEquals(1, discoverer.listEndpoints(new Model("casey", "3.1416"))
+    assertEquals(2, discoverer.listEndpoints(new Model("casey", null)).keySet().size());
+    assertEquals(1, discoverer.listEndpoints(new Model("casey", "3.1416")).keySet().size());
+    assertEquals(1, discoverer.listEndpoints(new Model("casey", "3.1416"))
                                      .get(new Model("casey", "3.1416")).size()
                        );
-    Assert.assertEquals("4", discoverer.listEndpoints(new Model("casey", "3.1416"))
+    assertEquals("4", discoverer.listEndpoints(new Model("casey", "3.1416"))
                                        .get(new Model("casey", "3.1416"))
                                        .get(0)
                                        .getContainerId()
                        );
-    Assert.assertEquals(0, discoverer.listEndpoints(new Model("casey", "3.17")).keySet().size());
-    Assert.assertEquals(0, discoverer.listEndpoints(new Model("dummy", null)).keySet().size());
+    assertEquals(0, discoverer.listEndpoints(new Model("casey", "3.17")).keySet().size());
+    assertEquals(0, discoverer.listEndpoints(new Model("dummy", null)).keySet().size());
 
   }
-  @After
+  @AfterEach
   public void teardown() throws Exception {
 
     if(discoverer != null) {
diff --git a/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/MaasIntegrationTest.java b/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/MaasIntegrationTest.java
index 8752850..fe87ea2 100644
--- a/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/MaasIntegrationTest.java
+++ b/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/MaasIntegrationTest.java
@@ -16,18 +16,9 @@
  * limitations under the License.
  */
 package org.apache.metron.maas.service;
-import java.io.*;
-import java.net.HttpURLConnection;
-import java.net.InetAddress;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.logging.Level;
 
 import com.google.common.base.Splitter;
 import com.google.common.collect.Iterables;
-import org.apache.hadoop.fs.FileSystem;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.curator.RetryPolicy;
@@ -35,6 +26,7 @@
 import org.apache.curator.framework.CuratorFrameworkFactory;
 import org.apache.curator.retry.ExponentialBackoffRetry;
 import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.hadoop.net.NetUtils;
 import org.apache.hadoop.util.Shell;
@@ -45,20 +37,30 @@
 import org.apache.metron.integration.ComponentRunner;
 import org.apache.metron.integration.components.YarnComponent;
 import org.apache.metron.integration.components.ZKServerComponent;
-import org.apache.metron.maas.discovery.ServiceDiscoverer;
 import org.apache.metron.maas.config.MaaSConfig;
 import org.apache.metron.maas.config.Model;
 import org.apache.metron.maas.config.ModelEndpoint;
+import org.apache.metron.maas.discovery.ServiceDiscoverer;
 import org.apache.metron.maas.queue.ZKQueue;
 import org.apache.metron.maas.submit.ModelSubmission;
 import org.apache.metron.maas.util.ConfigUtil;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.apache.zookeeper.KeeperException;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.*;
+
+import java.io.*;
+import java.net.HttpURLConnection;
+import java.net.InetAddress;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.logging.Level;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MaasIntegrationTest {
   private static final Log LOG =
@@ -68,7 +70,7 @@
   private static YarnComponent yarnComponent;
   private static ZKServerComponent zkServerComponent;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupBeforeClass() throws Exception {
     UnitTestHelper.setJavaLoggingLevel(Level.SEVERE);
     LOG.info("Starting up YARN cluster");
@@ -90,7 +92,7 @@
     client.start();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass(){
     if(client != null){
       client.close();
@@ -98,17 +100,19 @@
     runner.stop();
   }
 
-  @After
+  @AfterEach
   public void tearDown() {
     runner.reset();
   }
 
-  @Test(timeout=900000)
+  @Test
+  @Timeout(900000)
   public void testMaaSWithDomain() throws Exception {
     testDSShell(true);
   }
 
-  @Test(timeout=900000)
+  @Test
+  @Timeout(900000)
   public void testMaaSWithoutDomain() throws Exception {
     testDSShell(false);
   }
@@ -154,7 +158,7 @@
     LOG.info("Initializing DS Client");
     final Client client = new Client(new Configuration(conf));
     boolean initSuccess = client.init(args);
-    Assert.assertTrue(initSuccess);
+    assertTrue(initSuccess);
     LOG.info("Running DS Client");
     final AtomicBoolean result = new AtomicBoolean(false);
     Thread t = new Thread() {
@@ -198,7 +202,7 @@
         break;
       }
     }
-    Assert.assertTrue(errorMessage, verified);
+    assertTrue(verified, errorMessage);
     FileSystem fs = FileSystem.get(conf);
     try {
       new ModelSubmission().execute(FileSystem.get(conf)
@@ -234,13 +238,13 @@
           }
           Thread.sleep(2000);
         }
-        Assert.assertTrue(passed);
+        assertTrue(passed);
       }
 
       {
         List<ModelEndpoint> endpoints = discoverer.getEndpoints(new Model("dummy", "1.0"));
-        Assert.assertNotNull(endpoints);
-        Assert.assertEquals(1, endpoints.size());
+        assertNotNull(endpoints);
+        assertEquals(1, endpoints.size());
       }
       new ModelSubmission().execute(FileSystem.get(conf)
               , new String[]{
@@ -266,7 +270,7 @@
           }
           Thread.sleep(2000);
         }
-        Assert.assertTrue(passed);
+        assertTrue(passed);
       }
     }
     finally {
@@ -336,10 +340,8 @@
       return true;
     }
 
-    Assert.assertTrue("Unknown format for hostname " + appHostname,
-            appHostname.contains("/"));
-    Assert.assertTrue("Unknown format for hostname " + hostname,
-            hostname.contains("/"));
+    assertTrue(appHostname.contains("/"), "Unknown format for hostname " + appHostname);
+    assertTrue(hostname.contains("/"), "Unknown format for hostname " + hostname);
 
     String[] appHostnameParts = appHostname.split("/");
     String[] hostnameParts = hostname.split("/");
@@ -395,7 +397,7 @@
         break;
       }
     }
-    Assert.assertTrue(currentContainerLogFileIndex != -1);
+    assertTrue(currentContainerLogFileIndex != -1);
     File[] containerFiles =
             listOfFiles[currentContainerLogFileIndex].listFiles();
 
@@ -417,7 +419,7 @@
                 }
               } else if (output.getName().trim().equals("stdout")){
                 if (! Shell.WINDOWS) {
-                  Assert.assertEquals("The current is" + sCurrentLine,
+                  assertEquals("The current is" + sCurrentLine,
                           expectedContent.get(numOfline), sCurrentLine.trim());
                   numOfline++;
                 } else {
@@ -433,7 +435,7 @@
              */
             if (Shell.WINDOWS && !count
                     && output.getName().trim().equals("stdout")) {
-              Assert.assertTrue(stdOutContent.containsAll(expectedContent));
+              assertTrue(stdOutContent.containsAll(expectedContent));
             }
           } catch (IOException e) {
             e.printStackTrace();
diff --git a/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/StellarMaaSIntegrationTest.java b/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/StellarMaaSIntegrationTest.java
index 4b95af5..c7067cb 100644
--- a/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/StellarMaaSIntegrationTest.java
+++ b/metron-analytics/metron-maas-service/src/test/java/org/apache/metron/maas/service/StellarMaaSIntegrationTest.java
@@ -28,14 +28,16 @@
 import org.apache.curator.x.discovery.ServiceInstance;
 import org.apache.curator.x.discovery.ServiceInstanceBuilder;
 import org.apache.curator.x.discovery.ServiceType;
-import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.maas.config.Endpoint;
 import org.apache.metron.maas.config.MaaSConfig;
 import org.apache.metron.maas.config.ModelEndpoint;
 import org.apache.metron.maas.discovery.ServiceDiscoverer;
 import org.apache.metron.maas.util.ConfigUtil;
+import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.test.utils.UnitTestHelper;
-import org.junit.*;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import java.net.URL;
 import java.util.HashMap;
@@ -43,6 +45,7 @@
 import java.util.logging.Level;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class StellarMaaSIntegrationTest {
   private static Context context;
@@ -52,7 +55,7 @@
   private static ServiceDiscoverer discoverer;
   private static URL endpointUrl;
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() throws Exception {
     UnitTestHelper.setJavaLoggingLevel(WebApplicationImpl.class, Level.WARNING);
     MockDGAModel.start(8282);
@@ -105,53 +108,53 @@
   }
 
   @Test
-  public void testGetEndpointWithoutVersion() throws Exception {
+  public void testGetEndpointWithoutVersion() {
     String stellar = "MAAS_GET_ENDPOINT('dga')";
     Object result = run(stellar, new HashMap<>(), context);
-    Assert.assertTrue(result instanceof Map);
+    assertTrue(result instanceof Map);
     Map<String, String> resMap = (Map<String, String>)result;
-    Assert.assertEquals(resMap.get("url"), "http://localhost:8282");
-    Assert.assertEquals(resMap.get("name"), "dga");
-    Assert.assertEquals(resMap.get("version"), "1.0");
-    Assert.assertEquals(resMap.get("endpoint:apply"), "apply");
+    assertEquals(resMap.get("url"), "http://localhost:8282");
+    assertEquals(resMap.get("name"), "dga");
+    assertEquals(resMap.get("version"), "1.0");
+    assertEquals(resMap.get("endpoint:apply"), "apply");
 
   }
 
   @Test
-  public void testGetEndpointWithVersion() throws Exception {
+  public void testGetEndpointWithVersion() {
     String stellar = "MAAS_GET_ENDPOINT('dga', '1.0')";
     Object result = run(stellar, new HashMap<>(), context);
-    Assert.assertTrue(result instanceof Map);
+    assertTrue(result instanceof Map);
     Map<String, String> resMap = (Map<String, String>)result;
-    Assert.assertEquals(resMap.get("url"), "http://localhost:8282");
-    Assert.assertEquals(resMap.get("name"), "dga");
-    Assert.assertEquals(resMap.get("version"), "1.0");
-    Assert.assertEquals(resMap.get("endpoint:apply"), "apply");
+    assertEquals(resMap.get("url"), "http://localhost:8282");
+    assertEquals(resMap.get("name"), "dga");
+    assertEquals(resMap.get("version"), "1.0");
+    assertEquals(resMap.get("endpoint:apply"), "apply");
   }
 
   @Test
-  public void testGetEndpointWithWrongVersion() throws Exception {
+  public void testGetEndpointWithWrongVersion() {
     String stellar = "MAAS_GET_ENDPOINT('dga', '2.0')";
     Object result = run(stellar, new HashMap<>(), context);
-    Assert.assertNull(result);
+    assertNull(result);
   }
 
   @Test
-  public void testModelApply() throws Exception {
+  public void testModelApply() {
     {
       String stellar = "MAP_GET('is_malicious', MAAS_MODEL_APPLY(MAAS_GET_ENDPOINT('dga'), {'host': host}))";
       Object result = run(stellar, ImmutableMap.of("host", "badguy.com"), context);
-      Assert.assertTrue((Boolean) result);
+      assertTrue((Boolean) result);
     }
     {
       String stellar = "MAP_GET('is_malicious', MAAS_MODEL_APPLY(MAAS_GET_ENDPOINT('dga'), {'host': host}))";
       Object result = run(stellar, ImmutableMap.of("host", "youtube.com"), context);
-      Assert.assertFalse((Boolean) result);
+      assertFalse((Boolean) result);
     }
     {
       String stellar = "MAP_GET('is_malicious', MAAS_MODEL_APPLY(MAAS_GET_ENDPOINT('dga'), 'apply', {'host': host}))";
       Object result = run(stellar, ImmutableMap.of("host", "youtube.com"), context);
-      Assert.assertFalse((Boolean) result);
+      assertFalse((Boolean) result);
     }
 
   }
@@ -161,11 +164,11 @@
     {
       String stellar = "MAP_GET('is_malicious', MAAS_MODEL_APPLY(MAAS_GET_ENDPOINT('dga', '2.0'), {'host': host}))";
       Object result = run(stellar, ImmutableMap.of("host", "youtube.com"), context);
-      Assert.assertNull( result);
+      assertNull( result);
     }
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() {
     MockDGAModel.shutdown();
     if(discoverer != null) {
diff --git a/metron-analytics/metron-profiler-client/pom.xml b/metron-analytics/metron-profiler-client/pom.xml
index 9335742..cfcbf4b 100644
--- a/metron-analytics/metron-profiler-client/pom.xml
+++ b/metron-analytics/metron-profiler-client/pom.xml
@@ -122,8 +122,7 @@
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
-            <artifactId>mockito-all</artifactId>
-            <version>${global_mockito_version}</version>
+            <artifactId>mockito-core</artifactId>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/HBaseProfilerClientTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/HBaseProfilerClientTest.java
index c7ad11a..5b513ab 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/HBaseProfilerClientTest.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/HBaseProfilerClientTest.java
@@ -20,12 +20,6 @@
 
 package org.apache.metron.profiler.client;
 
-import static org.junit.Assert.assertEquals;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Optional;
-import java.util.concurrent.TimeUnit;
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
 import org.apache.metron.hbase.mock.MockHTable;
 import org.apache.metron.profiler.ProfileMeasurement;
@@ -35,9 +29,16 @@
 import org.apache.metron.profiler.hbase.ValueOnlyColumnBuilder;
 import org.apache.metron.stellar.common.DefaultStellarStatefulExecutor;
 import org.apache.metron.stellar.common.StellarStatefulExecutor;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.Arrays;
+import java.util.List;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Tests the HBaseProfilerClient.
@@ -61,8 +62,8 @@
   private MockHBaseTableProvider provider;
   private ProfileWriter profileWriter;
 
-  @Before
-  public void setup() throws Exception {
+  @BeforeEach
+  public void setup() {
     provider = new MockHBaseTableProvider();
     executor = new DefaultStellarStatefulExecutor();
     MockHBaseTableProvider.addToCache(tableName, columnFamily);
@@ -78,13 +79,13 @@
         tableName, null);
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     ((MockHTable) provider.getTable(null, tableName)).clear();
   }
 
   @Test
-  public void Should_ReturnMeasurements_When_DataExistsForAGroup() throws Exception {
+  public void Should_ReturnMeasurements_When_DataExistsForAGroup() {
     final String profile = "profile1";
     final String entity = "entity1";
     final int expectedValue = 2302;
@@ -129,7 +130,7 @@
   }
 
   @Test
-  public void Should_ReturnResultFromGroup_When_MultipleGroupsExist() throws Exception {
+  public void Should_ReturnResultFromGroup_When_MultipleGroupsExist() {
     final String profile = "profile1";
     final String entity = "entity1";
     final int periodsPerHour = 4;
@@ -181,7 +182,7 @@
   }
 
   @Test
-  public void Should_ReturnNoResults_When_NoDataInStartToEnd() throws Exception {
+  public void Should_ReturnNoResults_When_NoDataInStartToEnd() {
     final String profile = "profile1";
     final String entity = "entity1";
     final int hours = 2;
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
index c2fa4e7..ff9d56c 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/ProfileWriter.java
@@ -20,11 +20,6 @@
 
 package org.apache.metron.profiler.client;
 
-import java.util.Collections;
-import java.util.List;
-import java.util.Random;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Function;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.client.Durability;
@@ -39,6 +34,12 @@
 import org.apache.metron.profiler.hbase.SaltyRowKeyBuilder;
 import org.apache.metron.profiler.hbase.ValueOnlyColumnBuilder;
 
+import java.util.Collections;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+
 /**
  * Writes ProfileMeasurement values that can be read during automated testing.
  */
@@ -99,7 +100,7 @@
     hbaseClient.mutate();
   }
 
-  public static void main(String[] args) throws Exception {
+  public static void main(String[] args) {
     RowKeyBuilder rowKeyBuilder = new SaltyRowKeyBuilder();
     ColumnBuilder columnBuilder = new ValueOnlyColumnBuilder();
 
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/GetProfileTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/GetProfileTest.java
index c9f7d21..c443d8f 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/GetProfileTest.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/GetProfileTest.java
@@ -20,20 +20,6 @@
 
 package org.apache.metron.profiler.client.stellar;
 
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
 import org.apache.metron.profiler.ProfileMeasurement;
@@ -48,9 +34,14 @@
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
 import org.apache.metron.stellar.dsl.functions.resolver.SingletonFunctionResolver;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the GetProfile class.
@@ -80,12 +71,12 @@
    * actually does), and then reading that profile data (thereby testing the PROFILE_GET
    * Stellar client implemented in GetProfile).
    *
-   * It runs at @Before time, and sets testclass global variables used by the writers and readers.
+   * It runs at @BeforeEach time, and sets testclass global variables used by the writers and readers.
    * The various writers and readers are in each test case, not here.
    *
    * @return void
    */
-  @Before
+  @BeforeEach
   public void setup() {
     state = new HashMap<>();
     final Table table = MockHBaseTableProvider.addToCache(tableName, columnFamily);
@@ -122,7 +113,7 @@
    * and saltDivisor2, instead of periodDuration, periodUnits and saltDivisor respectively.
    *
    * This is used in the unit tests that test the config_overrides feature of PROFILE_GET.
-   * In these tests, the context from @Before setup() is used to write the data, then the global
+   * In these tests, the context from @BeforeEach setup() is used to write the data, then the global
    * context is changed to context2 (from this method).  Each test validates that a default read
    * using global context2 then gets no valid results (as expected), and that a read using
    * original context values in the PROFILE_GET config_overrides argument gets all expected results.
@@ -187,8 +178,8 @@
     List<Integer> result = run(expr, List.class);
 
     // validate - expect to read all values from the past 4 hours
-    Assert.assertEquals(count, result.size());
-    result.forEach(actual -> Assert.assertEquals(expectedValue, actual.intValue()));
+    assertEquals(count, result.size());
+    result.forEach(actual -> assertEquals(expectedValue, actual.intValue()));
   }
 
   /**
@@ -219,15 +210,15 @@
     List<Integer> result = run(expr, List.class);
 
     // validate - expect to read all values from the past 4 hours
-    Assert.assertEquals(count, result.size());
+    assertEquals(count, result.size());
 
     // test the deprecated but allowed "varargs" form of groups specification
     expr = "PROFILE_GET('profile1', 'entity1', PROFILE_FIXED(4, 'HOURS'), 'weekends')";
     result = run(expr, List.class);
 
     // validate - expect to read all values from the past 4 hours
-    Assert.assertEquals(count, result.size());
-    result.forEach(actual -> Assert.assertEquals(expectedValue, actual.intValue()));
+    assertEquals(count, result.size());
+    result.forEach(actual -> assertEquals(expectedValue, actual.intValue()));
   }
 
   /**
@@ -258,21 +249,21 @@
     List<Integer> result = run(expr, List.class);
 
     // validate - expect to read all values from the past 4 hours
-    Assert.assertEquals(count, result.size());
+    assertEquals(count, result.size());
 
     // test the deprecated but allowed "varargs" form of groups specification
     expr = "PROFILE_GET('profile1', 'entity1', PROFILE_FIXED(4, 'HOURS'), 'weekdays', 'tuesday')";
     result = run(expr, List.class);
 
     // validate - expect to read all values from the past 4 hours
-    Assert.assertEquals(count, result.size());
-    result.forEach(actual -> Assert.assertEquals(expectedValue, actual.intValue()));
+    assertEquals(count, result.size());
+    result.forEach(actual -> assertEquals(expectedValue, actual.intValue()));
   }
 
   /**
    * Initialization should fail if the required context values are missing.
    */
-  @Test(expected = ParseException.class)
+  @Test
   public void testMissingContext() {
     Context empty = Context.EMPTY_CONTEXT();
 
@@ -284,7 +275,7 @@
 
     // validate - function should be unable to initialize
     String expr = "PROFILE_GET('profile1', 'entity1', PROFILE_FIXED(1000, 'SECONDS'), groups)";
-    run(expr, List.class);
+    assertThrows(ParseException.class, () -> run(expr, List.class));
   }
 
   /**
@@ -314,7 +305,7 @@
     List<Integer> result = run(expr, List.class);
 
     // validate - there should be no values from only 4 seconds ago
-    Assert.assertEquals(0, result.size());
+    assertEquals(0, result.size());
   }
 
   /**
@@ -327,7 +318,7 @@
     List<Integer> result = run(expr, List.class);
 
     // validate - expect to fail to read any values because we didn't write any.
-    Assert.assertEquals(0, result.size());
+    assertEquals(0, result.size());
 
     // execute - read the profile values - with config_override.
     // first two override values are strings, third is deliberately a number.
@@ -342,8 +333,8 @@
 
       // validate - expect to read all values from the past 4 hours (16 or 17 values depending on start time)
       // but they should all be the default value.
-      Assert.assertTrue(result.size() == 16 || result.size() == 17);
-      result.forEach(actual -> Assert.assertEquals(defaultVal, actual));
+      assertTrue(result.size() == 16 || result.size() == 17);
+      result.forEach(actual -> assertEquals(defaultVal, actual));
   }
 
   /**
@@ -370,8 +361,8 @@
     // validate it is changed in significant way
     @SuppressWarnings("unchecked")
     Map<String, Object> global = (Map<String, Object>) context2.getCapability(Context.Capabilities.GLOBAL_CONFIG).get();
-    Assert.assertEquals(PROFILER_PERIOD.get(global), periodDuration2);
-    Assert.assertNotEquals(periodDuration, periodDuration2);
+    assertEquals(PROFILER_PERIOD.get(global), periodDuration2);
+    assertNotEquals(periodDuration, periodDuration2);
 
     // execute - read the profile values - with (wrong) default global config values.
     // No error message at this time, but returns empty results list, because
@@ -381,7 +372,7 @@
     List<Integer> result = run(expr, List.class);
 
     // validate - expect to fail to read any values
-    Assert.assertEquals(0, result.size());
+    assertEquals(0, result.size());
 
     // execute - read the profile values - with config_override.
     // first two override values are strings, third is deliberately a number.
@@ -393,8 +384,8 @@
     result = run(expr, List.class);
 
     // validate - expect to read all values from the past 4 hours
-    Assert.assertEquals(count, result.size());
-    result.forEach(actual -> Assert.assertEquals(expectedValue, actual.intValue()));
+    assertEquals(count, result.size());
+    result.forEach(actual -> assertEquals(expectedValue, actual.intValue()));
   }
 
   /**
@@ -426,8 +417,8 @@
     // validate it is changed in significant way
     @SuppressWarnings("unchecked")
     Map<String, Object> global = (Map<String, Object>) context2.getCapability(Context.Capabilities.GLOBAL_CONFIG).get();
-    Assert.assertEquals(global.get(PROFILER_PERIOD.getKey()), Long.toString(periodDuration2));
-    Assert.assertNotEquals(periodDuration, periodDuration2);
+    assertEquals(global.get(PROFILER_PERIOD.getKey()), Long.toString(periodDuration2));
+    assertNotEquals(periodDuration, periodDuration2);
 
     // execute - read the profile values - with config_override.
     // first two override values are strings, third is deliberately a number.
@@ -441,7 +432,7 @@
     List<Integer> result = run(expr, List.class);
 
     // validate - expect to read all values from the past 4 hours
-    Assert.assertEquals(count, result.size());
+    assertEquals(count, result.size());
 
     // execute - read the profile values - with (wrong) default global config values.
     // No error message at this time, but returns empty results list, because
@@ -450,6 +441,6 @@
     result = run(expr, List.class);
 
     // validate - expect to fail to read any values
-    Assert.assertEquals(0, result.size());
+    assertEquals(0, result.size());
   }
 }
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/IntervalPredicateTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/IntervalPredicateTest.java
index 8a0ea62..ae387b6 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/IntervalPredicateTest.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/IntervalPredicateTest.java
@@ -20,14 +20,14 @@
 package org.apache.metron.profiler.client.stellar;
 
 import org.apache.commons.lang3.Range;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
-import java.util.Date;
 import java.util.List;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class IntervalPredicateTest {
   @Test
   public void testBasicTest() {
@@ -37,11 +37,11 @@
       add(Range.between(40L, 50L));
     }};
     IntervalPredicate<Long> predicate = new IntervalPredicate.Identity(intervals);
-    Assert.assertTrue(predicate.test(0L));
-    Assert.assertTrue(predicate.test(10L));
-    Assert.assertTrue(predicate.test(5L));
-    Assert.assertFalse(predicate.test(51L));
-    Assert.assertFalse(predicate.test(15L));
+    assertTrue(predicate.test(0L));
+    assertTrue(predicate.test(10L));
+    assertTrue(predicate.test(5L));
+    assertFalse(predicate.test(51L));
+    assertFalse(predicate.test(15L));
   }
 
   @Test
@@ -52,14 +52,14 @@
       add(Range.between(40L, 50L));
     }};
     IntervalPredicate<Long> predicate = new IntervalPredicate.Identity(intervals);
-    Assert.assertTrue(predicate.test(0L));
-    Assert.assertTrue(predicate.test(5L));
-    Assert.assertTrue(predicate.test(30L));
-    Assert.assertTrue(predicate.test(10L));
-    Assert.assertFalse(predicate.test(51L));
-    Assert.assertTrue(predicate.test(15L));
-    Assert.assertFalse(predicate.test(31L));
-    Assert.assertTrue(predicate.test(45L));
+    assertTrue(predicate.test(0L));
+    assertTrue(predicate.test(5L));
+    assertTrue(predicate.test(30L));
+    assertTrue(predicate.test(10L));
+    assertFalse(predicate.test(51L));
+    assertTrue(predicate.test(15L));
+    assertFalse(predicate.test(31L));
+    assertTrue(predicate.test(45L));
   }
 
   @Test
@@ -68,11 +68,11 @@
       add(Range.between(0L, 10L));
     }};
     IntervalPredicate<Long> predicate = new IntervalPredicate.Identity(intervals);
-    Assert.assertTrue(predicate.test(0L));
-    Assert.assertTrue(predicate.test(5L));
-    Assert.assertTrue(predicate.test(10L));
-    Assert.assertFalse(predicate.test(51L));
-    Assert.assertFalse(predicate.test(15L));
+    assertTrue(predicate.test(0L));
+    assertTrue(predicate.test(5L));
+    assertTrue(predicate.test(10L));
+    assertFalse(predicate.test(51L));
+    assertFalse(predicate.test(15L));
   }
 
   @Test
@@ -81,9 +81,9 @@
       add(Range.between(10L, 10L));
     }};
     IntervalPredicate<Long> predicate = new IntervalPredicate.Identity(intervals);
-    Assert.assertFalse(predicate.test(0L));
-    Assert.assertFalse(predicate.test(5L));
-    Assert.assertTrue(predicate.test(10L));
-    Assert.assertFalse(predicate.test(11L));
+    assertFalse(predicate.test(0L));
+    assertFalse(predicate.test(5L));
+    assertTrue(predicate.test(10L));
+    assertFalse(predicate.test(11L));
   }
 }
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/VerboseProfileTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/VerboseProfileTest.java
index ee02bd5..1a96460 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/VerboseProfileTest.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/VerboseProfileTest.java
@@ -20,26 +20,6 @@
 
 package org.apache.metron.profiler.client.stellar;
 
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.ENTITY_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.GROUPS_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.PERIOD_END_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.PERIOD_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.PERIOD_START_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.PROFILE_KEY;
-import static org.apache.metron.profiler.client.stellar.VerboseProfile.VALUE_KEY;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.TimeUnit;
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.metron.hbase.TableProvider;
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
@@ -53,9 +33,15 @@
 import org.apache.metron.stellar.common.StellarStatefulExecutor;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.*;
+import static org.apache.metron.profiler.client.stellar.VerboseProfile.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the VerboseProfile class.
@@ -76,7 +62,7 @@
 
   private Map<String, Object> globals;
 
-  @Before
+  @BeforeEach
   public void setup() {
     state = new HashMap<>();
     final Table table = MockHBaseTableProvider.addToCache(tableName, columnFamily);
@@ -128,15 +114,15 @@
     // expect to see all values over the past 4 hours
     List<Map<String, Object>> results;
     results = run("PROFILE_VERBOSE('profile1', 'entity1', PROFILE_FIXED(4, 'HOURS'))", List.class);
-    Assert.assertEquals(count, results.size());
+    assertEquals(count, results.size());
     for(Map<String, Object> actual: results) {
-      Assert.assertEquals("profile1", actual.get(PROFILE_KEY));
-      Assert.assertEquals("entity1", actual.get(ENTITY_KEY));
-      Assert.assertNotNull(actual.get(PERIOD_KEY));
-      Assert.assertNotNull(actual.get(PERIOD_START_KEY));
-      Assert.assertNotNull(actual.get(PERIOD_END_KEY));
-      Assert.assertNotNull(actual.get(GROUPS_KEY));
-      Assert.assertEquals(expectedValue, actual.get(VALUE_KEY));
+      assertEquals("profile1", actual.get(PROFILE_KEY));
+      assertEquals("entity1", actual.get(ENTITY_KEY));
+      assertNotNull(actual.get(PERIOD_KEY));
+      assertNotNull(actual.get(PERIOD_START_KEY));
+      assertNotNull(actual.get(PERIOD_END_KEY));
+      assertNotNull(actual.get(GROUPS_KEY));
+      assertEquals(expectedValue, actual.get(VALUE_KEY));
     }
   }
 
@@ -162,15 +148,15 @@
     // expect to see all values over the past 4 hours for the group
     List<Map<String, Object>> results;
     results = run("PROFILE_VERBOSE('profile1', 'entity1', PROFILE_FIXED(4, 'HOURS'), groups)", List.class);
-    Assert.assertEquals(count, results.size());
+    assertEquals(count, results.size());
     for(Map<String, Object> actual: results) {
-      Assert.assertEquals("profile1", actual.get(PROFILE_KEY));
-      Assert.assertEquals("entity1", actual.get(ENTITY_KEY));
-      Assert.assertNotNull(actual.get(PERIOD_KEY));
-      Assert.assertNotNull(actual.get(PERIOD_START_KEY));
-      Assert.assertNotNull(actual.get(PERIOD_END_KEY));
-      Assert.assertNotNull(actual.get(GROUPS_KEY));
-      Assert.assertEquals(expectedValue, actual.get(VALUE_KEY));
+      assertEquals("profile1", actual.get(PROFILE_KEY));
+      assertEquals("entity1", actual.get(ENTITY_KEY));
+      assertNotNull(actual.get(PERIOD_KEY));
+      assertNotNull(actual.get(PERIOD_START_KEY));
+      assertNotNull(actual.get(PERIOD_END_KEY));
+      assertNotNull(actual.get(GROUPS_KEY));
+      assertEquals(expectedValue, actual.get(VALUE_KEY));
     }
   }
 
@@ -191,7 +177,7 @@
     // expect to get NO measurements over the past 4 seconds
     List<Map<String, Object>> result;
     result = run("PROFILE_VERBOSE('profile1', 'entity1', PROFILE_FIXED(4, 'SECONDS'))", List.class);
-    Assert.assertEquals(0, result.size());
+    assertEquals(0, result.size());
   }
 
   @Test
@@ -205,17 +191,17 @@
     List<Map<String, Object>> results = run(expr, List.class);
 
     // expect to get the default value instead of no results
-    Assert.assertTrue(results.size() == 16 || results.size() == 17);
+    assertTrue(results.size() == 16 || results.size() == 17);
     for(Map<String, Object> actual: results) {
-      Assert.assertEquals("profile1", actual.get(PROFILE_KEY));
-      Assert.assertEquals("entity1", actual.get(ENTITY_KEY));
-      Assert.assertNotNull(actual.get(PERIOD_KEY));
-      Assert.assertNotNull(actual.get(PERIOD_START_KEY));
-      Assert.assertNotNull(actual.get(PERIOD_END_KEY));
-      Assert.assertNotNull(actual.get(GROUPS_KEY));
+      assertEquals("profile1", actual.get(PROFILE_KEY));
+      assertEquals("entity1", actual.get(ENTITY_KEY));
+      assertNotNull(actual.get(PERIOD_KEY));
+      assertNotNull(actual.get(PERIOD_START_KEY));
+      assertNotNull(actual.get(PERIOD_END_KEY));
+      assertNotNull(actual.get(GROUPS_KEY));
 
       // expect the default value
-      Assert.assertEquals(defaultVal, actual.get(VALUE_KEY));
+      assertEquals(defaultVal, actual.get(VALUE_KEY));
     }
 
   }
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/WindowLookbackTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/WindowLookbackTest.java
index df6235f..ea4d65b 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/WindowLookbackTest.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/stellar/WindowLookbackTest.java
@@ -20,27 +20,28 @@
 package org.apache.metron.profiler.client.stellar;
 
 import org.apache.commons.lang3.Range;
+import org.apache.metron.profiler.ProfilePeriod;
+import org.apache.metron.profiler.client.window.WindowProcessor;
+import org.apache.metron.stellar.common.StellarProcessor;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.functions.resolver.FunctionResolver;
 import org.apache.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
-import org.apache.metron.stellar.common.StellarProcessor;
-import org.apache.metron.profiler.ProfilePeriod;
-import org.apache.metron.profiler.client.window.WindowProcessor;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import java.util.*;
 import java.util.concurrent.TimeUnit;
 import java.util.function.Predicate;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class WindowLookbackTest {
 
   static FunctionResolver resolver;
   static Context context;
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     resolver = new SimpleFunctionResolver()
                     .withClass(GetProfile.class)
@@ -52,7 +53,7 @@
   }
 
   @Test
-  public void testSpecifyingConfig() throws Exception {
+  public void testSpecifyingConfig() {
     //we should be able to specify the config and have it take hold.  If we change the
     //profile duration to 1 minute instead of 15 minutes (the default), then we should see
     //the correct number of profiles.
@@ -62,7 +63,7 @@
     config.put(ProfilerClientConfig.PROFILER_PERIOD.getKey(), 1);
 
     State state = test("1 hour", new Date(), Optional.of(config), Assertions.NOT_EMPTY, Assertions.CONTIGUOUS);
-    Assert.assertEquals(TimeUnit.HOURS.toMillis(1) / durationMs, state.periods.size());
+    assertEquals(TimeUnit.HOURS.toMillis(1) / durationMs, state.periods.size());
   }
 
   @Test
@@ -75,41 +76,46 @@
                                                                     , resolver
                                                                     , context
                                                                     );
-    Assert.assertEquals(TimeUnit.HOURS.toMillis(1) / getDurationMs(), periods.size());
+    assertEquals(TimeUnit.HOURS.toMillis(1) / getDurationMs(), periods.size());
   }
 
   @Test
-  public void testDenseLookback() throws Exception {
+  public void testDenseLookback() {
     State state = test("1 hour", Assertions.NOT_EMPTY, Assertions.CONTIGUOUS);
-    Assert.assertEquals(TimeUnit.HOURS.toMillis(1) / getDurationMs(), state.periods.size());
+    assertEquals(TimeUnit.HOURS.toMillis(1) / getDurationMs(), state.periods.size());
   }
 
   @Test
-  public void testShiftedDenseLookback() throws Exception {
+  public void testShiftedDenseLookback() {
     State state = test("from 2 hours ago to 30 minutes ago", Assertions.NOT_EMPTY
                                                            , Assertions.CONTIGUOUS
                                                            , Assertions.INTERVALS_CONTAIN_ALL_PERIODS
                                                            );
-    Assert.assertEquals(TimeUnit.MINUTES.toMillis(90) / getDurationMs(), state.periods.size());
+    assertEquals(TimeUnit.MINUTES.toMillis(90) / getDurationMs(), state.periods.size());
   }
 
   @Test
-  public void testShiftedSparseLookback() throws Exception {
+  public void testShiftedSparseLookback() {
     State state = test("30 minute window every 1 hour from 2 hours ago to 30 minutes ago", Assertions.NOT_EMPTY
                                                                                          , Assertions.DISCONTIGUOUS
                                                                                          , Assertions.INTERVALS_CONTAIN_ALL_PERIODS
                                                                                          );
-    Assert.assertEquals(TimeUnit.MINUTES.toMillis(60) / getDurationMs(), state.periods.size());
+    assertEquals(TimeUnit.MINUTES.toMillis(60) / getDurationMs(), state.periods.size());
   }
 
   @Test
-  public void testEmptyDueToExclusions() throws Exception {
+  public void testEmptyDueToExclusions() {
     test("30 minute window every 24 hours from 7 days ago including saturdays excluding weekends", Assertions.EMPTY);
   }
 
-  @Test(expected= ParseException.class)
-  public void testErrorInSelector() throws Exception {
-    test("30 minute idow every 24 hours from 7 days ago including saturdays excluding weekends", Assertions.EMPTY);
+  @Test
+  public void testErrorInSelector() {
+    assertThrows(
+        ParseException.class,
+        () ->
+            test(
+                "30 minute idow every 24 hours from 7 days ago including saturdays excluding weekends",
+                Assertions.EMPTY));
   }
 
   long getDurationMs() {
@@ -141,7 +147,7 @@
                                                                     );
     State state = new State(windowIntervals, periods);
     for(Assertions assertion : assertions) {
-      Assert.assertTrue(assertion.name(), assertion.test(state));
+      assertTrue(assertion.test(state), assertion.name());
     }
     return state;
   }
diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/window/WindowProcessorTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/window/WindowProcessorTest.java
index 1b8d55d..d0960bf 100644
--- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/window/WindowProcessorTest.java
+++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/window/WindowProcessorTest.java
@@ -20,8 +20,7 @@
 package org.apache.metron.profiler.client.window;
 
 import org.apache.commons.lang3.Range;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.text.ParseException;
 import java.text.SimpleDateFormat;
@@ -29,6 +28,9 @@
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 /**
  * On any test case where we explicitly include or exclude days of the week, in 24hr periods,
  * we need to understand that on Daylight Savings Time (DST) transition weekends,
@@ -48,9 +50,9 @@
       Window w = WindowProcessor.process(text);
       Date now = new Date();
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(1, intervals.size());
-      Assert.assertEquals(now.getTime(), (long)intervals.get(0).getMaximum());
-      Assert.assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(1), (long)intervals.get(0).getMinimum());
+      assertEquals(1, intervals.size());
+      assertEquals(now.getTime(), (long)intervals.get(0).getMaximum());
+      assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(1), (long)intervals.get(0).getMinimum());
     }
   }
 
@@ -69,9 +71,9 @@
      */
       Date now = new Date();
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(1, intervals.size());
-      assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(2), intervals.get(0).getMinimum());
-      assertEquals(now.getTime() - TimeUnit.MINUTES.toMillis(30), intervals.get(0).getMaximum());
+      assertEquals(1, intervals.size());
+      assertTimeEquals(now.getTime() - TimeUnit.HOURS.toMillis(2), intervals.get(0).getMinimum());
+      assertTimeEquals(now.getTime() - TimeUnit.MINUTES.toMillis(30), intervals.get(0).getMaximum());
     }
   }
 
@@ -93,7 +95,7 @@
      */
       Date now = new Date();
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(2, intervals.size());
+      assertEquals(2, intervals.size());
       assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(2), intervals.get(0).getMinimum());
       assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(30), intervals.get(0).getMaximum());
       assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(1), intervals.get(1).getMinimum());
@@ -114,16 +116,16 @@
      */
     Date now = new Date();
     List<Range<Long>> intervals = w.toIntervals(now.getTime());
-    Assert.assertEquals(3, intervals.size());
+    assertEquals(3, intervals.size());
 
-    assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(3), intervals.get(0).getMinimum());
-    assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(3) + TimeUnit.MINUTES.toMillis(30), intervals.get(0).getMaximum());
+    assertTimeEquals(now.getTime() - TimeUnit.HOURS.toMillis(3), intervals.get(0).getMinimum());
+    assertTimeEquals(now.getTime() - TimeUnit.HOURS.toMillis(3) + TimeUnit.MINUTES.toMillis(30), intervals.get(0).getMaximum());
 
-    assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(2), intervals.get(1).getMinimum());
-    assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(30), intervals.get(1).getMaximum());
+    assertTimeEquals(now.getTime() - TimeUnit.HOURS.toMillis(2), intervals.get(1).getMinimum());
+    assertTimeEquals(now.getTime() - TimeUnit.HOURS.toMillis(2) + TimeUnit.MINUTES.toMillis(30), intervals.get(1).getMaximum());
 
-    assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(1), intervals.get(2).getMinimum());
-    assertEquals(now.getTime() - TimeUnit.HOURS.toMillis(1) + TimeUnit.MINUTES.toMillis(30), intervals.get(2).getMaximum());
+    assertTimeEquals(now.getTime() - TimeUnit.HOURS.toMillis(1), intervals.get(2).getMinimum());
+    assertTimeEquals(now.getTime() - TimeUnit.HOURS.toMillis(1) + TimeUnit.MINUTES.toMillis(30), intervals.get(2).getMaximum());
   }
 
   @Test
@@ -138,7 +140,7 @@
       Date now = new Date();
       now.setHours(6); //avoid DST impacts if near Midnight
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(2, intervals.size());
+      assertEquals(2, intervals.size());
     }
     {
       Window w = WindowProcessor.process("30 minute window every 24 hours from 14 days ago including this day of the week");
@@ -150,7 +152,7 @@
       Date now = new Date();
       now.setHours(6); //avoid DST impacts if near Midnight
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(2, intervals.size());
+      assertEquals(2, intervals.size());
     }
     {
       Window w = WindowProcessor.process("30 minute window every 24 hours from 14 days ago");
@@ -161,29 +163,29 @@
      */
       Date now = new Date();
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(14, intervals.size());
+      assertEquals(14, intervals.size());
     }
   }
 
 
   @Test
-  public void testRepeatWithConflictingExclusionInclusion() throws ParseException {
+  public void testRepeatWithConflictingExclusionInclusion() {
     Window w = WindowProcessor.process("30 minute window every 24 hours from 7 days ago including saturdays excluding weekends");
 
     Date now = new Date();
     now.setHours(6); //avoid DST impacts if near Midnight
     List<Range<Long>> intervals = w.toIntervals(now.getTime());
-    Assert.assertEquals(0, intervals.size());
+    assertEquals(0, intervals.size());
   }
 
   @Test
-  public void testRepeatWithWeekendExclusion() throws ParseException {
+  public void testRepeatWithWeekendExclusion() {
     Window w = WindowProcessor.process("30 minute window every 24 hours from 7 days ago excluding weekends");
 
     Date now = new Date();
     now.setHours(6); //avoid DST impacts if near Midnight
     List<Range<Long>> intervals = w.toIntervals(now.getTime());
-    Assert.assertEquals(5, intervals.size());
+    assertEquals(5, intervals.size());
   }
 
   @Test
@@ -193,7 +195,7 @@
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
     Date now = sdf.parse("2017/12/26 12:00");
     List<Range<Long>> intervals = w.toIntervals(now.getTime());
-    Assert.assertEquals(1, intervals.size());
+    assertEquals(1, intervals.size());
   }
 
   @Test
@@ -203,7 +205,7 @@
 
       Date now = new Date();
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(56, intervals.size());
+      assertEquals(56, intervals.size());
     }
     {
       Window w = WindowProcessor.process("1 hour window every 24 hours starting from 56 days ago including this day of the week");
@@ -211,7 +213,7 @@
       Date now = new Date();
       now.setHours(6); //avoid DST impacts if near Midnight
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(8, intervals.size());
+      assertEquals(8, intervals.size());
     }
   }
 
@@ -222,7 +224,7 @@
     Date now = new Date();
     now.setHours(6); //avoid DST impacts if near Midnight
     List<Range<Long>> intervals = w.toIntervals(now.getTime());
-    Assert.assertEquals(2, intervals.size());
+    assertEquals(2, intervals.size());
   }
 
   @Test
@@ -232,21 +234,21 @@
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
       Date now = sdf.parse("2017/12/26 12:00");
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(13, intervals.size());
+      assertEquals(13, intervals.size());
     }
     {
       Window w = WindowProcessor.process("30 minute window every 24 hours from 14 days ago excluding holidays:us:nyc");
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
       Date now = sdf.parse("2017/12/26 12:00");
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(13, intervals.size());
+      assertEquals(13, intervals.size());
     }
     {
       Window w = WindowProcessor.process("30 minute window every 24 hours from 14 days ago excluding holidays:us");
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
       Date now = sdf.parse("2017/08/26 12:00");
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(14, intervals.size());
+      assertEquals(14, intervals.size());
     }
   }
 
@@ -262,66 +264,80 @@
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
       Date now = sdf.parse("2017/12/26 12:00");
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(1, intervals.size());
+      assertEquals(1, intervals.size());
       Date includedDate = new Date(intervals.get(0).getMinimum());
       SimpleDateFormat equalityFormat = new SimpleDateFormat("yyyyMMdd");
-      Assert.assertEquals("20171225", equalityFormat.format(includedDate));
+      assertEquals("20171225", equalityFormat.format(includedDate));
     }
     {
       Window w = WindowProcessor.process("30 minute window every 24 hours from 14 days ago excluding date:2017/12/25");
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
       Date now = sdf.parse("2017/12/26 12:00");
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(13, intervals.size());
+      assertEquals(13, intervals.size());
     }
     {
       Window w = WindowProcessor.process("30 minute window every 24 hours from 14 days ago including date:2017/12/25, date:2017/12/24");
       SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
       Date now = sdf.parse("2017/12/26 12:00");
       List<Range<Long>> intervals = w.toIntervals(now.getTime());
-      Assert.assertEquals(2, intervals.size());
+      assertEquals(2, intervals.size());
       {
         Date includedDate = new Date(intervals.get(0).getMinimum());
         SimpleDateFormat equalityFormat = new SimpleDateFormat("yyyyMMdd");
-        Assert.assertEquals("20171224", equalityFormat.format(includedDate));
+        assertEquals("20171224", equalityFormat.format(includedDate));
       }
       {
         Date includedDate = new Date(intervals.get(1).getMinimum());
         SimpleDateFormat equalityFormat = new SimpleDateFormat("yyyyMMdd");
-        Assert.assertEquals("20171225", equalityFormat.format(includedDate));
+        assertEquals("20171225", equalityFormat.format(includedDate));
       }
     }
   }
 
-  @Test(expected=org.apache.metron.stellar.dsl.ParseException.class)
-  public void testWithInvalidDaySpecifier() throws ParseException {
-    WindowProcessor.process("30 minute window every 24 hours from 14 days ago excluding hoolidays:us");
+  @Test
+  public void testWithInvalidDaySpecifier() {
+    assertThrows(
+        org.apache.metron.stellar.dsl.ParseException.class,
+        () ->
+            WindowProcessor.process(
+                "30 minute window every 24 hours from 14 days ago excluding hoolidays:us"));
   }
 
-  @Test(expected=org.apache.metron.stellar.dsl.ParseException.class)
-  public void testWithInvalidTimeUnit() throws ParseException {
-    WindowProcessor.process("30 minute window every 24 months from 14 days ago");
+  @Test
+  public void testWithInvalidTimeUnit() {
+    assertThrows(
+        org.apache.metron.stellar.dsl.ParseException.class,
+        () -> WindowProcessor.process("30 minute window every 24 months from 14 days ago"));
   }
 
-  @Test(expected=org.apache.metron.stellar.dsl.ParseException.class)
-  public void testWithInvalidWindowUnit() throws ParseException {
-    WindowProcessor.process("30 minuete window every 24 hours from 14 days ago");
+  @Test
+  public void testWithInvalidWindowUnit() {
+    assertThrows(
+        org.apache.metron.stellar.dsl.ParseException.class,
+        () -> WindowProcessor.process("30 minuete window every 24 hours from 14 days ago"));
   }
 
-  @Test(expected=org.apache.metron.stellar.dsl.ParseException.class)
-  public void testWithInvalidTimeNumber() throws ParseException {
-    WindowProcessor.process("30p minute window every 24 hours from 14 days ago");
+  @Test
+  public void testWithInvalidTimeNumber() {
+    assertThrows(
+        org.apache.metron.stellar.dsl.ParseException.class,
+        () -> WindowProcessor.process("30p minute window every 24 hours from 14 days ago"));
   }
 
-  @Test(expected=org.apache.metron.stellar.dsl.ParseException.class)
-  public void testInvalidDaySpecifier() throws ParseException {
-    WindowProcessor.process("30 minute window every 14 hours from 14 days ago including date");
+  @Test
+  public void testInvalidDaySpecifier() {
+    assertThrows(
+        org.apache.metron.stellar.dsl.ParseException.class,
+        () ->
+            WindowProcessor.process(
+                "30 minute window every 14 hours from 14 days ago including date"));
   }
 
-  private static void assertEquals(long expected, long actual) {
+  private static void assertTimeEquals(long expected, long actual) {
     long diff = expected - actual;
     long diffInMinutes = TimeUnit.MILLISECONDS.toMinutes(diff);
     String message =  expected + " - " + actual + " = " + diffInMinutes + " minutes off.";
-    Assert.assertEquals(message, expected, actual);
+    assertEquals(expected, actual, message);
   }
 }
diff --git a/metron-analytics/metron-profiler-common/pom.xml b/metron-analytics/metron-profiler-common/pom.xml
index 13d5abe..fed349e 100644
--- a/metron-analytics/metron-profiler-common/pom.xml
+++ b/metron-analytics/metron-profiler-common/pom.xml
@@ -79,8 +79,26 @@
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
-            <artifactId>mockito-all</artifactId>
-            <version>${global_mockito_version}</version>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.adrianwalker</groupId>
+            <artifactId>multiline-string</artifactId>
+            <version>0.1.2</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageDistributorTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageDistributorTest.java
index cf11eb7..eb64bb7 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageDistributorTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageDistributorTest.java
@@ -27,15 +27,15 @@
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 import static java.util.concurrent.TimeUnit.*;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class DefaultMessageDistributorTest {
 
@@ -89,7 +89,7 @@
   private long profileTimeToLiveMillis = MINUTES.toMillis(30);
   private long maxNumberOfRoutes = Long.MAX_VALUE;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     context = Context.EMPTY_CONTEXT();
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageRouterTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageRouterTest.java
index f583c30..474ba01 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageRouterTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultMessageRouterTest.java
@@ -25,13 +25,13 @@
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class DefaultMessageRouterTest {
 
@@ -214,7 +214,7 @@
     return JSONUtils.INSTANCE.load(json, ProfilerConfig.class);
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     this.router = new DefaultMessageRouter(Context.EMPTY_CONTEXT());
     this.context = Context.EMPTY_CONTEXT();
@@ -303,7 +303,7 @@
    */
   @Test
   public void testMessageWithTimestamp() throws Exception {
-    List<MessageRoute> routes = router.route(messageWithTimestamp, createConfig(profileWithEventTime), context);;
+    List<MessageRoute> routes = router.route(messageWithTimestamp, createConfig(profileWithEventTime), context);
 
     assertEquals(1, routes.size());
     MessageRoute route1 = routes.get(0);
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultProfileBuilderTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultProfileBuilderTest.java
index 3d0b4cc..47840c9 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultProfileBuilderTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/DefaultProfileBuilderTest.java
@@ -26,16 +26,14 @@
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 
 import static org.apache.metron.stellar.common.utils.ConversionUtils.convert;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the ProfileBuilder class.
@@ -51,12 +49,12 @@
    * }
    */
   @Multiline
-  private String input;
+  private static String input;
   private JSONObject message;
   private ProfileBuilder builder;
   private ProfileConfig definition;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     message = (JSONObject) new JSONParser().parse(input);
   }
@@ -73,7 +71,7 @@
    * }
    */
   @Multiline
-  private String testInitProfile;
+  private static String testInitProfile;
 
   /**
    * Ensure that the 'init' block is executed correctly.
@@ -141,7 +139,7 @@
    * }
    */
   @Multiline
-  private String testUpdateProfile;
+  private static String testUpdateProfile;
 
   /**
    * Ensure that the 'update' expressions are executed for each message applied to the profile.
@@ -185,7 +183,7 @@
    * }
    */
   @Multiline
-  private String testResultProfile;
+  private static String testResultProfile;
 
   /**
    * Ensure that the result expression is executed on a flush.
@@ -264,7 +262,7 @@
    * }
    */
   @Multiline
-  private String testGroupByProfile;
+  private static String testGroupByProfile;
 
   /**
    * Ensure that the 'groupBy' expression is executed correctly.
@@ -303,7 +301,7 @@
    * }
    */
   @Multiline
-  private String testStateAvailableToGroupBy;
+  private static String testStateAvailableToGroupBy;
 
   /**
    * The 'groupBy' expression should be able to reference information about the profile including
@@ -330,12 +328,12 @@
 
     // validate all values that should be accessible by the groupBy expression(s)
     assertEquals(6, m.get().getGroups().size());
-    assertEquals("invalid profile", "test-profile", m.get().getGroups().get(0));
-    assertEquals("invalid entity", "10.0.0.1", m.get().getGroups().get(1));
-    assertEquals("invalid start", period.getStartTimeMillis(), m.get().getGroups().get(2));
-    assertEquals("invalid end", period.getEndTimeMillis(), m.get().getGroups().get(3));
-    assertEquals("invalid duration", period.getDurationMillis(), m.get().getGroups().get(4));
-    assertEquals("invalid result", 100, m.get().getGroups().get(5));
+    assertEquals("test-profile", m.get().getGroups().get(0), "invalid profile");
+    assertEquals("10.0.0.1", m.get().getGroups().get(1), "invalid entity");
+    assertEquals(period.getStartTimeMillis(), m.get().getGroups().get(2), "invalid start");
+    assertEquals(period.getEndTimeMillis(), m.get().getGroups().get(3), "invalid end");
+    assertEquals(period.getDurationMillis(), m.get().getGroups().get(4), "invalid duration");
+    assertEquals(100, m.get().getGroups().get(5), "invalid result");
   }
 
   /**
@@ -354,7 +352,7 @@
    * }
    */
   @Multiline
-  private String testFlushProfile;
+  private static String testFlushProfile;
 
   @Test
   public void testFlushDoesNotClearsState() throws Exception {
@@ -409,7 +407,7 @@
    * }
    */
   @Multiline
-  private String testFlushProfileWithNaiveInit;
+  private static String testFlushProfileWithNaiveInit;
 
   @Test
   public void testFlushDoesNotClearsStateButInitDoes() throws Exception {
@@ -456,7 +454,7 @@
    * }
    */
   @Multiline
-  private String testEntityProfile;
+  private static String testEntityProfile;
 
   /**
    * Ensure that the entity is correctly set on the resulting profile measurements.
@@ -497,7 +495,7 @@
    * }
    */
   @Multiline
-  private String testResultWithProfileExpression;
+  private static String testResultWithProfileExpression;
 
   /**
    * Ensure that the result expression is executed on a flush.
@@ -541,7 +539,7 @@
    * }
    */
   @Multiline
-  private String testResultWithTriageExpression;
+  private static String testResultWithTriageExpression;
 
   /**
    * Ensure that the result expression is executed on a flush.
@@ -581,7 +579,7 @@
    * }
    */
   @Multiline
-  private String badInitProfile;
+  private static String badInitProfile;
 
   @Test
   public void testBadInitExpression() throws Exception {
@@ -612,7 +610,7 @@
    * }
    */
   @Multiline
-  private String badSimpleResultProfile;
+  private static String badSimpleResultProfile;
 
   @Test
   public void testBadResultExpression() throws Exception {
@@ -643,7 +641,7 @@
    * }
    */
   @Multiline
-  private String badGroupByProfile;
+  private static String badGroupByProfile;
 
   @Test
   public void testBadGroupByExpression() throws Exception {
@@ -678,7 +676,7 @@
    * }
    */
   @Multiline
-  private String badResultProfile;
+  private static String badResultProfile;
 
   @Test
   public void testBadResultProfileExpression() throws Exception {
@@ -713,7 +711,7 @@
    * }
    */
   @Multiline
-  private String badResultTriage;
+  private static String badResultTriage;
 
   @Test
   public void testBadResultTriageExpression() throws Exception {
@@ -743,7 +741,7 @@
    * }
    */
   @Multiline
-  private String badUpdateProfile;
+  private static String badUpdateProfile;
 
   /**
    * If the 'init' expression succeeds, but the 'update' fails, the profile should still flush.  We cannot
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/ProfileMeasurementTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/ProfileMeasurementTest.java
index b25e694..6865de8 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/ProfileMeasurementTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/ProfileMeasurementTest.java
@@ -25,9 +25,8 @@
 import com.esotericsoftware.kryo.io.Output;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.configuration.profiler.ProfileConfig;
-import org.apache.metron.common.utils.SerDeUtils;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -36,9 +35,7 @@
 import java.util.Collections;
 import java.util.concurrent.TimeUnit;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ProfileMeasurementTest {
 
@@ -61,7 +58,7 @@
   private ProfileConfig definition;
   private ProfileMeasurement measurement;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     definition = ProfileConfig.fromJSON(profile);
     measurement = new ProfileMeasurement()
@@ -78,7 +75,7 @@
    * occurs when the Profiler is running in Storm.
    */
   @Test
-  public void testKryoSerialization() throws Exception {
+  public void testKryoSerialization() {
     assertNotNull(measurement);
     Kryo kryo = new Kryo();
 
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/ProfilePeriodTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/ProfilePeriodTest.java
index afb6299..e4779bc 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/ProfilePeriodTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/ProfilePeriodTest.java
@@ -23,8 +23,7 @@
 import com.esotericsoftware.kryo.Kryo;
 import com.esotericsoftware.kryo.io.Input;
 import com.esotericsoftware.kryo.io.Output;
-import org.apache.metron.common.utils.SerDeUtils;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -33,9 +32,7 @@
 import java.util.concurrent.TimeUnit;
 import java.util.stream.IntStream;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the ProfilePeriod class.
@@ -128,11 +125,11 @@
     });
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testPeriodDurationOfZero() {
     long duration = 0;
     TimeUnit units = TimeUnit.HOURS;
-    ProfilePeriod.fromTimestamp(0, duration, units);
+    assertThrows(IllegalArgumentException.class, () -> ProfilePeriod.fromTimestamp(0, duration, units));
   }
 
   /**
@@ -140,7 +137,7 @@
    * occurs when the Profiler is running in Storm.
    */
   @Test
-  public void testKryoSerialization() throws Exception {
+  public void testKryoSerialization() {
     ProfilePeriod expected = ProfilePeriod.fromTimestamp(AUG2016, 1, TimeUnit.HOURS);
     Kryo kryo = new Kryo();
 
@@ -203,9 +200,11 @@
     assertEquals(expected, actual);
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testWithNegativePeriodId() {
-    ProfilePeriod.fromPeriodId(-1, 1, TimeUnit.HOURS);
+    assertThrows(
+        IllegalArgumentException.class, () -> ProfilePeriod.fromPeriodId(-1, 1, TimeUnit.HOURS)
+    );
   }
 
   /**
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/DefaultClockFactoryTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/DefaultClockFactoryTest.java
index c99b401..4887df8 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/DefaultClockFactoryTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/DefaultClockFactoryTest.java
@@ -19,14 +19,14 @@
  */
 package org.apache.metron.profiler.clock;
 
-import static org.junit.Assert.assertTrue;
-
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Optional;
 
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Tests the DefaultClockFactory.
  */
@@ -37,7 +37,7 @@
    */
   private DefaultClockFactory clockFactory;
 
-  @Before
+  @BeforeEach
   public void setup() {
     clockFactory = new DefaultClockFactory();
   }
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/EventTimeClockTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/EventTimeClockTest.java
index 0397250..ad825d6 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/EventTimeClockTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/EventTimeClockTest.java
@@ -20,13 +20,11 @@
 package org.apache.metron.profiler.clock;
 
 import org.json.simple.JSONObject;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Optional;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class EventTimeClockTest {
 
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/EventTimeOnlyClockFactoryTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/EventTimeOnlyClockFactoryTest.java
index f1d4114..035dc87 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/EventTimeOnlyClockFactoryTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/EventTimeOnlyClockFactoryTest.java
@@ -20,13 +20,14 @@
 package org.apache.metron.profiler.clock;
 
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Optional;
 
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 
 /**
  * Tests the {@link EventTimeOnlyClockFactory}.
@@ -35,7 +36,7 @@
 
   private EventTimeOnlyClockFactory clockFactory;
 
-  @Before
+  @BeforeEach
   public void setup() {
     clockFactory = new EventTimeOnlyClockFactory();
   }
@@ -51,11 +52,10 @@
     assertTrue(clock instanceof EventTimeClock);
   }
 
-  @Test(expected = IllegalStateException.class)
+  @Test
   public void testCreateProcessingTimeClock() {
     // the profiler uses processing time by default
     ProfilerConfig config = new ProfilerConfig();
-    clockFactory.createClock(config);
-    fail("Expected exception");
+    assertThrows(IllegalStateException.class, () -> clockFactory.createClock(config));
   }
 }
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/WallClockTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/WallClockTest.java
index 76b2d7b..d34326c 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/WallClockTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/clock/WallClockTest.java
@@ -20,11 +20,11 @@
 package org.apache.metron.profiler.clock;
 
 import org.json.simple.JSONObject;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Optional;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class WallClockTest {
 
diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/hbase/SaltyRowKeyBuilderTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/hbase/SaltyRowKeyBuilderTest.java
index f39659b..7deade7 100644
--- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/hbase/SaltyRowKeyBuilderTest.java
+++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/hbase/SaltyRowKeyBuilderTest.java
@@ -20,23 +20,22 @@
 
 package org.apache.metron.profiler.hbase;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.ProfilePeriod;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
-import java.util.Formatter;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.hamcrest.core.IsEqual.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 
 /**
  * Tests the SaltyRowKeyBuilder.
@@ -53,10 +52,10 @@
   /**
    * Thu, Aug 25 2016 13:27:10 GMT
    */
-  private long AUG2016 = 1472131630748L;
+  private static final long AUG2016 = 1472131630748L;
 
-  @Before
-  public void setup() throws Exception {
+  @BeforeEach
+  public void setup() {
 
     // a profile measurement
     measurement = new ProfileMeasurement()
@@ -71,9 +70,9 @@
    * Build a row key that includes only one group.
    */
   @Test
-  public void testRowKeyWithOneGroup() throws Exception {
+  public void testRowKeyWithOneGroup() {
     // setup
-    measurement.withGroups(Arrays.asList("group1"));
+    measurement.withGroups(Collections.singletonList("group1"));
 
     // the expected row key
     ByteBuffer buffer = ByteBuffer
@@ -90,14 +89,14 @@
 
     // validate
     byte[] actual = rowKeyBuilder.rowKey(measurement);
-    Assert.assertTrue(Arrays.equals(expected, actual));
+    assertArrayEquals(expected, actual);
   }
 
   /**
    * Build a row key that includes two groups.
    */
   @Test
-  public void testRowKeyWithTwoGroups() throws Exception {
+  public void testRowKeyWithTwoGroups() {
     // setup
     measurement.withGroups(Arrays.asList("group1","group2"));
 
@@ -117,16 +116,16 @@
 
     // validate
     byte[] actual = rowKeyBuilder.rowKey(measurement);
-    Assert.assertTrue(Arrays.equals(expected, actual));
+    assertArrayEquals(expected, actual);
   }
 
   /**
    * Build a row key that includes a single group that is an integer.
    */
   @Test
-  public void testRowKeyWithOneIntegerGroup() throws Exception {
+  public void testRowKeyWithOneIntegerGroup() {
     // setup
-    measurement.withGroups(Arrays.asList(200));
+    measurement.withGroups(Collections.singletonList(200));
 
     // the expected row key
     ByteBuffer buffer = ByteBuffer
@@ -143,14 +142,14 @@
 
     // validate
     byte[] actual = rowKeyBuilder.rowKey(measurement);
-    Assert.assertTrue(Arrays.equals(expected, actual));
+    assertArrayEquals(expected, actual);
   }
 
   /**
    * Build a row key that includes a single group that is an integer.
    */
   @Test
-  public void testRowKeyWithMixedGroups() throws Exception {
+  public void testRowKeyWithMixedGroups() {
     // setup
     measurement.withGroups(Arrays.asList(200, "group1"));
 
@@ -170,14 +169,14 @@
 
     // validate
     byte[] actual = rowKeyBuilder.rowKey(measurement);
-    Assert.assertTrue(Arrays.equals(expected, actual));
+    assertArrayEquals(expected, actual);
   }
 
   /**
    * Build a row key that does not include any groups.
    */
   @Test
-  public void testRowKeyWithNoGroup() throws Exception {
+  public void testRowKeyWithNoGroup() {
     // setup
     measurement.withGroups(Collections.emptyList());
 
@@ -195,14 +194,14 @@
 
     // validate
     byte[] actual = rowKeyBuilder.rowKey(measurement);
-    Assert.assertTrue(Arrays.equals(expected, actual));
+    assertArrayEquals(expected, actual);
   }
 
   /**
    * `rowKeys` should return all of the row keys needed to retrieve the profile values over a given time horizon.
    */
   @Test
-  public void testRowKeys() throws Exception {
+  public void testRowKeys() {
     int hoursAgo = 1;
 
     // setup
@@ -244,13 +243,4 @@
       assertThat(actual, equalTo(expected));
     }
   }
-
-  private void printBytes(byte[] bytes) {
-    StringBuilder sb = new StringBuilder(bytes.length * 2);
-    Formatter formatter = new Formatter(sb);
-    for (byte b : bytes) {
-      formatter.format("%02x ", b);
-    }
-    System.out.println(sb.toString());
-  }
 }
diff --git a/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/ProfilerFunctionsTest.java b/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/ProfilerFunctionsTest.java
index 6cf34b0..a2fabfa 100644
--- a/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/ProfilerFunctionsTest.java
+++ b/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/ProfilerFunctionsTest.java
@@ -27,8 +27,8 @@
 import org.apache.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -37,9 +37,7 @@
 
 import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
 import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the ProfilerFunctions class.
@@ -103,7 +101,7 @@
     return executor.execute(expression, state, clazz);
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     state = new HashMap<>();
 
@@ -144,14 +142,16 @@
     assertEquals(0, profiler.getRouteCount());
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testProfilerInitNoArgs() {
-    run("PROFILER_INIT()", StandAloneProfiler.class);
+    assertThrows(ParseException.class, () -> run("PROFILER_INIT()", StandAloneProfiler.class));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testProfilerInitInvalidArg() {
-    run("PROFILER_INIT({ \"invalid\": 2 })", StandAloneProfiler.class);
+    assertThrows(
+        ParseException.class,
+        () -> run("PROFILER_INIT({ \"invalid\": 2 })", StandAloneProfiler.class));
   }
 
   @Test
@@ -272,17 +272,17 @@
     assertEquals(0, profiler.getRouteCount());
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testProfilerApplyWithNoArgs() {
-    run("PROFILER_APPLY()", StandAloneProfiler.class);
+    assertThrows(ParseException.class, () -> run("PROFILER_APPLY()", StandAloneProfiler.class));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testProfilerApplyWithInvalidArg() {
-    run("PROFILER_APPLY(undefined)", StandAloneProfiler.class);
+    assertThrows(ParseException.class, () -> run("PROFILER_APPLY(undefined)", StandAloneProfiler.class));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testProfilerApplyWithNullMessage() {
 
     // initialize the profiler
@@ -291,7 +291,7 @@
     state.put("profiler", profiler);
 
     // there is no 'messages' variable - should throw exception
-    run("PROFILER_APPLY(messages, profiler)", StandAloneProfiler.class);
+    assertThrows(ParseException.class, () -> run("PROFILER_APPLY(messages, profiler)", StandAloneProfiler.class));
   }
 
   @Test
@@ -320,13 +320,13 @@
     assertEquals(Collections.emptyList(), measurement.get("groups"));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testProfilerFlushNoArgs() {
-    run("PROFILER_FLUSH()", StandAloneProfiler.class);
+    assertThrows(ParseException.class, () -> run("PROFILER_FLUSH()", StandAloneProfiler.class));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testProfilerFlushInvalidArg() {
-    run("PROFILER_FLUSH(undefined)", StandAloneProfiler.class);
+    assertThrows(ParseException.class, () -> run("PROFILER_FLUSH(undefined)", StandAloneProfiler.class));
   }
 }
diff --git a/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/StandAloneProfilerTest.java b/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/StandAloneProfilerTest.java
index 8c63a75..b6f18a1 100644
--- a/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/StandAloneProfilerTest.java
+++ b/metron-analytics/metron-profiler-repl/src/test/java/org/apache/metron/profiler/repl/StandAloneProfilerTest.java
@@ -18,7 +18,6 @@
  */
 package org.apache.metron.profiler.repl;
 
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
 import org.apache.metron.common.utils.JSONUtils;
@@ -26,17 +25,18 @@
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
-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;
 
 /**
  * Tests the StandAloneProfiler class.
@@ -104,7 +104,7 @@
 
   private Context context = Context.EMPTY_CONTEXT();
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // parse the input message
diff --git a/metron-analytics/metron-profiler-spark/pom.xml b/metron-analytics/metron-profiler-spark/pom.xml
index 284c174..4d3076f 100644
--- a/metron-analytics/metron-profiler-spark/pom.xml
+++ b/metron-analytics/metron-profiler-spark/pom.xml
@@ -151,6 +151,18 @@
             <version>${project.parent.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/BatchProfilerIntegrationTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/BatchProfilerIntegrationTest.java
index 1e9f32b..bb292ff 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/BatchProfilerIntegrationTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/BatchProfilerIntegrationTest.java
@@ -19,38 +19,6 @@
  */
 package org.apache.metron.profiler.spark;
 
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.hbase.mock.MockHBaseTableProvider;
-import org.apache.metron.profiler.client.stellar.FixedLookback;
-import org.apache.metron.profiler.client.stellar.GetProfile;
-import org.apache.metron.profiler.client.stellar.WindowLookback;
-import org.apache.metron.statistics.StellarStatisticsFunctions;
-import org.apache.metron.stellar.common.DefaultStellarStatefulExecutor;
-import org.apache.metron.stellar.common.StellarStatefulExecutor;
-import org.apache.metron.stellar.dsl.Context;
-import org.apache.metron.stellar.dsl.functions.ConversionFunctions;
-import org.apache.metron.stellar.dsl.functions.DataStructureFunctions;
-import org.apache.metron.stellar.dsl.functions.StringFunctions;
-import org.apache.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
-import org.apache.spark.SparkConf;
-import org.apache.spark.SparkException;
-import org.apache.spark.sql.Encoders;
-import org.apache.spark.sql.SparkSession;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.invoke.MethodHandles;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
 import static org.apache.metron.common.configuration.profiler.ProfilerConfig.fromJSON;
 import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
 import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
@@ -66,11 +34,45 @@
 import static org.apache.metron.profiler.spark.reader.TelemetryReaders.JSON;
 import static org.apache.metron.profiler.spark.reader.TelemetryReaders.ORC;
 import static org.apache.metron.profiler.spark.reader.TelemetryReaders.PARQUET;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+
+import java.lang.invoke.MethodHandles;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Properties;
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.hbase.mock.MockHBaseTableProvider;
+import org.apache.metron.profiler.client.stellar.FixedLookback;
+import org.apache.metron.profiler.client.stellar.GetProfile;
+import org.apache.metron.profiler.client.stellar.WindowLookback;
+import org.apache.metron.statistics.StellarStatisticsFunctions;
+import org.apache.metron.stellar.common.DefaultStellarStatefulExecutor;
+import org.apache.metron.stellar.common.StellarStatefulExecutor;
+import org.apache.metron.stellar.dsl.Context;
+import org.apache.metron.stellar.dsl.functions.DataStructureFunctions;
+import org.apache.metron.stellar.dsl.functions.StringFunctions;
+import org.apache.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
+import org.apache.spark.SparkConf;
+import org.apache.spark.SparkException;
+import org.apache.spark.sql.Encoders;
+import org.apache.spark.sql.SparkSession;
+import org.junit.Rule;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
+import org.junit.rules.TemporaryFolder;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * An integration test for the {@link BatchProfiler}.
  */
+@EnableRuleMigrationSupport
 public class BatchProfilerIntegrationTest {
 
   private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -82,7 +84,7 @@
   @Rule
   public TemporaryFolder tempFolder = new TemporaryFolder();
 
-  @BeforeClass
+  @BeforeAll
   public static void setupSpark() {
     SparkConf conf = new SparkConf()
             .setMaster("local")
@@ -94,14 +96,14 @@
             .getOrCreate();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownSpark() {
     if(spark != null) {
       spark.close();
     }
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     readerProperties = new Properties();
     profilerProperties = new Properties();
@@ -334,14 +336,22 @@
   @Multiline
   private static String invalidProfileJson;
 
-  @Test(expected = SparkException.class)
-  public void testBatchProfilerWithInvalidProfile() throws Exception {
+  @Test
+  public void testBatchProfilerWithInvalidProfile() {
     profilerProperties.put(TELEMETRY_INPUT_READER.getKey(), JSON.toString());
     profilerProperties.put(TELEMETRY_INPUT_PATH.getKey(), "src/test/resources/telemetry.json");
 
     // the batch profiler should error out, if there is a bug in *any* of the profiles
     BatchProfiler profiler = new BatchProfiler();
-    profiler.run(spark, profilerProperties, getGlobals(), readerProperties, fromJSON(invalidProfileJson));
+    assertThrows(
+        SparkException.class,
+        () ->
+            profiler.run(
+                spark,
+                profilerProperties,
+                getGlobals(),
+                readerProperties,
+                fromJSON(invalidProfileJson)));
   }
 
   /**
@@ -390,7 +400,7 @@
      * the data sketch is then retrieved and used to calculate the expected counts as part of the test
      * case validation.
      */
-    
+
     // the 'window' looks up to 5 hours before the max timestamp, which in the test data is around July 7, 2018
     assign("maxTimestamp", "1530978728982L");
     assign("window", "PROFILE_WINDOW('from 5 hours ago', maxTimestamp)");
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/TimestampParserTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/TimestampParserTest.java
index f760b35..5c35e88 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/TimestampParserTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/TimestampParserTest.java
@@ -19,22 +19,19 @@
 
 package org.apache.metron.profiler.spark;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.time.format.DateTimeParseException;
 import java.util.Optional;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class TimestampParserTest {
 
   private TimestampParser parser;
 
-  @Before
+  @BeforeEach
   public void setup() {
     parser = new TimestampParser();
   }
@@ -59,9 +56,8 @@
     assertEquals(1322907330000L, millis.get().longValue());
   }
 
-  @Test(expected = DateTimeParseException.class)
+  @Test
   public void testInvalidFormat() {
-    parser.parse("1537502400000");
-    fail("Expected exception");
+    assertThrows(DateTimeParseException.class, () -> parser.parse("1537502400000"));
   }
 }
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLITest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLITest.java
index 5be195a..9951f31 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLITest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerCLITest.java
@@ -21,7 +21,9 @@
 
 import org.apache.commons.cli.MissingArgumentException;
 import org.apache.commons.cli.MissingOptionException;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 /**
  * Tests the {@link BatchProfilerCLI} class.
@@ -32,56 +34,56 @@
    * The user must provide a Profiler configuration that defines the 'timestampField'.  The
    * Batch Profiler only operates using event time, not processing time.
    */
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void mustDefineTimestampField() throws Exception {
     String[] args = new String[] {
       "--profiles", "src/test/resources/profiles-no-timestamp-field.json"
     };
-    BatchProfilerCLI.main(args);
+    assertThrows(IllegalArgumentException.class, () -> BatchProfilerCLI.main(args));
   }
 
   /**
    * The user must define the -p, --profiles, -z, --zookeeper options.
    * The Profiler cannot work without profiles.
    */
-  @Test(expected = MissingOptionException.class)
-  public void mustDefineProfilesOption() throws Exception {
+  @Test
+  public void mustDefineProfilesOption() {
     String[] args = new String[] {};
-    BatchProfilerCLI.main(args);
+    assertThrows(MissingOptionException.class, () -> BatchProfilerCLI.main(args));
   }
 
   /**
    * The user must define one of  -p, --profiles, -z, --zookeeper options.
    */
-  @Test(expected = IllegalArgumentException.class)
-  public void mustDefineOnlyOneProfilesOption() throws Exception {
+  @Test
+  public void mustDefineOnlyOneProfilesOption() {
     String[] args = new String[] {
             "--profiles", "src/test/resources/profiles-no-timestamp-field.json",
             "--zookeeper", "node1:2181"
     };
-    BatchProfilerCLI.main(args);
+    assertThrows(IllegalArgumentException.class, () -> BatchProfilerCLI.main(args));
   }
 
   /**
    * If a timestamp option is given, it must contain a field name
    */
-  @Test(expected = MissingArgumentException.class)
-  public void mustDefineFieldnametoGoWithTimestamp() throws Exception {
+  @Test
+  public void mustDefineFieldnametoGoWithTimestamp() {
     String[] args = new String[] {
             "--timestampfield"
     };
-    BatchProfilerCLI.main(args);
+    assertThrows(MissingArgumentException.class, () -> BatchProfilerCLI.main(args));
   }
 
 
   /**
    * If the profile definition contains no valid profiles, we have a problem.
    */
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void mustDefineProfiles() throws Exception {
     String[] args = new String[] {
             "--profiles", "src/test/resources/profiles-empty.json"
     };
-    BatchProfilerCLI.main(args);
+    assertThrows(IllegalArgumentException.class, () -> BatchProfilerCLI.main(args));
   }
 }
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerZKIntegrationTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerZKIntegrationTest.java
index d77e775..7b5faf1 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerZKIntegrationTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/cli/BatchProfilerZKIntegrationTest.java
@@ -23,11 +23,13 @@
 import org.apache.metron.common.configuration.ConfigurationsUtils;
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
 import org.apache.metron.integration.TestZKServer;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+
 public class BatchProfilerZKIntegrationTest {
   /**
    * {
@@ -58,7 +60,7 @@
       final ProfilerConfig profiles = BatchProfilerCLI.readProfileFromZK(zkClient);
 
       // compare expected values
-      Assert.assertEquals("Profile read from zookeeper has changes", expectedProfileConfig, profiles);
+      assertEquals(expectedProfileConfig, profiles, "Profile read from zookeeper has changes");
     });
   }
 
@@ -76,7 +78,7 @@
       final ProfilerConfig profiles = BatchProfilerCLI.readProfileFromZK(zkClient);
 
       // compare expected values
-      Assert.assertNotEquals("Profile zookeeper integration test fails to detect change", expectedProfileConfig, profiles);
+      assertNotEquals(expectedProfileConfig, profiles, "Profile zookeeper integration test fails to detect change");
     });
   }
 }
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/GroupByPeriodFunctionTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/GroupByPeriodFunctionTest.java
index 78960c4..6f41e11 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/GroupByPeriodFunctionTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/GroupByPeriodFunctionTest.java
@@ -23,12 +23,13 @@
 import org.apache.metron.profiler.MessageRoute;
 import org.apache.metron.profiler.ProfilePeriod;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class GroupByPeriodFunctionTest {
 
   /**
@@ -55,9 +56,9 @@
     String groupKey = new GroupByPeriodFunction(new Properties()).call(route);
 
     // should be able to extract the profile, entity and period from the group key
-    Assert.assertEquals("my-profile-name", GroupByPeriodFunction.profileFromKey(groupKey));
-    Assert.assertEquals(entity, GroupByPeriodFunction.entityFromKey(groupKey));
-    Assert.assertEquals(periodId, GroupByPeriodFunction.periodFromKey(groupKey));
+    assertEquals("my-profile-name", GroupByPeriodFunction.profileFromKey(groupKey));
+    assertEquals(entity, GroupByPeriodFunction.entityFromKey(groupKey));
+    assertEquals(periodId, GroupByPeriodFunction.periodFromKey(groupKey));
   }
 
 }
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/HBaseWriterFunctionTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/HBaseWriterFunctionTest.java
index a54c9bf..290c635 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/HBaseWriterFunctionTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/HBaseWriterFunctionTest.java
@@ -25,9 +25,8 @@
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.statistics.OnlineStatisticsProvider;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.Iterator;
@@ -37,12 +36,13 @@
 
 import static org.apache.metron.profiler.spark.BatchProfilerConfig.HBASE_COLUMN_FAMILY;
 import static org.apache.metron.profiler.spark.BatchProfilerConfig.HBASE_TABLE_NAME;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class HBaseWriterFunctionTest {
 
   Properties profilerProperties;
 
-  @Before
+  @BeforeEach
   public void setup() {
     profilerProperties = getProfilerProperties();
 
@@ -72,8 +72,8 @@
 
     // validate the result
     List<Integer> counts = IteratorUtils.toList(results);
-    Assert.assertEquals(1, counts.size());
-    Assert.assertEquals(1, counts.get(0).intValue());
+    assertEquals(1, counts.size());
+    assertEquals(1, counts.get(0).intValue());
   }
 
   @Test
@@ -96,8 +96,8 @@
 
     // validate the result
     List<Integer> counts = IteratorUtils.toList(results);
-    Assert.assertEquals(1, counts.size());
-    Assert.assertEquals(10, counts.get(0).intValue());
+    assertEquals(1, counts.size());
+    assertEquals(10, counts.get(0).intValue());
   }
 
   @Test
@@ -115,8 +115,8 @@
 
     // validate the result
     List<Integer> counts = IteratorUtils.toList(results);
-    Assert.assertEquals(1, counts.size());
-    Assert.assertEquals(0, counts.get(0).intValue());
+    assertEquals(1, counts.size());
+    assertEquals(0, counts.get(0).intValue());
   }
 
   /**
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/MessageRouterFunctionTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/MessageRouterFunctionTest.java
index 9a2cbf4..307f5cc 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/MessageRouterFunctionTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/MessageRouterFunctionTest.java
@@ -24,14 +24,12 @@
 import org.apache.metron.common.configuration.profiler.ProfileConfig;
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
 import org.apache.metron.profiler.MessageRoute;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 /**
  * Tests the {@link MessageRouterFunction}.
@@ -63,16 +61,13 @@
     Iterator<MessageRoute> iter = function.call(goodMessage);
 
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(1, routes.size());
-    Assert.assertEquals("profile1", routes.get(0).getProfileDefinition().getProfile());
+    assertEquals(1, routes.size());
+    assertEquals("profile1", routes.get(0).getProfileDefinition().getProfile());
   }
 
-  @Test(expected = IllegalStateException.class)
-  public void testWithSystemTime() throws Exception {
-    MessageRouterFunction function = new MessageRouterFunction(profileWithSystemTime(), getGlobals());
-    Iterator<MessageRoute> iter = function.call(goodMessage);
-
-    Assert.fail("Exception expected as system time is not supported.");
+  @Test
+  public void testWithSystemTime() {
+    assertThrows(IllegalStateException.class, () -> new MessageRouterFunction(profileWithSystemTime(), getGlobals()));
   }
 
   @Test
@@ -82,7 +77,7 @@
 
     // an invalid message should return no routes
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(0, routes.size());
+    assertEquals(0, routes.size());
   }
 
   @Test
@@ -91,9 +86,9 @@
     Iterator<MessageRoute> iter = function.call(goodMessage);
 
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(2, routes.size());
-    Assert.assertEquals("profile1", routes.get(0).getProfileDefinition().getProfile());
-    Assert.assertEquals("profile2", routes.get(1).getProfileDefinition().getProfile());
+    assertEquals(2, routes.size());
+    assertEquals("profile1", routes.get(0).getProfileDefinition().getProfile());
+    assertEquals("profile2", routes.get(1).getProfileDefinition().getProfile());
   }
 
   @Test
@@ -103,7 +98,7 @@
 
     // with no timestamp, the message should be ignored
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(0, routes.size());
+    assertEquals(0, routes.size());
   }
 
   @Test
@@ -114,7 +109,7 @@
 
     // the message should be filtered because it is before `beginAt`
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(0, routes.size());
+    assertEquals(0, routes.size());
   }
 
   @Test
@@ -125,7 +120,7 @@
 
     // the message should NOT be filtered because it is after 'beginAt'
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(1, routes.size());
+    assertEquals(1, routes.size());
   }
 
   @Test
@@ -136,7 +131,7 @@
 
     // the message should be filtered because it is after 'endAt'
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(0, routes.size());
+    assertEquals(0, routes.size());
   }
 
   @Test
@@ -147,7 +142,7 @@
 
     // the message should NOT be filtered because it is before 'endAt'
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(1, routes.size());
+    assertEquals(1, routes.size());
   }
 
   @Test
@@ -159,7 +154,7 @@
 
     // the message should be filtered because it is outside of [beginAt, endAt]
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(0, routes.size());
+    assertEquals(0, routes.size());
   }
 
   @Test
@@ -171,7 +166,7 @@
 
     // the message should NOT be filtered because it is after 'endAt'
     List<MessageRoute> routes = Lists.newArrayList(iter);
-    Assert.assertEquals(1, routes.size());
+    assertEquals(1, routes.size());
   }
 
   /**
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/ProfileBuilderFunctionTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/ProfileBuilderFunctionTest.java
index 9e2a37f..a94bf26 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/ProfileBuilderFunctionTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/ProfileBuilderFunctionTest.java
@@ -19,14 +19,11 @@
  */
 package org.apache.metron.profiler.spark.function;
 
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.common.configuration.profiler.ProfileConfig;
-import org.apache.metron.profiler.MessageRoute;
-import org.apache.metron.profiler.ProfileMeasurement;
-import org.apache.metron.profiler.ProfilePeriod;
-import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import static org.apache.metron.profiler.spark.BatchProfilerConfig.PERIOD_DURATION;
+import static org.apache.metron.profiler.spark.BatchProfilerConfig.PERIOD_DURATION_UNITS;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -34,9 +31,13 @@
 import java.util.Map;
 import java.util.Properties;
 import java.util.concurrent.TimeUnit;
-
-import static org.apache.metron.profiler.spark.BatchProfilerConfig.PERIOD_DURATION;
-import static org.apache.metron.profiler.spark.BatchProfilerConfig.PERIOD_DURATION_UNITS;
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.common.configuration.profiler.ProfileConfig;
+import org.apache.metron.profiler.MessageRoute;
+import org.apache.metron.profiler.ProfileMeasurement;
+import org.apache.metron.profiler.ProfilePeriod;
+import org.json.simple.JSONObject;
+import org.junit.jupiter.api.Test;
 
 public class ProfileBuilderFunctionTest {
 
@@ -62,7 +63,7 @@
 
     // setup the route
     MessageRoute route = new MessageRoute(profile, entity, message, timestamp);
-    List<MessageRoute> routes = new ArrayList();
+    List<MessageRoute> routes = new ArrayList<>();
     routes.add(route);
     routes.add(route);
     routes.add(route);
@@ -78,10 +79,10 @@
     ProfileMeasurement measurement = function.call("profile1-192.168.1.1-0", routes.iterator());
 
     // validate the measurement
-    Assert.assertEquals(entity, measurement.getEntity());
-    Assert.assertEquals(profile.getProfile(), measurement.getProfileName());
-    Assert.assertEquals(routes.size(), measurement.getProfileValue());
-    Assert.assertEquals(expectedPeriod.getPeriod(), (long) measurement.getPeriod().getPeriod());
+    assertEquals(entity, measurement.getEntity());
+    assertEquals(profile.getProfile(), measurement.getProfileName());
+    assertEquals(routes.size(), measurement.getProfileValue());
+    assertEquals(expectedPeriod.getPeriod(), (long) measurement.getPeriod().getPeriod());
   }
 
   /**
@@ -96,7 +97,7 @@
   @Multiline
   private static String invalidProfileJson;
 
-  @Test(expected = IllegalStateException.class)
+  @Test
   public void shouldThrowExceptionIfInvalidProfile() throws Exception {
     // setup the message and profile
     JSONObject message = getMessage();
@@ -106,7 +107,7 @@
 
     // setup the route
     MessageRoute route = new MessageRoute(profile, entity, message, timestamp);
-    List<MessageRoute> routes = new ArrayList();
+    List<MessageRoute> routes = new ArrayList<>();
     routes.add(route);
     routes.add(route);
     routes.add(route);
@@ -114,9 +115,10 @@
 
     // an exception should be thrown, if there is a bug in the profile definition
     ProfileBuilderFunction function = new ProfileBuilderFunction(profilerProperties, getGlobals());
-    function.call("profile1-192.168.1.1-0", routes.iterator());
+    assertThrows(IllegalStateException.class, () -> function.call("profile1-192.168.1.1-0", routes.iterator()));
   }
 
+  @SuppressWarnings("unchecked")
   private JSONObject getMessage() {
     JSONObject message = new JSONObject();
     message.put("ip_src_addr", "192.168.1.1");
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/ColumnEncodedTelemetryReaderTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/ColumnEncodedTelemetryReaderTest.java
index 0bcfb3f..f7f21cd 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/ColumnEncodedTelemetryReaderTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/ColumnEncodedTelemetryReaderTest.java
@@ -22,22 +22,24 @@
 import org.apache.spark.SparkConf;
 import org.apache.spark.sql.Dataset;
 import org.apache.spark.sql.SparkSession;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
 import org.junit.rules.TemporaryFolder;
 
 import java.util.Properties;
 
 import static org.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_FORMAT;
 import static org.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_PATH;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Tests the {@link org.apache.metron.profiler.spark.reader.ColumnEncodedTelemetryReader} class.
  */
+@EnableRuleMigrationSupport
 public class ColumnEncodedTelemetryReaderTest {
 
   @Rule
@@ -46,7 +48,7 @@
   private Properties profilerProperties;
   private Properties readerProperties;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupSpark() {
     SparkConf conf = new SparkConf()
             .setMaster("local")
@@ -58,14 +60,14 @@
             .getOrCreate();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownSpark() {
     if(spark != null) {
       spark.close();
     }
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     readerProperties = new Properties();
     profilerProperties = new Properties();
@@ -92,7 +94,7 @@
 
     // there should be 100 valid JSON records
     Dataset<String> telemetry = TelemetryReaders.COLUMNAR.read(spark, profilerProperties, readerProperties);
-    Assert.assertEquals(100, telemetry.filter(new IsValidJSON()).count());
+    assertEquals(100, telemetry.filter(new IsValidJSON()).count());
   }
 
   @Test
@@ -113,6 +115,6 @@
 
     // there should be 100 valid JSON records
     Dataset<String> telemetry = TelemetryReaders.COLUMNAR.read(spark, profilerProperties, readerProperties);
-    Assert.assertEquals(100, telemetry.filter(new IsValidJSON()).count());
+    assertEquals(100, telemetry.filter(new IsValidJSON()).count());
   }
 }
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/TelemetryReadersTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/TelemetryReadersTest.java
index e525ae0..a60c432 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/TelemetryReadersTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/TelemetryReadersTest.java
@@ -21,69 +21,65 @@
 import org.apache.metron.profiler.spark.reader.ColumnEncodedTelemetryReader;
 import org.apache.metron.profiler.spark.reader.TelemetryReaders;
 import org.apache.metron.profiler.spark.reader.TextEncodedTelemetryReader;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.apache.metron.profiler.spark.reader.TelemetryReaders.COLUMNAR;
-import static org.apache.metron.profiler.spark.reader.TelemetryReaders.JSON;
-import static org.apache.metron.profiler.spark.reader.TelemetryReaders.ORC;
-import static org.apache.metron.profiler.spark.reader.TelemetryReaders.PARQUET;
-import static org.apache.metron.profiler.spark.reader.TelemetryReaders.TEXT;
+import static org.apache.metron.profiler.spark.reader.TelemetryReaders.*;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class TelemetryReadersTest {
 
   @Test
   public void testJsonReader() {
     String key = JSON.toString();
-    Assert.assertTrue(TelemetryReaders.create(key) instanceof TextEncodedTelemetryReader);
+    assertTrue(TelemetryReaders.create(key) instanceof TextEncodedTelemetryReader);
   }
 
   @Test
   public void testJsonReaderLowerCase() {
     String key = JSON.toString().toLowerCase();
-    Assert.assertTrue(TelemetryReaders.create(key) instanceof TextEncodedTelemetryReader);
+    assertTrue(TelemetryReaders.create(key) instanceof TextEncodedTelemetryReader);
   }
 
   @Test
   public void testOrcReader() {
     String key = ORC.toString();
-    Assert.assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
+    assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
   }
 
 
   @Test
   public void testOrcReaderLowerCase() {
     String key = ORC.toString().toLowerCase();
-    Assert.assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
+    assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
   }
 
   @Test
   public void testParquetReader() {
     String key = PARQUET.toString();
-    Assert.assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
+    assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
   }
 
   @Test
   public void testParquetReaderLowerCase() {
     String key = PARQUET.toString().toLowerCase();
-    Assert.assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
+    assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
   }
 
   @Test
   public void testTextReader() {
     String key = TEXT.toString();
-    Assert.assertTrue(TelemetryReaders.create(key) instanceof TextEncodedTelemetryReader);
+    assertTrue(TelemetryReaders.create(key) instanceof TextEncodedTelemetryReader);
   }
 
   @Test
   public void testColumnReader() {
     String key = COLUMNAR.toString();
-    Assert.assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
+    assertTrue(TelemetryReaders.create(key) instanceof ColumnEncodedTelemetryReader);
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testInvalidReader() {
-    TelemetryReaders.create("invalid");
-    Assert.fail("exception expected");
+    assertThrows(IllegalArgumentException.class, () -> TelemetryReaders.create("invalid"));
   }
 }
diff --git a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/TextEncodedTelemetryReaderTest.java b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/TextEncodedTelemetryReaderTest.java
index 3b26bb9..5a0370f 100644
--- a/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/TextEncodedTelemetryReaderTest.java
+++ b/metron-analytics/metron-profiler-spark/src/test/java/org/apache/metron/profiler/spark/function/reader/TextEncodedTelemetryReaderTest.java
@@ -23,22 +23,24 @@
 import org.apache.spark.sql.Dataset;
 import org.apache.spark.sql.Encoders;
 import org.apache.spark.sql.SparkSession;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
 import org.junit.rules.TemporaryFolder;
 
 import java.util.Properties;
 
 import static org.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_FORMAT;
 import static org.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_PATH;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Tests the {@link org.apache.metron.profiler.spark.reader.TextEncodedTelemetryReader} class.
  */
+@EnableRuleMigrationSupport
 public class TextEncodedTelemetryReaderTest {
 
   @Rule
@@ -47,7 +49,7 @@
   private Properties profilerProperties;
   private Properties readerProperties;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupSpark() {
     SparkConf conf = new SparkConf()
             .setMaster("local")
@@ -59,14 +61,14 @@
             .getOrCreate();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownSpark() {
     if(spark != null) {
       spark.close();
     }
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     readerProperties = new Properties();
     profilerProperties = new Properties();
@@ -95,7 +97,7 @@
 
     // there should be 100 valid JSON records
     Dataset<String> telemetry = TelemetryReaders.TEXT.read(spark, profilerProperties, readerProperties);
-    Assert.assertEquals(100, telemetry.filter(new IsValidJSON()).count());
+    assertEquals(100, telemetry.filter(new IsValidJSON()).count());
   }
 
   @Test
@@ -109,6 +111,6 @@
 
     // there should be 100 valid JSON records
     Dataset<String> telemetry = TelemetryReaders.TEXT.read(spark, profilerProperties, readerProperties);
-    Assert.assertEquals(100, telemetry.filter(new IsValidJSON()).count());
+    assertEquals(100, telemetry.filter(new IsValidJSON()).count());
   }
 }
diff --git a/metron-analytics/metron-profiler-storm/pom.xml b/metron-analytics/metron-profiler-storm/pom.xml
index a9a6a94..717ef07 100644
--- a/metron-analytics/metron-profiler-storm/pom.xml
+++ b/metron-analytics/metron-profiler-storm/pom.xml
@@ -301,14 +301,7 @@
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
-            <version>${global_mockito_version}</version>
             <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <groupId>org.hamcrest</groupId>
-                    <artifactId>hamcrest-core</artifactId>
-                </exclusion>
-            </exclusions>
         </dependency>
         <dependency>
             <groupId>org.apache.metron</groupId>
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java
index bae3728..5287ca3 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/hbase/bolt/HBaseBoltTest.java
@@ -21,26 +21,20 @@
 package org.apache.metron.hbase.bolt;
 
 import org.apache.metron.hbase.TableProvider;
-import org.apache.storm.Constants;
-import org.apache.storm.tuple.Tuple;
 import org.apache.metron.hbase.bolt.mapper.Widget;
 import org.apache.metron.hbase.bolt.mapper.WidgetMapper;
 import org.apache.metron.hbase.client.HBaseClient;
 import org.apache.metron.test.bolt.BaseBoltTest;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.storm.Constants;
+import org.apache.storm.tuple.Tuple;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
 
-import java.io.IOException;
 import java.util.Collections;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
 
 /**
  * Tests the HBaseBolt.
@@ -55,8 +49,12 @@
   private Widget widget2;
   private TableProvider provider;
 
-  @Before
-  public void setupTuples() throws Exception {
+  @BeforeEach
+  public void setupTuples() {
+    tuple1 = mock(Tuple.class);
+    tuple2 = mock(Tuple.class);
+    client = mock(HBaseClient.class);
+    provider = mock(TableProvider.class);
 
     // setup the first tuple
     widget1 = new Widget("widget1", 100);
@@ -67,18 +65,10 @@
     when(tuple2.getValueByField(eq("widget"))).thenReturn(widget2);
   }
 
-  @Before
-  public void setup() throws Exception {
-    tuple1 = mock(Tuple.class);
-    tuple2 = mock(Tuple.class);
-    client = mock(HBaseClient.class);
-    provider = mock(TableProvider.class);
-  }
-
   /**
    * Create a ProfileBuilderBolt to test
    */
-  private HBaseBolt createBolt(int batchSize, WidgetMapper mapper) throws IOException {
+  private HBaseBolt createBolt(int batchSize, WidgetMapper mapper) {
     HBaseBolt bolt = new HBaseBolt(tableName, mapper)
             .withBatchSize(batchSize).withTableProviderInstance(provider);
     bolt.prepare(Collections.emptyMap(), topologyContext, outputCollector);
@@ -92,7 +82,7 @@
    * If the batch size is 2 and we have received 2 tuples the batch should be flushed.
    */
   @Test
-  public void testBatchReady() throws Exception {
+  public void testBatchReady() {
     HBaseBolt bolt = createBolt(2, new WidgetMapper());
     bolt.execute(tuple1);
     bolt.execute(tuple2);
@@ -106,7 +96,7 @@
    * If the batch size is NOT reached, the batch should NOT be flushed.
    */
   @Test
-  public void testBatchNotReady() throws Exception {
+  public void testBatchNotReady() {
     HBaseBolt bolt = createBolt(2, new WidgetMapper());
     bolt.execute(tuple1);
 
@@ -119,7 +109,7 @@
    * What happens if the batch timeout is reached?
    */
   @Test
-  public void testTimeFlush() throws Exception {
+  public void testTimeFlush() {
     HBaseBolt bolt = createBolt(2, new WidgetMapper());
 
     // the batch is not ready to write
@@ -137,7 +127,7 @@
    * if the Put to Hbase needs the TTL set.
    */
   @Test
-  public void testWriteWithTTL() throws Exception {
+  public void testWriteWithTTL() {
 
     // setup - create a mapper with a TTL set
     final Long expectedTTL = 2000L;
@@ -153,7 +143,7 @@
 
     // validate - ensure the Puts written with the TTL
     verify(client, times(2)).addMutation(any(), any(), any(), ttlCaptor.capture());
-    Assert.assertEquals(expectedTTL, ttlCaptor.getValue());
+    assertEquals(expectedTTL, ttlCaptor.getValue());
   }
 
   private static Tuple mockTuple(String componentId, String streamId) {
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/FixedFrequencyFlushSignalTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/FixedFrequencyFlushSignalTest.java
index a753dc4..ca2a5aa 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/FixedFrequencyFlushSignalTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/FixedFrequencyFlushSignalTest.java
@@ -19,10 +19,9 @@
 
 package org.apache.metron.profiler.storm;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the {@code FixedFrequencyFlushSignal} class.
@@ -180,10 +179,10 @@
     assertFalse(signal.isTimeToFlush());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testNegativeFrequency() {
     // a negative flush frequency makes no sense
-    new FixedFrequencyFlushSignal(-1000);
+    assertThrows(IllegalArgumentException.class, () -> new FixedFrequencyFlushSignal(-1000));
   }
 
   @Test
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/HBaseEmitterTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/HBaseEmitterTest.java
index 2f9eca4..a8cb9e7 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/HBaseEmitterTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/HBaseEmitterTest.java
@@ -26,22 +26,17 @@
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.storm.task.OutputCollector;
 import org.apache.storm.tuple.Values;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 
 import java.io.IOException;
 import java.util.concurrent.TimeUnit;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.*;
 
 /**
  * Tests the HBaseEmitter class.
@@ -64,7 +59,7 @@
   private ProfileConfig profile;
   private OutputCollector collector;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     emitter = new HBaseEmitter();
     profile = createDefinition(profileDefinition);
@@ -76,7 +71,7 @@
    * the 'result/profile' expression.
    */
   @Test
-  public void testEmit() throws Exception {
+  public void testEmit() {
 
     // create a measurement that has triage values
     ProfileMeasurement measurement = new ProfileMeasurement()
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/KafkaEmitterTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/KafkaEmitterTest.java
index 86849ac..b43668f 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/KafkaEmitterTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/KafkaEmitterTest.java
@@ -30,8 +30,8 @@
 import org.apache.storm.task.OutputCollector;
 import org.apache.storm.tuple.Values;
 import org.json.simple.JSONObject;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mockito;
 
@@ -40,14 +40,8 @@
 import java.util.Map;
 import java.util.concurrent.TimeUnit;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.eq;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 /**
  * Tests the KafkaDestinationHandler.
@@ -75,7 +69,7 @@
   private ProfileConfig profile;
   private OutputCollector collector;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     kafkaEmitter = new KafkaEmitter();
     profile = createDefinition(profileDefinitionWithTriage);
@@ -86,7 +80,7 @@
    * The handler should emit a message when a result/triage expression(s) has been defined.
    */
   @Test
-  public void testEmit() throws Exception {
+  public void testEmit() {
 
     // create a measurement that has triage values
     ProfileMeasurement measurement = new ProfileMeasurement()
@@ -107,7 +101,7 @@
    * The handler should NOT emit a message when there is NO result/triage value(s).
    */
   @Test
-  public void testDoNotEmit() throws Exception {
+  public void testDoNotEmit() {
 
     // create a measurement with NO triage values
     ProfileMeasurement measurement = new ProfileMeasurement()
@@ -127,7 +121,7 @@
    * Validate that the message generated for Kafka should include the triage value.
    */
   @Test
-  public void testTriageValueInMessage() throws Exception {
+  public void testTriageValueInMessage() {
 
     // create a measurement that has triage values
     ProfileMeasurement measurement = new ProfileMeasurement()
@@ -159,7 +153,7 @@
    * Validate that the message generated for Kafka can include multiple triage values.
    */
   @Test
-  public void testMultipleTriageValueInMessage() throws Exception {
+  public void testMultipleTriageValueInMessage() {
 
     // multiple triage values have been defined
     Map<String, Object> triageValues = ImmutableMap.of(
@@ -190,7 +184,7 @@
    * that can result from a triage expression.  Only primitive types and Strings are allowed.
    */
   @Test
-  public void testInvalidType() throws Exception {
+  public void testInvalidType() {
 
     // create one invalid expression and one valid expression
     Map<String, Object> triageValues = ImmutableMap.of(
@@ -231,7 +225,7 @@
    * that can result from a triage expression.  Only primitive types and Strings are allowed.
    */
   @Test
-  public void testIntegerIsValidType() throws Exception {
+  public void testIntegerIsValidType() {
 
     // create a measurement with a triage value that is an integer
     ProfileMeasurement measurement = new ProfileMeasurement()
@@ -254,7 +248,7 @@
    * that can result from a triage expression.  Only primitive types and Strings are allowed.
    */
   @Test
-  public void testStringIsValidType() throws Exception {
+  public void testStringIsValidType() {
 
     // create a measurement with a triage value that is a string
     ProfileMeasurement measurement = new ProfileMeasurement()
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileBuilderBoltTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileBuilderBoltTest.java
index 3f16edd..a62e68b 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileBuilderBoltTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileBuilderBoltTest.java
@@ -35,8 +35,8 @@
 import org.apache.storm.tuple.Values;
 import org.apache.storm.windowing.TupleWindow;
 import org.json.simple.JSONObject;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
 
 import java.io.IOException;
@@ -47,14 +47,10 @@
 import java.util.concurrent.TimeUnit;
 import java.util.stream.Collectors;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.*;
 
 /**
  * Tests the ProfileBuilderBolt.
@@ -69,7 +65,7 @@
   private ManualFlushSignal flushSignal;
   private ProfileMeasurement measurement;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     message1 = new MessageBuilder()
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileHBaseMapperTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileHBaseMapperTest.java
index f623d38..5073871 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileHBaseMapperTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileHBaseMapperTest.java
@@ -25,14 +25,14 @@
 import org.apache.metron.profiler.ProfileMeasurement;
 import org.apache.metron.profiler.hbase.RowKeyBuilder;
 import org.apache.storm.tuple.Tuple;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Optional;
 import java.util.concurrent.TimeUnit;
 
-import static org.mockito.Matchers.eq;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -47,7 +47,7 @@
   private RowKeyBuilder rowKeyBuilder;
   private ProfileConfig profile;
 
-  @Before
+  @BeforeEach
   public void setup() {
     rowKeyBuilder = mock(RowKeyBuilder.class);
 
@@ -72,22 +72,22 @@
    * The mapper should return the expiration for a tuple based on the Profile definition.
    */
   @Test
-  public void testExpires() throws Exception {
+  public void testExpires() {
     final Long expiresDays = 30L;
     profile.setExpires(expiresDays);
 
     Optional<Long> actual = mapper.getTTL(tuple);
-    Assert.assertTrue(actual.isPresent());
-    Assert.assertEquals(expiresDays, (Long) TimeUnit.MILLISECONDS.toDays(actual.get()));
+    assertTrue(actual.isPresent());
+    assertEquals(expiresDays, (Long) TimeUnit.MILLISECONDS.toDays(actual.get()));
   }
 
   /**
    * The expiration field is optional within a Profile definition.
    */
   @Test
-  public void testExpiresUndefined() throws Exception {
+  public void testExpiresUndefined() {
     // the TTL should not be defined
     Optional<Long> actual = mapper.getTTL(tuple);
-    Assert.assertFalse(actual.isPresent());
+    assertFalse(actual.isPresent());
   }
 }
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileSplitterBoltTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileSplitterBoltTest.java
index c841122..a147768 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileSplitterBoltTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/ProfileSplitterBoltTest.java
@@ -20,32 +20,28 @@
 
 package org.apache.metron.profiler.storm;
 
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.configuration.profiler.ProfileConfig;
 import org.apache.metron.common.configuration.profiler.ProfilerConfig;
+import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.profiler.DefaultMessageRouter;
 import org.apache.metron.profiler.clock.FixedClockFactory;
-import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.test.bolt.BaseBoltTest;
 import org.apache.storm.tuple.Tuple;
 import org.apache.storm.tuple.Values;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 
 import static org.apache.metron.storm.kafka.flux.SimpleStormKafkaBuilder.FieldsConfiguration.VALUE;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.mockito.Mockito.*;
 
 /**
  * Tests the ProfileSplitterBolt.
@@ -213,16 +209,14 @@
   private JSONObject message;
   private long timestamp = 3333333;
 
-  @Before
+  @BeforeEach
   public void setup() throws ParseException {
-
     // parse the input message
     JSONParser parser = new JSONParser();
     message = (JSONObject) parser.parse(input);
 
     // ensure the tuple returns the expected json message
-    when(tuple.getBinaryByField(VALUE.getFieldName())).thenReturn(input.getBytes(
-        StandardCharsets.UTF_8));
+    when(tuple.getBinaryByField(VALUE.getFieldName())).thenReturn(input.getBytes(StandardCharsets.UTF_8));
   }
 
   /**
@@ -439,7 +433,7 @@
   /**
    * Create a ProfileSplitterBolt to test
    */
-  private ProfileSplitterBolt createBolt(ProfilerConfig config) throws Exception {
+  private ProfileSplitterBolt createBolt(ProfilerConfig config) {
 
     ProfileSplitterBolt bolt = new ProfileSplitterBolt("zookeeperURL");
     bolt.setCuratorFramework(client);
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ConfigUploadComponent.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ConfigUploadComponent.java
index 336abd0..1ce4e50 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ConfigUploadComponent.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ConfigUploadComponent.java
@@ -19,7 +19,6 @@
  */
 package org.apache.metron.profiler.storm.integration;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.commons.lang3.ArrayUtils;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.imps.CuratorFrameworkState;
@@ -28,14 +27,10 @@
 import org.apache.metron.integration.UnableToStartException;
 import org.apache.metron.integration.components.ZKServerComponent;
 
-import java.util.Arrays;
+import java.nio.charset.StandardCharsets;
 import java.util.Properties;
 
-import static org.apache.metron.common.configuration.ConfigurationsUtils.getClient;
-import static org.apache.metron.common.configuration.ConfigurationsUtils.readGlobalConfigFromFile;
-import static org.apache.metron.common.configuration.ConfigurationsUtils.writeGlobalConfigToZookeeper;
-import static org.apache.metron.common.configuration.ConfigurationsUtils.readProfilerConfigFromFile;
-import static org.apache.metron.common.configuration.ConfigurationsUtils.writeProfilerConfigToZookeeper;
+import static org.apache.metron.common.configuration.ConfigurationsUtils.*;
 
 
 /**
diff --git a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ProfilerIntegrationTest.java b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ProfilerIntegrationTest.java
index ad150b1..4b14e4f 100644
--- a/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ProfilerIntegrationTest.java
+++ b/metron-analytics/metron-profiler-storm/src/test/java/org/apache/metron/profiler/storm/integration/ProfilerIntegrationTest.java
@@ -20,7 +20,6 @@
 
 package org.apache.metron.profiler.storm.integration;
 
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.io.FileUtils;
 import org.apache.metron.common.Constants;
@@ -44,43 +43,24 @@
 import org.apache.storm.Config;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.lang.invoke.MethodHandles;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
 import static org.apache.metron.integration.utils.TestUtils.assertEventually;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_COLUMN_FAMILY;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_PERIOD_UNITS;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_SALT_DIVISOR;
-import static org.apache.metron.profiler.storm.KafkaEmitter.ALERT_FIELD;
-import static org.apache.metron.profiler.storm.KafkaEmitter.ENTITY_FIELD;
-import static org.apache.metron.profiler.storm.KafkaEmitter.PERIOD_END_FIELD;
-import static org.apache.metron.profiler.storm.KafkaEmitter.PERIOD_ID_FIELD;
-import static org.apache.metron.profiler.storm.KafkaEmitter.PERIOD_START_FIELD;
-import static org.apache.metron.profiler.storm.KafkaEmitter.PROFILE_FIELD;
-import static org.apache.metron.profiler.storm.KafkaEmitter.TIMESTAMP_FIELD;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.*;
+import static org.apache.metron.profiler.storm.KafkaEmitter.*;
 import static org.hamcrest.CoreMatchers.hasItem;
 import static org.hamcrest.CoreMatchers.hasItems;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * An integration test of the Profiler topology.
@@ -393,7 +373,7 @@
             .toJSONString();
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setupBeforeClass() throws UnableToStartException {
 
     // create some messages that contain a timestamp - a really old timestamp; close to 1970
@@ -483,15 +463,15 @@
     runner.start();
   }
 
-  @AfterClass
-  public static void tearDownAfterClass() throws Exception {
+  @AfterAll
+  public static void tearDownAfterClass() {
     MockHBaseTableProvider.clear();
     if (runner != null) {
       runner.stop();
     }
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     // create the mock table
     profilerTable = (MockHTable) MockHBaseTableProvider.addToCache(tableName, columnFamily);
@@ -521,8 +501,8 @@
                     .build());
   }
 
-  @After
-  public void tearDown() throws Exception {
+  @AfterEach
+  public void tearDown() {
     MockHBaseTableProvider.clear();
     profilerTable.clear();
     if (runner != null) {
diff --git a/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/OnlineStatisticsProvider.java b/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/OnlineStatisticsProvider.java
index 1d7bdc6..0b53251 100644
--- a/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/OnlineStatisticsProvider.java
+++ b/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/OnlineStatisticsProvider.java
@@ -118,7 +118,7 @@
     //underflow.  It is sufficient to check sumOfSquares because sumOfSquares is going to converge to 0 faster than sum
     //in the situation where we're looking at an underflow.
     if(sumOfSquares == 0.0 && sum > 0) {
-      throw new IllegalStateException("Double overflow!");
+      throw new IllegalStateException("Double underflow!");
     }
   }
 
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/BinFunctionsTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/BinFunctionsTest.java
index 978b164..6f24adb 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/BinFunctionsTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/BinFunctionsTest.java
@@ -21,34 +21,36 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
+import org.apache.metron.stellar.common.StellarProcessor;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.apache.metron.stellar.common.StellarProcessor;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class BinFunctionsTest {
   public static Object run(String rule, Map<String, Object> variables) {
     Context context = Context.EMPTY_CONTEXT();
     StellarProcessor processor = new StellarProcessor();
-    Assert.assertTrue(rule + " not valid.", processor.validate(rule, context));
+    assertTrue(processor.validate(rule, context), rule + " not valid.");
     return processor.parse(rule, new DefaultVariableResolver(x -> variables.get(x),x -> variables.containsKey(x)), StellarFunctions.FUNCTION_RESOLVER(), context);
   }
 
   @Test
   public void testBin() {
-    Assert.assertEquals(run("BIN(value, bounds)", ImmutableMap.of("value", 0, "bounds", ImmutableList.of(10, 20, 30))), 0);
-    Assert.assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 0)), 0);
-    Assert.assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 9)), 0);
-    Assert.assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 10)), 0);
-    Assert.assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 11)), 1);
-    Assert.assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 19)), 1);
-    Assert.assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 21)), 2);
-    Assert.assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 29)), 2);
-    Assert.assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 31)), 3);
-    Assert.assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 1000)), 3);
+    assertEquals(run("BIN(value, bounds)", ImmutableMap.of("value", 0, "bounds", ImmutableList.of(10, 20, 30))), 0);
+    assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 0)), 0);
+    assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 9)), 0);
+    assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 10)), 0);
+    assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 11)), 1);
+    assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 19)), 1);
+    assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 21)), 2);
+    assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 29)), 2);
+    assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 31)), 3);
+    assertEquals(run("BIN(value, [ 10, 20, 30 ])", ImmutableMap.of("value", 1000)), 3);
   }
 }
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/OnlineStatisticsProviderTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/OnlineStatisticsProviderTest.java
index 7573f64..c8beb0f 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/OnlineStatisticsProviderTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/OnlineStatisticsProviderTest.java
@@ -23,12 +23,14 @@
 import org.apache.commons.math3.random.MersenneTwister;
 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
 import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.List;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 public class OnlineStatisticsProviderTest {
 
   public static void validateStatisticsProvider( StatisticsProvider statsProvider
@@ -36,38 +38,38 @@
                                                , DescriptiveStatistics stats
                                                ) {
     //N
-    Assert.assertEquals(statsProvider.getCount(), stats.getN());
+    assertEquals(statsProvider.getCount(), stats.getN());
     //sum
-    Assert.assertEquals(statsProvider.getSum(), stats.getSum(), 1e-3);
+    assertEquals(statsProvider.getSum(), stats.getSum(), 1e-3);
     //sum of squares
-    Assert.assertEquals(statsProvider.getSumSquares(), stats.getSumsq(), 1e-3);
+    assertEquals(statsProvider.getSumSquares(), stats.getSumsq(), 1e-3);
     //sum of squares
-    Assert.assertEquals(statsProvider.getSumLogs(), summaryStats.getSumOfLogs(), 1e-3);
+    assertEquals(statsProvider.getSumLogs(), summaryStats.getSumOfLogs(), 1e-3);
     //Mean
-    Assert.assertEquals(statsProvider.getMean(), stats.getMean(), 1e-3);
+    assertEquals(statsProvider.getMean(), stats.getMean(), 1e-3);
     //Quadratic Mean
-    Assert.assertEquals(statsProvider.getQuadraticMean(), summaryStats.getQuadraticMean(), 1e-3);
+    assertEquals(statsProvider.getQuadraticMean(), summaryStats.getQuadraticMean(), 1e-3);
     //SD
-    Assert.assertEquals(statsProvider.getStandardDeviation(), stats.getStandardDeviation(), 1e-3);
+    assertEquals(statsProvider.getStandardDeviation(), stats.getStandardDeviation(), 1e-3);
     //Variance
-    Assert.assertEquals(statsProvider.getVariance(), stats.getVariance(), 1e-3);
+    assertEquals(statsProvider.getVariance(), stats.getVariance(), 1e-3);
     //Min
-    Assert.assertEquals(statsProvider.getMin(), stats.getMin(), 1e-3);
+    assertEquals(statsProvider.getMin(), stats.getMin(), 1e-3);
     //Max
-    Assert.assertEquals(statsProvider.getMax(), stats.getMax(), 1e-3);
+    assertEquals(statsProvider.getMax(), stats.getMax(), 1e-3);
 
     //Kurtosis
-    Assert.assertEquals(stats.getKurtosis(), statsProvider.getKurtosis(), 1e-3);
+    assertEquals(stats.getKurtosis(), statsProvider.getKurtosis(), 1e-3);
 
     //Skewness
-    Assert.assertEquals(stats.getSkewness(), statsProvider.getSkewness(), 1e-3);
+    assertEquals(stats.getSkewness(), statsProvider.getSkewness(), 1e-3);
     for(double d = 10.0;d < 100.0;d+=10) {
-      //This is a sketch, so we're a bit more forgiving here in our choice of \epsilon.
-      Assert.assertEquals("Percentile mismatch for " + d +"th %ile"
-                         , statsProvider.getPercentile(d)
-                         , stats.getPercentile(d)
-                         , 1e-2
-                         );
+      // This is a sketch, so we're a bit more forgiving here in our choice of \epsilon.
+      assertEquals(
+          statsProvider.getPercentile(d),
+          stats.getPercentile(d),
+          1e-2,
+          "Percentile mismatch for " + d + "th %ile");
     }
   }
 
@@ -96,19 +98,17 @@
     validateStatisticsProvider(aggregatedProvider, summaryStats, stats);
   }
 
-  @Test(expected = IllegalStateException.class)
+  @Test
   public void testOverflow() {
     OnlineStatisticsProvider statsProvider = new OnlineStatisticsProvider();
-    statsProvider.addValue(Double.MAX_VALUE + 1);
+    assertThrows(IllegalStateException.class, () -> statsProvider.addValue(Double.MAX_VALUE + 1));
   }
 
-  @Test(expected = IllegalStateException.class)
+  @Test
   public void testUnderflow() {
     OnlineStatisticsProvider statsProvider = new OnlineStatisticsProvider();
     double d = 3e-305;
-    for(int i = 0;i < 5;++i,d/=100000) {
-      statsProvider.addValue(d);
-    }
+    assertThrows(IllegalStateException.class, () -> statsProvider.addValue(d));
   }
 
   @Test
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/StellarStatisticsFunctionsTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/StellarStatisticsFunctionsTest.java
index e855cb7..02ac60c 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/StellarStatisticsFunctionsTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/StellarStatisticsFunctionsTest.java
@@ -26,43 +26,33 @@
 import org.apache.commons.math3.random.MersenneTwister;
 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
 import org.apache.commons.math3.stat.descriptive.SummaryStatistics;
+import org.apache.metron.common.utils.SerDeUtils;
+import org.apache.metron.stellar.common.StellarProcessor;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.apache.metron.stellar.common.StellarProcessor;
-import org.apache.metron.common.utils.SerDeUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.util.*;
 import java.util.function.Function;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
 import static java.lang.String.format;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the statistical summary functions of Stellar.
  */
-@RunWith(Parameterized.class)
 public class StellarStatisticsFunctionsTest {
 
   private List<Double> values;
   private Map<String, Object> variables;
   private DescriptiveStatistics stats;
   private SummaryStatistics summaryStats;
-  private int windowSize;
 
-  public StellarStatisticsFunctionsTest(int windowSize) {
-    this.windowSize = windowSize;
-  }
-
-  @Parameterized.Parameters
   public static Collection<Object[]> data() {
     // each test will be run against these values for windowSize
     return Arrays.asList(new Object[][] {{ 0 }, { 100 }});
@@ -87,10 +77,10 @@
       Number leftVal = func.apply(left);
       Number rightVal = func.apply(left);
       if(epsilon != null) {
-        Assert.assertEquals((double)leftVal, (double)rightVal, epsilon);
+        assertEquals((double)leftVal, (double)rightVal, epsilon);
       }
       else {
-        Assert.assertEquals(leftVal, rightVal);
+        assertEquals(leftVal, rightVal);
       }
     }
     catch(UnsupportedOperationException uoe) {
@@ -146,7 +136,7 @@
     return ret;
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     variables = new HashMap<>();
 
@@ -173,20 +163,20 @@
     values.stream().forEach(val -> run(format("STATS_ADD (stats, %f)", val), variables));
   }
 
-  @Test(expected=ParseException.class)
-  public void testOverflow() throws Exception {
-   run(format("STATS_ADD(STATS_INIT(), %f)", (Double.MAX_VALUE + 1)), new HashMap<>());
+  @Test
+  public void testOverflow() {
+   assertThrows(ParseException.class, () -> run(format("STATS_ADD(STATS_INIT(), %f)", (Double.MAX_VALUE + 1)), new HashMap<>()));
   }
 
   @Test
-  public void ensureDeterminism() throws Exception {
+  public void ensureDeterminism() {
     for(int i = 0;i < 20;++i) {
       testMergeProviders();
     }
   }
 
   @Test
-  public void testMergeProviders() throws Exception {
+  public void testMergeProviders() {
     List<StatisticsProvider> providers = new ArrayList<>();
     /*
     Create 10 providers, each with a sample drawn from a gaussian distribution.
@@ -224,8 +214,9 @@
 
   }
 
-  @Test
-  public void testAddAllManyIntegers() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testAddAllManyIntegers(int windowSize) {
     statsInit(windowSize);
     Object result = run("STATS_COUNT(stats)", variables);
     double countAtStart = (double) result;
@@ -236,8 +227,9 @@
     assertEquals(countAtStart + 5.0, (double) actual, 0.1);
   }
 
-  @Test
-  public void testAddManyIntegers() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testAddManyIntegers(int windowSize) {
     statsInit(windowSize);
     Object result = run("STATS_COUNT(stats)", variables);
     double countAtStart = (double) result;
@@ -248,8 +240,9 @@
     assertEquals(countAtStart + 5.0, (double) actual, 0.1);
   }
 
-  @Test
-  public void testAllManyFloat() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testAllManyFloat(int windowSize) {
     statsInit(windowSize);
     Object result = run("STATS_COUNT(stats)", variables);
     double countAtStart = (double) result;
@@ -260,8 +253,9 @@
     assertEquals(countAtStart + 5.0, (double) actual, 0.1);
   }
 
-  @Test
-  public void testAddManyFloats() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testAddManyFloats(int windowSize) {
     statsInit(windowSize);
     Object result = run("STATS_COUNT(stats)", variables);
     double countAtStart = (double) result;
@@ -272,22 +266,25 @@
     assertEquals(countAtStart + 5.0, (double) actual, 0.1);
   }
 
-  @Test
-  public void testCount() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testCount(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_COUNT(stats)", variables);
     assertEquals(stats.getN(), (double) actual, 0.1);
   }
 
-  @Test
-  public void testMean() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testMean(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_MEAN(stats)", variables);
     assertEquals(stats.getMean(), (Double) actual, 0.1);
   }
 
-  @Test
-  public void testGeometricMean() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testGeometricMean(int windowSize) {
     if(windowSize > 0) {
       statsInit(windowSize);
       Object actual = run("STATS_GEOMETRIC_MEAN(stats)", variables);
@@ -295,43 +292,49 @@
     }
   }
 
-  @Test
-  public void testMax() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testMax(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_MAX(stats)", variables);
     assertEquals(stats.getMax(), (Double) actual, 0.1);
   }
 
-  @Test
-  public void testMin() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testMin(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_MIN(stats)", variables);
     assertEquals(stats.getMin(), (Double) actual, 0.1);
   }
 
-  @Test
-  public void testSum() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testSum(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_SUM(stats)", variables);
     assertEquals(stats.getSum(), (Double) actual, 0.1);
   }
 
-  @Test
-  public void testStandardDeviation() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testStandardDeviation(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_SD(stats)", variables);
     assertEquals(stats.getStandardDeviation(), (Double) actual, 0.1);
   }
 
-  @Test
-  public void testVariance() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testVariance(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_VARIANCE(stats)", variables);
     assertEquals(stats.getVariance(), (Double) actual, 0.1);
   }
 
-  @Test
-  public void testPopulationVariance() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testPopulationVariance(int windowSize) {
     if(windowSize > 0) {
       statsInit(windowSize);
       Object actual = run("STATS_POPULATION_VARIANCE(stats)", variables);
@@ -339,8 +342,9 @@
     }
   }
 
-  @Test
-  public void testQuadraticMean() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testQuadraticMean(int windowSize) {
     if(windowSize > 0) {
       statsInit(windowSize);
       Object actual = run("STATS_QUADRATIC_MEAN(stats)", variables);
@@ -348,35 +352,40 @@
     }
   }
 
-  @Test
-  public void testSumLogsNoWindow() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testSumLogsNoWindow() {
     statsInit(0);
     Object actual = run("STATS_SUM_LOGS(stats)", variables);
     assertEquals(summaryStats.getSumOfLogs(), (Double) actual, 0.1);
   }
 
-  @Test(expected = ParseException.class)
-  public void testSumLogsWithWindow() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testSumLogsWithWindow() {
     statsInit(100);
-    run("STATS_SUM_LOGS(stats)", variables);
+    assertThrows(ParseException.class, () -> run("STATS_SUM_LOGS(stats)", variables));
   }
 
-  @Test
-  public void testSumSquares() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testSumSquares(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_SUM_SQUARES(stats)", variables);
     assertEquals(stats.getSumsq(), (Double) actual, 0.1);
   }
 
-  @Test
-  public void testKurtosis() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testKurtosis(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_KURTOSIS(stats)", variables);
     assertEquals(stats.getKurtosis(), (Double) actual, 0.1);
   }
 
-  @Test
-  public void testSkewness() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testSkewness(int windowSize) {
     statsInit(windowSize);
     Object actual = run("STATS_SKEWNESS(stats)", variables);
     assertEquals(stats.getSkewness(), (Double) actual, 0.1);
@@ -389,8 +398,9 @@
    * since the numbers are sorted, the bin will increase at the percentile boundaries, thus we have 
    * the expected bin without recreating the computation in the STATS_BIN function.
    **/
-  @Test
-  public void testStatsBin() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testStatsBin(int windowSize) {
     statsInit(windowSize);
     statsBinRunner(StellarStatisticsFunctions.StatsBin.BinSplits.QUARTILE.split);
     statsBinRunner(StellarStatisticsFunctions.StatsBin.BinSplits.QUARTILE.split, "'QUARTILE'");
@@ -399,21 +409,22 @@
     statsBinRunner(ImmutableList.of(25.0, 50.0, 75.0), "[25.0, 50.0, 75.0]");
   }
 
-  @Test
-  public void testStatsBin_singleValue() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testStatsBin_singleValue(int windowSize) {
     StatisticsProvider provider = (StatisticsProvider)run("STATS_INIT(" + windowSize + ")", variables);
     provider.addValue(10);
     variables.put("stats", provider);
-    Assert.assertEquals(0, run(format("STATS_BIN(stats, %f)", 9.0), variables));
-    Assert.assertEquals(0, run(format("STATS_BIN(stats, %f)", 10.0), variables));
-    Assert.assertEquals(3, run(format("STATS_BIN(stats, %f)", 11.0), variables));
+    assertEquals(0, run(format("STATS_BIN(stats, %f)", 9.0), variables));
+    assertEquals(0, run(format("STATS_BIN(stats, %f)", 10.0), variables));
+    assertEquals(3, run(format("STATS_BIN(stats, %f)", 11.0), variables));
   }
 
-  public void statsBinRunner(List<Number> splits) throws Exception {
+  public void statsBinRunner(List<Number> splits) {
     statsBinRunner(splits, null);
   }
 
-  public void statsBinRunner(List<Number> splits, String splitsName) throws Exception {
+  public void statsBinRunner(List<Number> splits, String splitsName) {
     int bin = 0;
     StatisticsProvider provider = (StatisticsProvider)variables.get("stats");
     for(Double d : stats.getSortedValues()) {
@@ -434,7 +445,7 @@
   }
 
   @Test
-  public void testPercentileNoWindow() throws Exception {
+  public void testPercentileNoWindow() {
     statsInit(0);
     final double percentile = 0.9;
     Object actual = run(format("STATS_PERCENTILE(stats, %f)", percentile), variables);
@@ -442,7 +453,7 @@
   }
 
   @Test
-  public void testPercentileWithWindow() throws Exception {
+  public void testPercentileWithWindow() {
     statsInit(100);
     final double percentile = 0.9;
     Object actual = run(format("STATS_PERCENTILE(stats, %f)", percentile), variables);
@@ -450,7 +461,7 @@
   }
 
   @Test
-  public void testWithNull() throws Exception {
+  public void testWithNull() {
     Object actual = run("STATS_MEAN(null)", variables);
     assertTrue(((Double)actual).isNaN());
 
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/approximation/HyperLogLogPlusFunctionsIntegrationTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/approximation/HyperLogLogPlusFunctionsIntegrationTest.java
index 7e67e1c..11655a2 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/approximation/HyperLogLogPlusFunctionsIntegrationTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/approximation/HyperLogLogPlusFunctionsIntegrationTest.java
@@ -19,13 +19,13 @@
 
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class HyperLogLogPlusFunctionsIntegrationTest {
 
@@ -54,7 +54,7 @@
   @Test
   public void cardinality_gives_distinct_value_estimate_for_default_constructor() {
     Long estimate = (Long) StellarProcessorUtils.run(hllpDefaultConstructorRule, values);
-    Assert.assertThat("Incorrect cardinality returned", estimate, equalTo(2L));
+    assertThat("Incorrect cardinality returned", estimate, equalTo(2L));
   }
 
   /**
@@ -74,7 +74,7 @@
   @Test
   public void cardinality_gives_distinct_value_estimate_with_precisions_set() {
     Long estimate = (Long) StellarProcessorUtils.run(hllpBasicRule, values);
-    Assert.assertThat("Incorrect cardinality returned", estimate, equalTo(2L));
+    assertThat("Incorrect cardinality returned", estimate, equalTo(2L));
   }
 
   /**
@@ -96,7 +96,7 @@
   @Test
   public void hllp_add_accepts_multiple_items() {
     Long estimate = (Long) StellarProcessorUtils.run(hllpMultipleAddItems, values);
-    Assert.assertThat("Incorrect cardinality returned", estimate, equalTo(4L));
+    assertThat("Incorrect cardinality returned", estimate, equalTo(4L));
   }
 
   /**
@@ -115,7 +115,7 @@
   @Test
   public void merges_estimators() {
     Long estimate = (Long) StellarProcessorUtils.run(hllpMergeRule, values);
-    Assert.assertThat("Incorrect cardinality returned", estimate, equalTo(4L));
+    assertThat("Incorrect cardinality returned", estimate, equalTo(4L));
   }
 
   /**
@@ -127,7 +127,7 @@
   @Test
   public void cardinality_of_null_value_is_0() {
     Long estimate = (Long) StellarProcessorUtils.run(zeroCardinalityRule, values);
-    Assert.assertThat("Incorrect cardinality returned", estimate, equalTo(0L));
+    assertThat("Incorrect cardinality returned", estimate, equalTo(0L));
   }
 
 }
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/approximation/HyperLogLogPlusFunctionsTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/approximation/HyperLogLogPlusFunctionsTest.java
index a43eeb7..0e0a21d 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/approximation/HyperLogLogPlusFunctionsTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/approximation/HyperLogLogPlusFunctionsTest.java
@@ -18,37 +18,33 @@
 package org.apache.metron.statistics.approximation;
 
 import com.google.common.collect.ImmutableList;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
 
 import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class HyperLogLogPlusFunctionsTest {
 
   @Test
   public void hllp_init_creates_HyperLogLogPlus_set() {
     HyperLogLogPlus hllp = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of());
-    Assert.assertThat(hllp.getSp(), equalTo(25));
-    Assert.assertThat(hllp.getP(), equalTo(14));
-    Assert.assertThat("instance types should match for constructor with default precision values", new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of(5)), instanceOf(HyperLogLogPlus.class));
-    Assert.assertThat("instance types should match for constructor with sparse set disabled", new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of(5)), instanceOf(HyperLogLogPlus.class));
-    Assert.assertThat("instance types should match for full constructor", new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of(5, 6)), instanceOf(HyperLogLogPlus.class));
+    assertThat(hllp.getSp(), equalTo(25));
+    assertThat(hllp.getP(), equalTo(14));
+    assertThat("instance types should match for constructor with default precision values", new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of(5)), instanceOf(HyperLogLogPlus.class));
+    assertThat("instance types should match for constructor with sparse set disabled", new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of(5)), instanceOf(HyperLogLogPlus.class));
+    assertThat("instance types should match for full constructor", new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of(5, 6)), instanceOf(HyperLogLogPlus.class));
   }
 
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   @Test
   public void hllp_init_with_incorrect_args_throws_exception() {
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage("Unable to get p value from 'turkey'");
-    new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of("turkey"));
+    Exception e = assertThrows(IllegalArgumentException.class, () -> new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of("turkey")));
+    assertEquals("Unable to get p value from 'turkey'", e.getMessage());
   }
 
   @Test
@@ -59,21 +55,29 @@
     HyperLogLogPlus expected = new HyperLogLogPlus(5, 6);
     expected.add("item-1");
     expected.add("item-2");
-    Assert.assertThat("hllp set should have cardinality based on added values", actual.cardinality(), equalTo(2L));
-    Assert.assertThat("estimators should be equal", actual, equalTo(expected));
+    assertThat("hllp set should have cardinality based on added values", actual.cardinality(), equalTo(2L));
+    assertThat("estimators should be equal", actual, equalTo(expected));
   }
 
   @Test
   public void hllp_add_with_null_set_inits_and_returns_new_hllp_with_item_added_to_set() {
     HyperLogLogPlus actual = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPAdd().apply(Arrays.asList(null, "item-1"));
-    Assert.assertThat(actual, notNullValue());
+    assertThat(actual, notNullValue());
   }
 
   @Test
   public void hllp_add_throws_exception_with_incorrect_args() {
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage("Must pass an hllp estimator set and at least one value to add to the set");
-    new HyperLogLogPlusFunctions.HLLPAdd().apply(ImmutableList.of(new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of(5, 6))));
+    Exception e =
+        assertThrows(
+            IllegalArgumentException.class,
+            () ->
+                new HyperLogLogPlusFunctions.HLLPAdd()
+                    .apply(
+                        ImmutableList.of(
+                            new HyperLogLogPlusFunctions.HLLPInit()
+                                .apply(ImmutableList.of(5, 6)))));
+    assertEquals(
+        "Must pass an hllp estimator set and at least one value to add to the set", e.getMessage());
   }
 
   @Test
@@ -82,15 +86,15 @@
     hllp = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPAdd().apply(ImmutableList.of(hllp, "item-1"));
     hllp = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPAdd().apply(ImmutableList.of(hllp, "item-2"));
     hllp = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPAdd().apply(ImmutableList.of(hllp, "item-3"));
-    Assert.assertThat("cardinality not expected value", new HyperLogLogPlusFunctions.HLLPCardinality().apply(ImmutableList.of(hllp)), equalTo(3L));
+    assertThat("cardinality not expected value", new HyperLogLogPlusFunctions.HLLPCardinality().apply(ImmutableList.of(hllp)), equalTo(3L));
   }
 
   @Test
   public void hllp_cardinality_returns_0_for_null_set() {
-    List nullArg = new ArrayList() {{
+    List<Object> nullArg = new ArrayList<Object>() {{
       add(null);
     }};
-    Assert.assertThat("Cardinality should be 0", new HyperLogLogPlusFunctions.HLLPCardinality().apply(nullArg), equalTo(0L));
+    assertThat("Cardinality should be 0", new HyperLogLogPlusFunctions.HLLPCardinality().apply(nullArg), equalTo(0L));
   }
 
   @Test
@@ -104,14 +108,14 @@
     HyperLogLogPlus merged = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPMerge().apply(ImmutableList.of(ImmutableList.of(hllp1, hllp2)));
 
     Long actual = (Long) new HyperLogLogPlusFunctions.HLLPCardinality().apply(ImmutableList.of(merged));
-    Assert.assertThat("cardinality should match merged set", actual, equalTo(3L));
+    assertThat("cardinality should match merged set", actual, equalTo(3L));
 
     HyperLogLogPlus hllp3 = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of(5, 6));
     hllp3 = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPAdd().apply(ImmutableList.of(hllp3, "item-4"));
     merged = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPMerge().apply(ImmutableList.of(ImmutableList.of(hllp1, hllp2, hllp3)));
 
     actual = (Long) new HyperLogLogPlusFunctions.HLLPCardinality().apply(ImmutableList.of(merged));
-    Assert.assertThat("cardinality should match merged set", actual, equalTo(4L));
+    assertThat("cardinality should match merged set", actual, equalTo(4L));
   }
 
   @Test
@@ -123,29 +127,35 @@
     HyperLogLogPlus merged = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPMerge().apply(ImmutableList.of(hllp1));
 
     Long actual = (Long) new HyperLogLogPlusFunctions.HLLPCardinality().apply(ImmutableList.of(merged));
-    Assert.assertThat("cardinality should match merged set", actual, equalTo(2L));
+    assertThat("cardinality should match merged set", actual, equalTo(2L));
   }
 
   @Test
   public void hllp_merge_throws_exception_with_no_arguments() {
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage("Must pass single list of hllp sets to merge");
-    new HyperLogLogPlusFunctions.HLLPMerge().apply(ImmutableList.of());
+    Exception e =
+        assertThrows(
+            IllegalArgumentException.class,
+            () -> new HyperLogLogPlusFunctions.HLLPMerge().apply(ImmutableList.of()));
+    assertEquals("Must pass single list of hllp sets to merge", e.getMessage());
   }
 
   @Test
   public void hllp_merge_throws_exception_on_invalid_arguments() {
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage("Must pass single list of hllp sets to merge");
-    HyperLogLogPlus hllp1 = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of());
-    HyperLogLogPlus hllp2 = (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of());
-    new HyperLogLogPlusFunctions.HLLPMerge().apply(ImmutableList.of(hllp1, hllp2));
+    HyperLogLogPlus hllp1 =
+        (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of());
+    HyperLogLogPlus hllp2 =
+        (HyperLogLogPlus) new HyperLogLogPlusFunctions.HLLPInit().apply(ImmutableList.of());
+    Exception e =
+        assertThrows(
+            IllegalArgumentException.class,
+            () -> new HyperLogLogPlusFunctions.HLLPMerge().apply(ImmutableList.of(hllp1, hllp2)));
+    assertEquals("Must pass single list of hllp sets to merge", e.getMessage());
   }
 
   @Test
   public void merge_returns_null_if_passed_an_empty_list_to_merge() {
     List emptyList = ImmutableList.of();
-    Assert.assertThat("Should be empty list", new HyperLogLogPlusFunctions.HLLPMerge().apply(ImmutableList.of(emptyList)), equalTo(null));
+    assertThat("Should be empty list", new HyperLogLogPlusFunctions.HLLPMerge().apply(ImmutableList.of(emptyList)), equalTo(null));
   }
 
 }
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/informationtheory/EntropyTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/informationtheory/EntropyTest.java
index a168b2e..a3a3f4b 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/informationtheory/EntropyTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/informationtheory/EntropyTest.java
@@ -17,19 +17,18 @@
  */
 package org.apache.metron.statistics.informationtheory;
 
-import com.google.common.collect.ImmutableMap;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class EntropyTest {
   @Test
-  public void entropyTest() throws Exception {
+  public void entropyTest() {
     //test empty collection
-    Assert.assertEquals(0.0, (Double) run("IT_ENTROPY({})", new HashMap<>()), 0.0);
+    assertEquals(0.0, (Double) run("IT_ENTROPY({})", new HashMap<>()), 0.0);
 
     /*
     Now consider the string aaaaaaaaaabbbbbccccc or 10 a's followed by 5 b's and 5 c's.
@@ -41,6 +40,6 @@
       -p(a)*log_2(p(a)) - p(b)*log_2(p(b)) - p(c)*log_2(p(c)) =
       -0.5*-1 - 0.25*-2 - 0.25*-2 = 1.5
      */
-    Assert.assertEquals(1.5, (Double) run("IT_ENTROPY({ 'a' : 10, 'b' : 5, 'c' : 5} )", new HashMap<>()), 0.0);
+    assertEquals(1.5, (Double) run("IT_ENTROPY({ 'a' : 10, 'b' : 5, 'c' : 5} )", new HashMap<>()), 0.0);
   }
 }
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/outlier/MedianAbsoluteDeviationTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/outlier/MedianAbsoluteDeviationTest.java
index 9390b7a..68b683e 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/outlier/MedianAbsoluteDeviationTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/outlier/MedianAbsoluteDeviationTest.java
@@ -24,30 +24,31 @@
 import org.apache.commons.math3.random.GaussianRandomGenerator;
 import org.apache.commons.math3.random.MersenneTwister;
 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
+import org.apache.metron.common.utils.SerDeUtils;
+import org.apache.metron.stellar.common.StellarProcessor;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.apache.metron.stellar.common.StellarProcessor;
-import org.apache.metron.common.utils.SerDeUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class MedianAbsoluteDeviationTest {
   public static Object run(String rule, Map<String, Object> variables) {
     Context context = Context.EMPTY_CONTEXT();
     StellarProcessor processor = new StellarProcessor();
-    Assert.assertTrue(rule + " not valid.", processor.validate(rule, context));
+    assertTrue(processor.validate(rule, context), rule + " not valid.");
     return processor.parse(rule, new DefaultVariableResolver(x -> variables.get(x),x -> variables.containsKey(x)), StellarFunctions.FUNCTION_RESOLVER(), context);
   }
 
   private void assertScoreEquals(MedianAbsoluteDeviationFunctions.State currentState, MedianAbsoluteDeviationFunctions.State clonedState, double value) {
      Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", value));
       Double clonedScore = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", clonedState, "value", value));
-      Assert.assertEquals(score, clonedScore, 1e-6);
+      assertEquals(score, clonedScore, 1e-6);
   }
 
   @Test
@@ -93,23 +94,23 @@
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMin()));
-      Assert.assertTrue("Score: " + score + " is not an outlier despite being a minimum.", score > 3.5);
+      assertTrue(score > 3.5, "Score: " + score + " is not an outlier despite being a minimum.");
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMax()));
-      Assert.assertTrue("Score: " + score + " is not an outlier despite being a maximum", score > 3.5);
+      assertTrue(score > 3.5, "Score: " + score + " is not an outlier despite being a maximum");
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMean() + 4*stats.getStandardDeviation()));
-      Assert.assertTrue("Score: " + score + " is not an outlier despite being 4 std deviations away from the mean", score > 3.5);
+      assertTrue(score > 3.5, "Score: " + score + " is not an outlier despite being 4 std deviations away from the mean");
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMean() - 4*stats.getStandardDeviation()));
-      Assert.assertTrue("Score: " + score + " is not an outlier despite being 4 std deviations away from the mean", score > 3.5);
+      assertTrue(score > 3.5, "Score: " + score + " is not an outlier despite being 4 std deviations away from the mean");
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMean()));
-      Assert.assertFalse("Score: " + score + " is an outlier despite being the mean", score > 3.5);
+      assertFalse(score > 3.5, "Score: " + score + " is an outlier despite being the mean");
     }
   }
 
@@ -138,23 +139,23 @@
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMin()));
-      Assert.assertTrue("Score: " + score + " is not an outlier despite being a minimum.", score > 3.5);
+      assertTrue(score > 3.5, "Score: " + score + " is not an outlier despite being a minimum.");
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMax()));
-      Assert.assertTrue("Score: " + score + " is not an outlier despite being a maximum", score > 3.5);
+      assertTrue(score > 3.5, "Score: " + score + " is not an outlier despite being a maximum");
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMean() + 4*stats.getStandardDeviation()));
-      Assert.assertTrue("Score: " + score + " is not an outlier despite being 4 std deviations away from the mean", score > 3.5);
+      assertTrue(score > 3.5, "Score: " + score + " is not an outlier despite being 4 std deviations away from the mean");
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMean() - 4*stats.getStandardDeviation()));
-      Assert.assertTrue("Score: " + score + " is not an outlier despite being 4 std deviations away from the mean", score > 3.5);
+      assertTrue(score > 3.5, "Score: " + score + " is not an outlier despite being 4 std deviations away from the mean");
     }
     {
       Double score = (Double) run("OUTLIER_MAD_SCORE(currentState, value)", ImmutableMap.of("currentState", currentState, "value", stats.getMean()));
-      Assert.assertFalse("Score: " + score + " is an outlier despite being the mean", score > 3.5);
+      assertFalse(score > 3.5, "Score: " + score + " is an outlier despite being the mean");
     }
   }
 }
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/sampling/SamplerFunctionsTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/sampling/SamplerFunctionsTest.java
index fe607f7..18208ac 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/sampling/SamplerFunctionsTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/sampling/SamplerFunctionsTest.java
@@ -23,20 +23,21 @@
 import com.google.common.collect.Iterables;
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Random;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class SamplerFunctionsTest {
   static List<Double> sample = new ArrayList<>();
   static List<String> sampleString = new ArrayList<>();
   static List<Sampler> samplers = new ArrayList<>();
-  @BeforeClass
+  @BeforeAll
   public static void beforeClass() {
     Random rng = new Random(0);
     int sampleSize = 1000000;
@@ -57,57 +58,57 @@
   }
 
   @Test
-  public void testValidInit_default() throws Exception {
+  public void testValidInit_default() {
     String stmt = "SAMPLE_INIT()";
     Sampler s = (Sampler) StellarProcessorUtils.run(stmt, new HashMap<>());
-    Assert.assertEquals(Sampler.DEFAULT_SIZE, s.getSize());
+    assertEquals(Sampler.DEFAULT_SIZE, s.getSize());
   }
 
   @Test
-  public void testValidInit_withSize() throws Exception {
+  public void testValidInit_withSize() {
     String stmt = "SAMPLE_INIT(size)";
     Sampler s = (Sampler) StellarProcessorUtils.run(stmt, ImmutableMap.of("size", 10 ));
-    Assert.assertEquals(10, s.getSize());
+    assertEquals(10, s.getSize());
   }
 
-  @Test(expected=ParseException.class)
+  @Test
   public void testInvalidInit(){
     String stmt = "SAMPLE_INIT(size)";
-    Sampler s = (Sampler) StellarProcessorUtils.run(stmt, ImmutableMap.of("size", -10 ));
+    assertThrows(ParseException.class, () -> StellarProcessorUtils.run(stmt, ImmutableMap.of("size", -10 )));
   }
 
   @Test
-  public void testGet() throws Exception {
+  public void testGet() {
     String stmt = "SAMPLE_GET(SAMPLE_ADD(SAMPLE_INIT(size), values))";
     Iterable<? extends Object> s = (Iterable<? extends Object>) StellarProcessorUtils.run(stmt, ImmutableMap.of("size", 10, "values", sample));
-    Assert.assertEquals(10, Iterables.size(s));
+    assertEquals(10, Iterables.size(s));
     for(Object o : s) {
-      Assert.assertTrue(o instanceof Double);
-      Assert.assertTrue(sample.contains(o));
+      assertTrue(o instanceof Double);
+      assertTrue(sample.contains(o));
     }
   }
 
   @Test
-  public void testAddSingle() throws Exception {
+  public void testAddSingle() {
     String stmt = "SAMPLE_ADD(SAMPLE_INIT(size), value)";
     Sampler s = (Sampler) StellarProcessorUtils.run(stmt, ImmutableMap.of("size", 10, "value", "blah"));
-    Assert.assertEquals(10, s.getSize());
-    Assert.assertTrue(Iterables.getFirst(s.get(), null) instanceof String);
+    assertEquals(10, s.getSize());
+    assertTrue(Iterables.getFirst(s.get(), null) instanceof String);
   }
 
   @Test
-  public void testAddAll() throws Exception {
+  public void testAddAll() {
     String stmt = "SAMPLE_ADD(SAMPLE_INIT(size), value)";
     Sampler s = (Sampler) StellarProcessorUtils.run(stmt, ImmutableMap.of("size", 10, "value", sampleString));
-    Assert.assertEquals(10, s.getSize());
+    assertEquals(10, s.getSize());
     for(Object o : s.get()) {
-      Assert.assertTrue(o instanceof String);
-      Assert.assertTrue(sampleString.contains(o));
+      assertTrue(o instanceof String);
+      assertTrue(sampleString.contains(o));
     }
   }
 
   @Test
-  public void testMerge() throws Exception {
+  public void testMerge() {
     Double sampleMean= null;
     Double mergedSampleMean= null;
     {
@@ -120,12 +121,12 @@
       String stmt = "STATS_MEAN(STATS_ADD(STATS_INIT(), SAMPLE_GET(SAMPLE_MERGE(samples))))";
       mergedSampleMean = (Double) StellarProcessorUtils.run(stmt, ImmutableMap.of("samples", samplers));
     }
-    Assert.assertEquals(sampleMean, mergedSampleMean, .1);
+    assertEquals(sampleMean, mergedSampleMean, .1);
     {
       //Merge the sample with a simpler sampler
       String stmt = "SAMPLE_MERGE(samples, SAMPLE_INIT(10))";
       Sampler s = (Sampler) StellarProcessorUtils.run(stmt, ImmutableMap.of("samples", samplers));
-      Assert.assertEquals(10, s.getSize());
+      assertEquals(10, s.getSize());
     }
   }
 }
diff --git a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/sampling/UniformSamplerTest.java b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/sampling/UniformSamplerTest.java
index 91ca3bd..f87e05a 100644
--- a/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/sampling/UniformSamplerTest.java
+++ b/metron-analytics/metron-statistics/src/test/java/org/apache/metron/statistics/sampling/UniformSamplerTest.java
@@ -22,15 +22,16 @@
 import org.apache.commons.math3.random.GaussianRandomGenerator;
 import org.apache.commons.math3.random.MersenneTwister;
 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.List;
 import java.util.Optional;
 import java.util.Random;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class UniformSamplerTest {
   public static final int SAMPLE_SIZE = 2000000;
   static DescriptiveStatistics uniformStats = new DescriptiveStatistics();
@@ -38,7 +39,7 @@
   static DescriptiveStatistics gaussianStats = new DescriptiveStatistics();
   static List<Double> gaussianSample = new ArrayList<>();
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeClass() {
     Random rng = new Random(0);
     GaussianRandomGenerator gen = new GaussianRandomGenerator(new MersenneTwister(0));
@@ -71,8 +72,8 @@
     for(Object d : sample.get()) {
       s.addValue((Double)d);
     }
-    Assert.assertEquals(s.getMean(), distribution.getMean(), .1);
-    Assert.assertEquals(s.getStandardDeviation(), distribution.getStandardDeviation(), .1);
+    assertEquals(s.getMean(), distribution.getMean(), .1);
+    assertEquals(s.getStandardDeviation(), distribution.getStandardDeviation(), .1);
   }
 
   @Test
@@ -87,7 +88,7 @@
     UniformSampler sampler = new UniformSampler(10);
     Iterable<Sampler> subsamples = getSubsamples(uniformSample);
     Sampler s = SamplerUtil.INSTANCE.merge(subsamples, Optional.of(sampler));
-    Assert.assertEquals(s.getSize(), 10);
+    assertEquals(s.getSize(), 10);
   }
 
 
diff --git a/metron-analytics/pom.xml b/metron-analytics/pom.xml
index ceb0170..186eafc 100644
--- a/metron-analytics/pom.xml
+++ b/metron-analytics/pom.xml
@@ -61,9 +61,33 @@
 			<version>${global_slf4j_version}</version>
 		</dependency>
 		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>${global_junit_version}</version>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-api</artifactId>
+			<version>${global_junit_jupiter_version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-params</artifactId>
+			<version>${global_junit_jupiter_version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-engine</artifactId>
+			<version>${global_junit_jupiter_version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-migrationsupport</artifactId>
+			<version>${global_junit_jupiter_version}</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.hamcrest</groupId>
+			<artifactId>hamcrest-core</artifactId>
+			<version>${global_hamcrest_version}</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
diff --git a/metron-contrib/metron-performance/pom.xml b/metron-contrib/metron-performance/pom.xml
index 3233d61..04a327c 100644
--- a/metron-contrib/metron-performance/pom.xml
+++ b/metron-contrib/metron-performance/pom.xml
@@ -54,12 +54,6 @@
       <version>${global_kafka_version}</version>
       <scope>provided</scope>
     </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.12</version>
-      <scope>test</scope>
-    </dependency>
   </dependencies>
   <build>
     <plugins>
diff --git a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
index c8a6f6e..0efce3a 100644
--- a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
+++ b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
@@ -17,61 +17,61 @@
  */
 package org.apache.metron.performance.load;
 
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.nio.charset.StandardCharsets;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.PosixParser;
 import org.apache.commons.io.IOUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.BufferedWriter;
 import java.io.File;
-import java.io.FileWriter;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
 import java.util.EnumMap;
 import java.util.List;
 import java.util.Optional;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class LoadOptionsTest {
   @Test
-  public void testHappyPath() throws Exception {
+  public void testHappyPath() {
     CommandLine cli = LoadOptions.parse(new PosixParser(), new String[] { "-eps", "1000", "-ot","foo"});
     EnumMap<LoadOptions, Optional<Object>> results = LoadOptions.createConfig(cli);
-    Assert.assertEquals(1000L, results.get(LoadOptions.EPS).get());
-    Assert.assertEquals("foo", results.get(LoadOptions.OUTPUT_TOPIC).get());
-    Assert.assertEquals(LoadGenerator.CONSUMER_GROUP, results.get(LoadOptions.CONSUMER_GROUP).get());
-    Assert.assertEquals(Runtime.getRuntime().availableProcessors(), results.get(LoadOptions.NUM_THREADS).get());
-    Assert.assertFalse(results.get(LoadOptions.BIASED_SAMPLE).isPresent());
-    Assert.assertFalse(results.get(LoadOptions.CSV).isPresent());
+    assertEquals(1000L, results.get(LoadOptions.EPS).get());
+    assertEquals("foo", results.get(LoadOptions.OUTPUT_TOPIC).get());
+    assertEquals(LoadGenerator.CONSUMER_GROUP, results.get(LoadOptions.CONSUMER_GROUP).get());
+    assertEquals(Runtime.getRuntime().availableProcessors(), results.get(LoadOptions.NUM_THREADS).get());
+    assertFalse(results.get(LoadOptions.BIASED_SAMPLE).isPresent());
+    assertFalse(results.get(LoadOptions.CSV).isPresent());
   }
 
   @Test
-  public void testCsvPresent() throws Exception {
+  public void testCsvPresent() {
       CommandLine cli = LoadOptions.parse(new PosixParser(), new String[]{"-c", "/tmp/blah"});
       EnumMap<LoadOptions, Optional<Object>> results = LoadOptions.createConfig(cli);
-      Assert.assertEquals(new File("/tmp/blah"), results.get(LoadOptions.CSV).get());
+      assertEquals(new File("/tmp/blah"), results.get(LoadOptions.CSV).get());
   }
 
   @Test
-  public void testCsvMissing() throws Exception {
+  public void testCsvMissing() {
       CommandLine cli = LoadOptions.parse(new PosixParser(), new String[]{});
       EnumMap<LoadOptions, Optional<Object>> results = LoadOptions.createConfig(cli);
-      Assert.assertFalse(results.get(LoadOptions.CSV).isPresent());
+      assertFalse(results.get(LoadOptions.CSV).isPresent());
   }
 
   @Test
-  public void testThreadsByCores() throws Exception {
+  public void testThreadsByCores() {
       CommandLine cli = LoadOptions.parse(new PosixParser(), new String[]{"-p", "2C"});
       EnumMap<LoadOptions, Optional<Object>> results = LoadOptions.createConfig(cli);
-      Assert.assertEquals(2 * Runtime.getRuntime().availableProcessors(), results.get(LoadOptions.NUM_THREADS).get());
+      assertEquals(2 * Runtime.getRuntime().availableProcessors(), results.get(LoadOptions.NUM_THREADS).get());
   }
 
   @Test
-  public void testThreadsByNum() throws Exception {
+  public void testThreadsByNum() {
       CommandLine cli = LoadOptions.parse(new PosixParser(), new String[]{"-p", "5"});
       EnumMap<LoadOptions, Optional<Object>> results = LoadOptions.createConfig(cli);
-      Assert.assertEquals(5, results.get(LoadOptions.NUM_THREADS).get());
+      assertEquals(5, results.get(LoadOptions.NUM_THREADS).get());
   }
 
   @Test
@@ -85,12 +85,12 @@
     CommandLine cli = LoadOptions.parse(new PosixParser(), new String[]{"-t", templateFile.getPath()});
     EnumMap<LoadOptions, Optional<Object>> results = LoadOptions.createConfig(cli);
     List<String> templates = (List<String>) results.get(LoadOptions.TEMPLATE).get();
-    Assert.assertEquals(1, templates.size());
-    Assert.assertEquals(template, templates.get(0));
+    assertEquals(1, templates.size());
+    assertEquals(template, templates.get(0));
   }
 
-  @Test(expected=IllegalStateException.class)
-  public void testTemplateMissing() throws Exception {
-    LoadOptions.createConfig(LoadOptions.parse(new PosixParser(), new String[]{"-t", "target/template2"}));
+  @Test
+  public void testTemplateMissing() {
+    assertThrows(IllegalStateException.class, () -> LoadOptions.createConfig(LoadOptions.parse(new PosixParser(), new String[]{"-t", "target/template2"})));
   }
 }
diff --git a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/SendToKafkaTest.java b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/SendToKafkaTest.java
index c652291..fa793f3 100644
--- a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/SendToKafkaTest.java
+++ b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/SendToKafkaTest.java
@@ -18,14 +18,15 @@
 package org.apache.metron.performance.load;
 
 import org.apache.kafka.clients.producer.KafkaProducer;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ForkJoinPool;
 import java.util.concurrent.Future;
 import java.util.concurrent.atomic.AtomicLong;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class SendToKafkaTest {
 
   @Test
@@ -36,14 +37,14 @@
     SendToKafka sender = new SendToKafka(null, expectedSent, 10, () -> "msg", executor, numSent, ThreadLocal.withInitial(() -> null) ) {
       @Override
       protected Future<?> sendToKafka(KafkaProducer producer, String kafkaTopic, String message) {
-        Assert.assertEquals(message, "msg");
+        assertEquals(message, "msg");
         return ForkJoinPool.commonPool().submit(() -> {
           numSent.incrementAndGet();
         });
       }
     };
     sender.run();
-    Assert.assertEquals(numSent.get(), expectedSent);
+    assertEquals(numSent.get(), expectedSent);
   }
 
 }
diff --git a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/sampler/SamplerTest.java b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/sampler/SamplerTest.java
index d386e00..2fe601f 100644
--- a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/sampler/SamplerTest.java
+++ b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/sampler/SamplerTest.java
@@ -19,19 +19,15 @@
 
 import com.google.common.collect.ImmutableList;
 import org.adrianwalker.multilinestring.Multiline;
-import org.junit.Assert;
-import org.junit.Test;
-import sun.java2d.pipe.SpanShapeRenderer;
+import org.junit.jupiter.api.Test;
 
 import java.io.BufferedReader;
 import java.io.IOException;
 import java.io.StringReader;
-import java.util.AbstractMap;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Random;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class SamplerTest {
   private static final int SIMULATION_SIZE = 10000;
@@ -46,7 +42,7 @@
     for(Map.Entry<Integer, Double> kv : empiricalProbs.entrySet()) {
       double empiricalProb = kv.getValue()/SIMULATION_SIZE;
       String msg = expectedProbs.get(kv.getKey()) + " != " + empiricalProb;
-      Assert.assertEquals(msg, expectedProbs.get(kv.getKey()), empiricalProb, 1e-2);
+      assertEquals(expectedProbs.get(kv.getKey()), empiricalProb, 1e-2, msg);
     }
   }
 
@@ -97,9 +93,9 @@
   public void testDistributionRead() throws IOException {
     for(String config : ImmutableList.of(paretoConfig, paretoConfigImplicit)) {
       List<Map.Entry<Integer, Integer>> endpoints = BiasedSampler.readDistribution(new BufferedReader(new StringReader(config)), true);
-      Assert.assertEquals(2, endpoints.size());
-      Assert.assertEquals(new AbstractMap.SimpleEntry<>(80,20), endpoints.get(0));
-      Assert.assertEquals(new AbstractMap.SimpleEntry<>(20,80), endpoints.get(1));
+      assertEquals(2, endpoints.size());
+      assertEquals(new AbstractMap.SimpleEntry<>(80,20), endpoints.get(0));
+      assertEquals(new AbstractMap.SimpleEntry<>(20,80), endpoints.get(1));
     }
   }
 
@@ -121,25 +117,25 @@
   public void testDistributionReadLonger() throws IOException {
     for(String config : ImmutableList.of(longerConfig, longerConfigImplicit)) {
       List<Map.Entry<Integer, Integer>> endpoints = BiasedSampler.readDistribution(new BufferedReader(new StringReader(config)), true);
-      Assert.assertEquals(3, endpoints.size());
-      Assert.assertEquals(new AbstractMap.SimpleEntry<>(80,20), endpoints.get(0));
-      Assert.assertEquals(new AbstractMap.SimpleEntry<>(10,70), endpoints.get(1));
-      Assert.assertEquals(new AbstractMap.SimpleEntry<>(10,10), endpoints.get(2));
+      assertEquals(3, endpoints.size());
+      assertEquals(new AbstractMap.SimpleEntry<>(80,20), endpoints.get(0));
+      assertEquals(new AbstractMap.SimpleEntry<>(10,70), endpoints.get(1));
+      assertEquals(new AbstractMap.SimpleEntry<>(10,10), endpoints.get(2));
     }
   }
 
-  @Test(expected=IllegalArgumentException.class)
-  public void testDistributionRead_garbage() throws IOException {
-    BiasedSampler.readDistribution(new BufferedReader(new StringReader("blah foo")), true);
+  @Test
+  public void testDistributionRead_garbage() {
+    assertThrows(IllegalArgumentException.class, () -> BiasedSampler.readDistribution(new BufferedReader(new StringReader("blah foo")), true));
   }
 
-  @Test(expected=IllegalArgumentException.class)
-  public void testDistributionRead_negative() throws IOException {
-    BiasedSampler.readDistribution(new BufferedReader(new StringReader("80,-20")), true);
+  @Test
+  public void testDistributionRead_negative() {
+    assertThrows(IllegalArgumentException.class, () -> BiasedSampler.readDistribution(new BufferedReader(new StringReader("80,-20")), true));
   }
 
-  @Test(expected=IllegalArgumentException.class)
-  public void testDistributionRead_over100() throws IOException {
-    BiasedSampler.readDistribution(new BufferedReader(new StringReader("200,20")), true);
+  @Test
+  public void testDistributionRead_over100() {
+    assertThrows(IllegalArgumentException.class, () -> BiasedSampler.readDistribution(new BufferedReader(new StringReader("200,20")), true));
   }
 }
diff --git a/metron-contrib/pom.xml b/metron-contrib/pom.xml
index e10220b..dc8b828 100644
--- a/metron-contrib/pom.xml
+++ b/metron-contrib/pom.xml
@@ -44,11 +44,17 @@
     </modules>
     <dependencies>
         <dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>${global_junit_version}</version>
-			<scope>test</scope>
-		</dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
         <dependency>
 			<groupId>org.adrianwalker</groupId>
 			<artifactId>multiline-string</artifactId>
diff --git a/metron-interface/metron-rest/pom.xml b/metron-interface/metron-rest/pom.xml
index 630130c..ca59cb4 100644
--- a/metron-interface/metron-rest/pom.xml
+++ b/metron-interface/metron-rest/pom.xml
@@ -28,7 +28,6 @@
         <java.version>1.8</java.version>
         <antlr.version>4.5</antlr.version>
         <curator.version>2.7.1</curator.version>
-        <powermock.version>1.6.4</powermock.version>
         <spring.boot.version>2.0.1.RELEASE</spring.boot.version>
         <spring.kerberos.version>1.0.1.RELEASE</spring.kerberos.version>
         <spring.ldap.core.version>2.3.2.RELEASE</spring.ldap.core.version>
@@ -43,9 +42,6 @@
     </properties>
     <dependencies>
         <dependency>
-            <!-- There's an issue with the Javassist versions used by our version of Powermock. Keep the explicit test dep at the top
-            so it takes precedence during testing - https://github.com/powermock/powermock/issues/729
-            -->
             <groupId>org.javassist</groupId>
             <artifactId>javassist</artifactId>
             <version>3.20.0-GA</version>
@@ -376,6 +372,12 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-test</artifactId>
             <scope>test</scope>
+            <exclusions>
+                <exclusion>
+                    <groupId>junit</groupId>
+                    <artifactId>junit</artifactId>
+                </exclusion>
+            </exclusions>
         </dependency>
         <dependency>
             <groupId>com.h2database</groupId>
@@ -387,24 +389,6 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <version>${powermock.version}</version>
-            <scope>test</scope>
-            <exclusions>
-                <exclusion>
-                    <artifactId>javassist</artifactId>
-                    <groupId>org.javassist</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito</artifactId>
-            <version>${powermock.version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.apache.metron</groupId>
             <artifactId>metron-integration-test</artifactId>
             <version>${project.parent.version}</version>
@@ -521,6 +505,13 @@
             <artifactId>nimbus-jose-jwt</artifactId>
             <version>${jwt.version}</version>
         </dependency>
+        <!-- Needed to fix Mockito issue: https://github.com/mockito/mockito/issues/1606 -->
+        <dependency>
+            <groupId>net.bytebuddy</groupId>
+            <artifactId>byte-buddy</artifactId>
+            <version>1.10.2</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <dependencyManagement>
diff --git a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/HBaseConfig.java b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/HBaseConfig.java
index 7ce16f9..d97978f 100644
--- a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/HBaseConfig.java
+++ b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/HBaseConfig.java
@@ -55,10 +55,15 @@
         } catch (RestException e) {
           throw new IllegalStateException("Unable to retrieve the global config.", e);
         }
-      }, new HTableProvider());
+      }, getTableProvider());
       return userSettingsClient;
     }
 
+    // Used for testing
+    protected HTableProvider getTableProvider() {
+        return new HTableProvider();
+    }
+
     @Bean()
     public HBaseClient hBaseClient() {
       Map<String, Object> restConfig = null;
diff --git a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/HadoopConfig.java b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/HadoopConfig.java
index 98c8108..16c3654 100644
--- a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/HadoopConfig.java
+++ b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/HadoopConfig.java
@@ -40,11 +40,21 @@
     public org.apache.hadoop.conf.Configuration configuration() throws IOException {
         org.apache.hadoop.conf.Configuration configuration = new org.apache.hadoop.conf.Configuration();
         if (environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)) {
-            UserGroupInformation.setConfiguration(configuration);
+            setUGIConfiguration(configuration);
             String keyTabLocation = environment.getProperty(MetronRestConstants.KERBEROS_KEYTAB_SPRING_PROPERTY);
             String userPrincipal = environment.getProperty(MetronRestConstants.KERBEROS_PRINCIPLE_SPRING_PROPERTY);
-            UserGroupInformation.loginUserFromKeytab(userPrincipal, keyTabLocation);
+            loginUserFromKeytab(keyTabLocation, userPrincipal);
         }
         return configuration;
     }
+
+    // Exposed for testing
+    protected void setUGIConfiguration(org.apache.hadoop.conf.Configuration configuration) {
+        UserGroupInformation.setConfiguration(configuration);
+    }
+
+    // Exposed for testing
+    protected void loginUserFromKeytab(String keyTabLocation, String userPrincipal) throws IOException {
+        UserGroupInformation.loginUserFromKeytab(userPrincipal, keyTabLocation);
+    }
 }
diff --git a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/KnoxSSOAuthenticationFilter.java b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/KnoxSSOAuthenticationFilter.java
index d140a2f..e58063a 100644
--- a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/KnoxSSOAuthenticationFilter.java
+++ b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/KnoxSSOAuthenticationFilter.java
@@ -32,6 +32,7 @@
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.context.SecurityContext;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.core.userdetails.User;
 import org.springframework.security.core.userdetails.UserDetails;
@@ -49,6 +50,7 @@
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
+import java.security.cert.CertificateException;
 import java.text.ParseException;
 import java.util.Date;
 import java.util.List;
@@ -116,12 +118,12 @@
       if (serializedJWT != null) {
         SignedJWT jwtToken;
         try {
-          jwtToken = SignedJWT.parse(serializedJWT);
+          jwtToken = parseJWT(serializedJWT);
           String userName = jwtToken.getJWTClaimsSet().getSubject();
           LOG.info("SSO login user : {} ", userName);
           if (isValid(jwtToken, userName)) {
             Authentication authentication = getAuthentication(userName, httpRequest);
-            SecurityContextHolder.getContext().setAuthentication(authentication);
+            getSecurityContext().setAuthentication(authentication);
           }
         } catch (ParseException e) {
           LOG.warn("Unable to parse the JWT token", e);
@@ -131,6 +133,16 @@
     chain.doFilter(request, response);
   }
 
+  // exposed for testing
+  protected SecurityContext getSecurityContext() {
+    return SecurityContextHolder.getContext();
+  }
+
+  // exposed for testing
+  protected SignedJWT parseJWT(String serializedJWT) throws ParseException {
+    return SignedJWT.parse(serializedJWT);
+  }
+
   /**
    * Validates a Knox token with expiration and begin times and verifies the token with a public Knox key.
    * @param jwtToken Knox token
@@ -187,7 +199,7 @@
       if (jwtToken.getSignature() != null) {
         LOG.debug("SSO token signature is not null");
         try {
-          JWSVerifier verifier = new RSASSAVerifier(SecurityUtils.parseRSAPublicKey(getKnoxKey()));
+          JWSVerifier verifier = getRSASSAVerifier();
           if (jwtToken.verify(verifier)) {
             LOG.debug("SSO token has been successfully verified");
             return true;
@@ -202,6 +214,11 @@
     return false;
   }
 
+  // exposed for testing
+  protected RSASSAVerifier getRSASSAVerifier() throws CertificateException, IOException {
+    return new RSASSAVerifier(SecurityUtils.parseRSAPublicKey(getKnoxKey()));
+  }
+
   /**
    * Encapsulate the acquisition of the JWT token from HTTP cookies within the
    * request.
diff --git a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/RestTemplateConfig.java b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/RestTemplateConfig.java
index 7443ccd..9034974 100644
--- a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/RestTemplateConfig.java
+++ b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/config/RestTemplateConfig.java
@@ -44,11 +44,16 @@
         if (environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)) {
             String keyTabLocation = environment.getProperty(MetronRestConstants.KERBEROS_KEYTAB_SPRING_PROPERTY);
             String userPrincipal = environment.getProperty(MetronRestConstants.KERBEROS_PRINCIPLE_SPRING_PROPERTY);
-            return new KerberosRestTemplate(keyTabLocation, userPrincipal);
+            return getKerberosRestTemplate(keyTabLocation, userPrincipal);
         } else {
             return new RestTemplate();
         }
 
     }
 
+    // Exposed for testing
+    protected KerberosRestTemplate getKerberosRestTemplate(String keyTabLocation, String userPrincipal) {
+        return new KerberosRestTemplate(keyTabLocation, userPrincipal);
+    }
+
 }
diff --git a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/DockerStormCLIWrapper.java b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/DockerStormCLIWrapper.java
index 168d11d..6650fc3 100644
--- a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/DockerStormCLIWrapper.java
+++ b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/DockerStormCLIWrapper.java
@@ -69,7 +69,8 @@
     }
   }
 
-  private ProcessBuilder getDockerEnvironmentProcessBuilder() {
+  // Exposed for testing
+  protected ProcessBuilder getDockerEnvironmentProcessBuilder() {
     String[] command = {"docker-machine", "env", "metron-machine"};
     return new ProcessBuilder(command);
   }
diff --git a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/HdfsServiceImpl.java b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/HdfsServiceImpl.java
index d637ecf..d88d342 100644
--- a/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/HdfsServiceImpl.java
+++ b/metron-interface/metron-rest/src/main/java/org/apache/metron/rest/service/impl/HdfsServiceImpl.java
@@ -52,7 +52,7 @@
     @Override
     public List<String> list(Path path) throws RestException {
       try {
-          return Arrays.asList(FileSystem.get(configuration).listStatus(path)).stream().map(fileStatus -> fileStatus.getPath().getName()).collect(Collectors.toList());
+          return Arrays.asList(getFileSystem().listStatus(path)).stream().map(fileStatus -> fileStatus.getPath().getName()).collect(Collectors.toList());
       } catch (IOException e) {
           throw new RestException(e);
       }
@@ -62,7 +62,7 @@
     public String read(Path path) throws RestException {
       ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
       try {
-        IOUtils.copyBytes(FileSystem.get(configuration).open(path), byteArrayOutputStream, configuration);
+        IOUtils.copyBytes(getFileSystem().open(path), byteArrayOutputStream, configuration);
       } catch (FileNotFoundException e) {
         return null;
       } catch (IOException e) {
@@ -90,11 +90,11 @@
         permission = new FsPermission(userAction, groupAction, otherAction);
         setPermissions = true;
       }
-      fsDataOutputStream = FileSystem.get(configuration).create(path, true);
+      fsDataOutputStream = getFileSystem().create(path, true);
       fsDataOutputStream.write(contents);
       fsDataOutputStream.close();
       if(setPermissions) {
-        FileSystem.get(configuration).setPermission(path, permission);
+        getFileSystem().setPermission(path, permission);
       }
     } catch (IOException e) {
       throw new RestException(e);
@@ -104,7 +104,7 @@
     @Override
     public boolean delete(Path path, boolean recursive) throws RestException {
       try {
-        return FileSystem.get(configuration).delete(path, recursive);
+        return getFileSystem().delete(path, recursive);
       } catch (IOException e) {
         throw new RestException(e);
       }
@@ -113,9 +113,14 @@
     @Override
     public boolean mkdirs(Path path) throws RestException {
       try {
-        return FileSystem.get(configuration).mkdirs(path);
+        return getFileSystem().mkdirs(path);
       } catch (IOException e) {
         throw new RestException(e);
       }
     }
- }
+
+    // Exposed for testing
+    protected FileSystem getFileSystem() throws IOException {
+        return FileSystem.get(configuration);
+    }
+}
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/MetronRestApplicationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/MetronRestApplicationTest.java
deleted file mode 100644
index 3025932..0000000
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/MetronRestApplicationTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.metron.rest;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.springframework.boot.SpringApplication;
-
-import static org.mockito.Mockito.times;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.verifyStatic;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({SpringApplication.class})
-public class MetronRestApplicationTest {
-
-  @Test
-  public void test() {
-    mockStatic(SpringApplication.class);
-    String[] args = {"arg1", "arg2"};
-    MetronRestApplication.main(args);
-    verifyStatic(times(1));
-    SpringApplication.run(MetronRestApplication.class, args);
-  }
-}
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/HBaseConfigTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/HBaseConfigTest.java
index 720f1ff..2b56260 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/HBaseConfigTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/HBaseConfigTest.java
@@ -17,41 +17,31 @@
  */
 package org.apache.metron.rest.config;
 
-import static org.apache.metron.rest.user.UserSettingsClient.USER_SETTINGS_HBASE_CF;
-import static org.apache.metron.rest.user.UserSettingsClient.USER_SETTINGS_HBASE_TABLE;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
-
-import java.util.HashMap;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.metron.common.configuration.EnrichmentConfigurations;
 import org.apache.metron.hbase.HTableProvider;
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
 import org.apache.metron.rest.service.GlobalConfigService;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HTableProvider.class, HBaseConfiguration.class, HBaseConfig.class})
+import java.util.HashMap;
+
+import static org.apache.metron.rest.user.UserSettingsClient.USER_SETTINGS_HBASE_CF;
+import static org.apache.metron.rest.user.UserSettingsClient.USER_SETTINGS_HBASE_TABLE;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.Mockito.*;
+
 public class HBaseConfigTest {
 
   private GlobalConfigService globalConfigService;
   private HBaseConfig hBaseConfig;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     globalConfigService = mock(GlobalConfigService.class);
-    hBaseConfig = new HBaseConfig(globalConfigService);
-    mockStatic(HBaseConfiguration.class);
+    hBaseConfig = mock(HBaseConfig.class,
+            withSettings().useConstructor(globalConfigService).defaultAnswer(CALLS_REAL_METHODS));
   }
 
   @Test
@@ -61,13 +51,11 @@
       put(USER_SETTINGS_HBASE_CF, "global_config_user_settings_cf");
     }});
     HTableProvider htableProvider = mock(HTableProvider.class);
-    whenNew(HTableProvider.class).withNoArguments().thenReturn(htableProvider);
-    Configuration configuration = mock(Configuration.class);
-    when(HBaseConfiguration.create()).thenReturn(configuration);
 
+    doReturn(htableProvider).when(hBaseConfig).getTableProvider();
     hBaseConfig.userSettingsClient();
-    verify(htableProvider).getTable(configuration, "global_config_user_settings_table");
-    verifyZeroInteractions(htableProvider);
+    verify(htableProvider).getTable(any(Configuration.class), eq("global_config_user_settings_table"));
+    verifyNoMoreInteractions(htableProvider);
   }
 
   @Test
@@ -76,7 +64,7 @@
       put(EnrichmentConfigurations.TABLE_PROVIDER, MockHBaseTableProvider.class.getName());
       put(EnrichmentConfigurations.TABLE_NAME, "enrichment_list_hbase_table_name");
     }});
-    Assert.assertNotNull(hBaseConfig.hBaseClient());
+    assertNotNull(hBaseConfig.hBaseClient());
   }
 
 }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/HadoopConfigTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/HadoopConfigTest.java
index 7504e3e..ffbff9e 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/HadoopConfigTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/HadoopConfigTest.java
@@ -18,40 +18,25 @@
 package org.apache.metron.rest.config;
 
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.security.UserGroupInformation;
 import org.apache.metron.rest.MetronRestConstants;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
 
 import java.io.IOException;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.never;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
 
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.verifyStatic;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HadoopConfig.class, UserGroupInformation.class})
 public class HadoopConfigTest {
 
   private Environment environment;
   private HadoopConfig hadoopConfig;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     environment = mock(Environment.class);
-    hadoopConfig = new HadoopConfig(environment);
-    mockStatic(UserGroupInformation.class);
+    hadoopConfig = spy(new HadoopConfig(environment));
   }
 
   @Test
@@ -61,11 +46,13 @@
 
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(true);
 
-    Configuration configuration = hadoopConfig.configuration();
+    doNothing().when(hadoopConfig).setUGIConfiguration(any());
+    doNothing().when(hadoopConfig).loginUserFromKeytab(any(), any());
 
-    verifyStatic();
-    UserGroupInformation.setConfiguration(any(Configuration.class));
-    UserGroupInformation.loginUserFromKeytab("metron keytabLocation", "metron principal");
+    hadoopConfig.configuration();
+
+    verify(hadoopConfig).setUGIConfiguration(any());
+    verify(hadoopConfig).loginUserFromKeytab("metron keytabLocation", "metron principal");
   }
 
   @Test
@@ -74,9 +61,13 @@
 
     Configuration configuration = hadoopConfig.configuration();
 
-    verifyStatic(never());
-    UserGroupInformation.setConfiguration(any(Configuration.class));
-    UserGroupInformation.loginUserFromKeytab(anyString(), anyString());
+    doNothing().when(hadoopConfig).setUGIConfiguration(any());
+    doNothing().when(hadoopConfig).loginUserFromKeytab(any(), any());
+
+    hadoopConfig.configuration();
+
+    verify(hadoopConfig, times(0)).setUGIConfiguration(any());
+    verify(hadoopConfig, times(0)).loginUserFromKeytab(any(), any());
 
     assertEquals("simple", configuration.get("hadoop.security.authentication"));
   }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/KafkaConfigTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/KafkaConfigTest.java
index dab924f..0e56403 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/KafkaConfigTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/KafkaConfigTest.java
@@ -17,30 +17,31 @@
  */
 package org.apache.metron.rest.config;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.apache.metron.rest.MetronRestConstants;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.springframework.core.env.Environment;
 
 import java.util.Map;
-import org.apache.metron.rest.MetronRestConstants;
-import org.junit.Before;
-import org.junit.Test;
-import org.springframework.core.env.Environment;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 public class KafkaConfigTest {
 
   private Environment environment;
   private KafkaConfig kafkaConfig;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     environment = mock(Environment.class);
     kafkaConfig = new KafkaConfig(environment);
   }
 
   @Test
-  public void kafkaConfigShouldProperlyReturnConsumerProperties() throws Exception {
+  public void kafkaConfigShouldProperlyReturnConsumerProperties() {
     when(environment.getProperty(MetronRestConstants.KAFKA_BROKER_URL_SPRING_PROPERTY)).thenReturn("broker urls");
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
 
@@ -56,7 +57,7 @@
   }
 
   @Test
-  public void kafkaConfigShouldProperlyReturnProducerProperties() throws Exception {
+  public void kafkaConfigShouldProperlyReturnProducerProperties() {
     when(environment.getProperty(MetronRestConstants.KAFKA_BROKER_URL_SPRING_PROPERTY)).thenReturn("broker urls");
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
 
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/KnoxSSOAuthenticationFilterTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/KnoxSSOAuthenticationFilterTest.java
index e00bc70..1fab5ce 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/KnoxSSOAuthenticationFilterTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/KnoxSSOAuthenticationFilterTest.java
@@ -17,6 +17,22 @@
  */
 package org.apache.metron.rest.config;
 
+import static junit.framework.TestCase.assertNull;
+import static junit.framework.TestCase.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
+import static org.mockito.Mockito.when;
+
+
 import com.nimbusds.jose.JOSEException;
 import com.nimbusds.jose.JWSAlgorithm;
 import com.nimbusds.jose.JWSHeader;
@@ -25,25 +41,6 @@
 import com.nimbusds.jose.util.Base64URL;
 import com.nimbusds.jwt.JWTClaimsSet;
 import com.nimbusds.jwt.SignedJWT;
-import org.apache.commons.io.FileUtils;
-import org.apache.metron.rest.security.SecurityUtils;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
-import org.springframework.ldap.core.AttributesMapper;
-import org.springframework.ldap.core.LdapTemplate;
-import org.springframework.ldap.query.LdapQuery;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContext;
-import org.springframework.security.core.context.SecurityContextHolder;
-
-import javax.servlet.FilterChain;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
 import java.io.File;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Path;
@@ -52,40 +49,28 @@
 import java.text.ParseException;
 import java.util.Arrays;
 import java.util.Date;
+import javax.servlet.FilterChain;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import org.apache.commons.io.FileUtils;
+import org.junit.jupiter.api.Test;
+import org.springframework.ldap.core.AttributesMapper;
+import org.springframework.ldap.core.LdapTemplate;
+import org.springframework.ldap.query.LdapQuery;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContext;
 
-import static junit.framework.TestCase.assertNull;
-import static junit.framework.TestCase.assertTrue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({KnoxSSOAuthenticationFilter.class, SignedJWT.class, SecurityContextHolder.class, SecurityUtils.class, RSASSAVerifier.class})
 public class KnoxSSOAuthenticationFilterTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   @Test
   public void shouldThrowExceptionOnMissingLdapTemplate() {
-    exception.expect(IllegalStateException.class);
-    exception.expectMessage("KnoxSSO requires LDAP. You must add 'ldap' to the active profiles.");
-
-    new KnoxSSOAuthenticationFilter("userSearchBase",
-            mock(Path.class),
-            "knoxKeyString",
-            "knoxCookie",
-            null
-            );
+    IllegalStateException e =
+        assertThrows(
+            IllegalStateException.class,
+            () ->
+                new KnoxSSOAuthenticationFilter(
+                    "userSearchBase", mock(Path.class), "knoxKeyString", "knoxCookie", null));
+    assertEquals("KnoxSSO requires LDAP. You must add 'ldap' to the active profiles.", e.getMessage());
   }
 
   @Test
@@ -100,19 +85,17 @@
     ServletResponse response = mock(ServletResponse.class);
     FilterChain chain = mock(FilterChain.class);
     SignedJWT signedJWT = mock(SignedJWT.class);
-    mockStatic(SignedJWT.class);
     JWTClaimsSet jwtClaimsSet = new JWTClaimsSet.Builder().subject("userName").build();
     Authentication authentication = mock(Authentication.class);
     SecurityContext securityContext = mock(SecurityContext.class);
-    mockStatic(SecurityContextHolder.class);
 
     when(request.getHeader("Authorization")).thenReturn(null);
     doReturn("serializedJWT").when(knoxSSOAuthenticationFilter).getJWTFromCookie(request);
-    when(SignedJWT.parse("serializedJWT")).thenReturn(signedJWT);
+    doReturn(signedJWT).when(knoxSSOAuthenticationFilter).parseJWT(any());
     when(signedJWT.getJWTClaimsSet()).thenReturn(jwtClaimsSet);
     doReturn(true).when(knoxSSOAuthenticationFilter).isValid(signedJWT, "userName");
     doReturn(authentication).when(knoxSSOAuthenticationFilter).getAuthentication("userName", request);
-    when(SecurityContextHolder.getContext()).thenReturn(securityContext);
+    doReturn(securityContext).when(knoxSSOAuthenticationFilter).getSecurityContext();
 
     knoxSSOAuthenticationFilter.doFilter(request, response, chain);
 
@@ -153,12 +136,10 @@
     HttpServletRequest request = mock(HttpServletRequest.class);
     ServletResponse response = mock(ServletResponse.class);
     FilterChain chain = mock(FilterChain.class);
-    SignedJWT signedJWT = mock(SignedJWT.class);
-    mockStatic(SignedJWT.class);
 
     when(request.getHeader("Authorization")).thenReturn(null);
     doReturn("serializedJWT").when(knoxSSOAuthenticationFilter).getJWTFromCookie(request);
-    when(SignedJWT.parse("serializedJWT")).thenThrow(new ParseException("parse exception", 0));
+    doThrow(new ParseException("parse exception", 0)).when(knoxSSOAuthenticationFilter).parseJWT(any());
 
     knoxSSOAuthenticationFilter.doFilter(request, response, chain);
 
@@ -179,12 +160,11 @@
     ServletResponse response = mock(ServletResponse.class);
     FilterChain chain = mock(FilterChain.class);
     SignedJWT signedJWT = mock(SignedJWT.class);
-    mockStatic(SignedJWT.class);
     JWTClaimsSet jwtClaimsSet = new JWTClaimsSet.Builder().subject("userName").build();
 
     when(request.getHeader("Authorization")).thenReturn(null);
     doReturn("serializedJWT").when(knoxSSOAuthenticationFilter).getJWTFromCookie(request);
-    when(SignedJWT.parse("serializedJWT")).thenReturn(signedJWT);
+    doReturn(signedJWT).when(knoxSSOAuthenticationFilter).parseJWT(any());
     when(signedJWT.getJWTClaimsSet()).thenReturn(jwtClaimsSet);
     doReturn(false).when(knoxSSOAuthenticationFilter).isValid(signedJWT, "userName");
 
@@ -281,9 +261,7 @@
       when(jwtToken.getSignature()).thenReturn(signature);
       RSAPublicKey rsaPublicKey = mock(RSAPublicKey.class);
       RSASSAVerifier rsaSSAVerifier = mock(RSASSAVerifier.class);
-      mockStatic(SecurityUtils.class);
-      when(SecurityUtils.parseRSAPublicKey("knoxKeyString")).thenReturn(rsaPublicKey);
-      whenNew(RSASSAVerifier.class).withArguments(rsaPublicKey).thenReturn(rsaSSAVerifier);
+      doReturn(rsaSSAVerifier).when(knoxSSOAuthenticationFilter).getRSASSAVerifier();
       {
         // Should be invalid if token verify throws an exception
         when(jwtToken.verify(rsaSSAVerifier)).thenThrow(new JOSEException("verify exception"));
@@ -365,7 +343,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void getAuthenticationShouldProperlyPopulateAuthentication() throws Exception {
+  public void getAuthenticationShouldProperlyPopulateAuthentication() {
     LdapTemplate ldapTemplate = mock(LdapTemplate.class);
     KnoxSSOAuthenticationFilter knoxSSOAuthenticationFilter = spy(new KnoxSSOAuthenticationFilter("ou=people,dc=hadoop,dc=apache,dc=org",
             mock(Path.class),
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/MetronAuthoritiesMapperTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/MetronAuthoritiesMapperTest.java
index b3af370..f10ad92 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/MetronAuthoritiesMapperTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/MetronAuthoritiesMapperTest.java
@@ -17,8 +17,7 @@
  */
 package org.apache.metron.rest.config;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.authority.SimpleGrantedAuthority;
 
@@ -26,9 +25,8 @@
 import java.util.Collection;
 import java.util.List;
 
-import static org.apache.metron.rest.MetronRestConstants.SECURITY_ROLE_ADMIN;
-import static org.apache.metron.rest.MetronRestConstants.SECURITY_ROLE_PREFIX;
-import static org.apache.metron.rest.MetronRestConstants.SECURITY_ROLE_USER;
+import static org.apache.metron.rest.MetronRestConstants.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class MetronAuthoritiesMapperTest {
 
@@ -47,8 +45,8 @@
 
     // should map "ACME_METRON_USER" to "ROLE_USER"
     Collection<? extends GrantedAuthority> actuals = mapper.mapAuthorities(input);
-    Assert.assertEquals(1, actuals.size());
-    Assert.assertEquals(SECURITY_ROLE_PREFIX + SECURITY_ROLE_USER, actuals.iterator().next().getAuthority());
+    assertEquals(1, actuals.size());
+    assertEquals(SECURITY_ROLE_PREFIX + SECURITY_ROLE_USER, actuals.iterator().next().getAuthority());
   }
 
   @Test
@@ -63,8 +61,8 @@
 
     // should map "ACME_ADMIN" to "ROLE_ADMIN"
     Collection<? extends GrantedAuthority> actuals = mapper.mapAuthorities(input);
-    Assert.assertEquals(1, actuals.size());
-    Assert.assertEquals(SECURITY_ROLE_PREFIX + SECURITY_ROLE_ADMIN, actuals.iterator().next().getAuthority());
+    assertEquals(1, actuals.size());
+    assertEquals(SECURITY_ROLE_PREFIX + SECURITY_ROLE_ADMIN, actuals.iterator().next().getAuthority());
   }
 
   @Test
@@ -79,7 +77,7 @@
     input.add(new SimpleGrantedAuthority("ROLE_" + "YET_ANOTHER_ROLE"));
 
     Collection<? extends GrantedAuthority> actuals = mapper.mapAuthorities(input);
-    Assert.assertEquals(0, actuals.size());
+    assertEquals(0, actuals.size());
   }
 
   @Test
@@ -95,7 +93,7 @@
 
     // should map "ACME_ADMIN" to "ROLE_ADMIN"
     Collection<? extends GrantedAuthority> actuals = mapper.mapAuthorities(input);
-    Assert.assertEquals(1, actuals.size());
-    Assert.assertEquals(SECURITY_ROLE_PREFIX + SECURITY_ROLE_ADMIN, actuals.iterator().next().getAuthority());
+    assertEquals(1, actuals.size());
+    assertEquals(SECURITY_ROLE_PREFIX + SECURITY_ROLE_ADMIN, actuals.iterator().next().getAuthority());
   }
 }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/RestTemplateConfigTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/RestTemplateConfigTest.java
index 0d9d620..bafd9ca 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/RestTemplateConfigTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/config/RestTemplateConfigTest.java
@@ -18,50 +18,44 @@
 package org.apache.metron.rest.config;
 
 import org.apache.metron.rest.MetronRestConstants;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
-import org.springframework.security.kerberos.client.KerberosRestTemplate;
-import org.springframework.web.client.RestTemplate;
 
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.verifyNew;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
+import static org.mockito.Mockito.*;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({RestTemplateConfig.class, KerberosRestTemplate.class, RestTemplate.class})
 public class RestTemplateConfigTest {
 
   private Environment environment;
   private RestTemplateConfig restTemplateConfig;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     environment = mock(Environment.class);
-    restTemplateConfig = new RestTemplateConfig(environment);
+    restTemplateConfig = mock(RestTemplateConfig.class,
+            withSettings().useConstructor(environment).defaultAnswer(CALLS_REAL_METHODS));
   }
 
   @Test
-  public void restTemplateShouldReturnProperTemplate() throws Exception {
+  public void restTemplateShouldReturnProperNonKerberosTemplate() {
     when(environment.getProperty(MetronRestConstants.KERBEROS_KEYTAB_SPRING_PROPERTY)).thenReturn("metron keytabLocation");
     when(environment.getProperty(MetronRestConstants.KERBEROS_PRINCIPLE_SPRING_PROPERTY)).thenReturn("metron principal");
 
-    whenNew(KerberosRestTemplate.class).withParameterTypes(String.class, String.class).withArguments("metron keytabLocation", "metron principal").thenReturn(null);
+    when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
+
+    verify(restTemplateConfig, times(0)).getKerberosRestTemplate(any(), any());
+  }
+
+  @Test
+  public void restTemplateShouldReturnProperKerberosTemplate() {
+    when(environment.getProperty(MetronRestConstants.KERBEROS_KEYTAB_SPRING_PROPERTY)).thenReturn("metron keytabLocation");
+    when(environment.getProperty(MetronRestConstants.KERBEROS_PRINCIPLE_SPRING_PROPERTY)).thenReturn("metron principal");
+
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(true);
 
     restTemplateConfig.restTemplate();
-    verifyNew(KerberosRestTemplate.class).withArguments("metron keytabLocation", "metron principal");
+    verify(restTemplateConfig).getKerberosRestTemplate("metron keytabLocation", "metron principal");
 
-    whenNew(RestTemplate.class).withNoArguments().thenReturn(null);
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
-
-    restTemplateConfig.restTemplate();
-    verifyNew(RestTemplate.class).withNoArguments();
   }
-
-
 }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/AlertsUIControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/AlertsUIControllerIntegrationTest.java
index 49863d6..28a4098 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/AlertsUIControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/AlertsUIControllerIntegrationTest.java
@@ -17,36 +17,32 @@
  */
 package org.apache.metron.rest.controller;
 
-import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
-import static org.hamcrest.Matchers.hasSize;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
-import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.integration.ComponentRunner;
 import org.apache.metron.integration.UnableToStartException;
 import org.apache.metron.integration.components.KafkaComponent;
 import org.apache.metron.rest.service.AlertsUIService;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
 
-@RunWith(SpringRunner.class)
+import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
+import static org.hamcrest.Matchers.hasSize;
+import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
+import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
+import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class AlertsUIControllerIntegrationTest {
@@ -135,7 +131,7 @@
   private String admin = "admin";
   private String password = "password";
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     for (String user : alertsUIService.findAllAlertsUIUserSettings().keySet()) {
       alertsUIService.deleteAlertsUIUserSettings(user);
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/GlobalConfigControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/GlobalConfigControllerIntegrationTest.java
index 4351959..ad2edcc 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/GlobalConfigControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/GlobalConfigControllerIntegrationTest.java
@@ -19,14 +19,14 @@
 
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.rest.service.GlobalConfigService;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
@@ -36,13 +36,11 @@
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class GlobalConfigControllerIntegrationTest {
@@ -70,7 +68,7 @@
     private String user = "user";
     private String password = "password";
 
-    @Before
+    @BeforeEach
     public void setup() throws Exception {
         this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
     }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/GrokControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/GrokControllerIntegrationTest.java
index ee7587e..1d0a510 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/GrokControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/GrokControllerIntegrationTest.java
@@ -17,22 +17,22 @@
  */
 package org.apache.metron.rest.controller;
 
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.io.FileUtils;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
 
 import java.io.File;
+import java.nio.charset.StandardCharsets;
 
 import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
@@ -40,11 +40,9 @@
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class GrokControllerIntegrationTest {
@@ -86,7 +84,7 @@
     private String user = "user";
     private String password = "password";
 
-    @Before
+    @BeforeEach
     public void setup() throws Exception {
         this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
     }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/HdfsControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/HdfsControllerIntegrationTest.java
index a5c6043..2d5a2f4 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/HdfsControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/HdfsControllerIntegrationTest.java
@@ -17,32 +17,31 @@
  */
 package org.apache.metron.rest.controller;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.hadoop.fs.Path;
 import org.apache.metron.rest.service.HdfsService;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
 
+import java.nio.charset.StandardCharsets;
+
 import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class HdfsControllerIntegrationTest {
@@ -61,7 +60,7 @@
     private String path = "./target/hdfsTest.txt";
     private String fileContents = "file contents";
 
-    @Before
+    @BeforeEach
     public void setup() throws Exception {
         this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
     }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/KafkaControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/KafkaControllerIntegrationTest.java
index 5719a41..59858b1 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/KafkaControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/KafkaControllerIntegrationTest.java
@@ -17,17 +17,6 @@
  */
 package org.apache.metron.rest.controller;
 
-import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
-import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
 import kafka.common.TopicAlreadyMarkedForDeletionException;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.integration.ComponentRunner;
@@ -35,22 +24,29 @@
 import org.apache.metron.integration.components.KafkaComponent;
 import org.apache.metron.rest.service.KafkaService;
 import org.hamcrest.Matchers;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.MvcResult;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
 import org.springframework.web.util.NestedServletException;
 
-@RunWith(SpringRunner.class)
+import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
+import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
+import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
+import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class KafkaControllerIntegrationTest {
@@ -142,7 +138,7 @@
   private String user = "user";
   private String password = "password";
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     runner = new ComponentRunner.Builder()
             .withComponent("kafka", kafkaWithZKComponent)
@@ -280,7 +276,7 @@
     }
   }
 
-  @After
+  @AfterEach
   public void tearDown() {
     runner.stop();
   }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/MetaAlertControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/MetaAlertControllerIntegrationTest.java
index 8e3abe5..63253d0 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/MetaAlertControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/MetaAlertControllerIntegrationTest.java
@@ -18,21 +18,7 @@
 
 package org.apache.metron.rest.controller;
 
-import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
-import static org.hamcrest.Matchers.equalTo;
-import static org.hamcrest.Matchers.greaterThan;
-import static org.hamcrest.Matchers.hasSize;
-import static org.hamcrest.Matchers.notNullValue;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
-import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
-import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
-
 import com.google.common.collect.ImmutableMap;
-import java.util.ArrayList;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.metron.common.utils.JSONUtils;
@@ -42,21 +28,31 @@
 import org.apache.metron.indexing.dao.metaalert.MetaAlertConstants;
 import org.apache.metron.indexing.dao.search.GetRequest;
 import org.apache.metron.rest.service.MetaAlertService;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
 
-@RunWith(SpringRunner.class)
+import java.util.ArrayList;
+
+import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
+import static org.hamcrest.Matchers.*;
+import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
+import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
+import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class MetaAlertControllerIntegrationTest extends DaoControllerTest {
@@ -105,7 +101,7 @@
   @Multiline
   public static String metaAlertData;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
     ImmutableMap<String, String> testData = ImmutableMap.of(
@@ -116,7 +112,7 @@
     loadTestData(testData);
   }
 
-  @After
+  @AfterEach
   public void cleanup() {
     InMemoryMetaAlertDao.clear();
   }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/PcapControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/PcapControllerIntegrationTest.java
index 737f8bb..3564e8a 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/PcapControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/PcapControllerIntegrationTest.java
@@ -17,7 +17,6 @@
  */
 package org.apache.metron.rest.controller;
 
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.io.FileUtils;
 import org.apache.hadoop.fs.Path;
@@ -31,36 +30,33 @@
 import org.apache.metron.pcap.filter.query.QueryPcapFilter;
 import org.apache.metron.rest.mock.MockPcapJob;
 import org.apache.metron.rest.service.PcapService;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
 
 import java.io.File;
+import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.Map;
 
 import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.header;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class PcapControllerIntegrationTest {
@@ -126,7 +122,7 @@
   private String user2 = "user2";
   private String password = "password";
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
     InMemoryJobManager jobManager = (InMemoryJobManager) wac.getBean("jobManager");
@@ -152,21 +148,21 @@
             .andExpect(content().contentType(MediaType.parseMediaType("application/json;charset=UTF-8")))
             .andExpect(jsonPath("$.jobStatus").value("RUNNING"));
 
-    Assert.assertEquals("/base/path", mockPcapJob.getBasePath());
-    Assert.assertEquals("/base/interim/result/path", mockPcapJob.getBaseInterrimResultPath());
-    Assert.assertEquals("/final/output/path", mockPcapJob.getFinalOutputPath());
-    Assert.assertEquals(10000000, mockPcapJob.getStartTimeNs());
-    Assert.assertEquals(20000000, mockPcapJob.getEndTimeNs());
-    Assert.assertEquals(2, mockPcapJob.getNumReducers());
-    Assert.assertTrue(mockPcapJob.getFilterImpl() instanceof FixedPcapFilter.Configurator);
+    assertEquals("/base/path", mockPcapJob.getBasePath());
+    assertEquals("/base/interim/result/path", mockPcapJob.getBaseInterrimResultPath());
+    assertEquals("/final/output/path", mockPcapJob.getFinalOutputPath());
+    assertEquals(10000000, mockPcapJob.getStartTimeNs());
+    assertEquals(20000000, mockPcapJob.getEndTimeNs());
+    assertEquals(2, mockPcapJob.getNumReducers());
+    assertTrue(mockPcapJob.getFilterImpl() instanceof FixedPcapFilter.Configurator);
     Map<String, String> actualFixedFields = mockPcapJob.getFixedFields();
-    Assert.assertEquals("192.168.1.2", actualFixedFields.get(Constants.Fields.SRC_ADDR.getName()));
-    Assert.assertEquals("2000", actualFixedFields.get(Constants.Fields.SRC_PORT.getName()));
-    Assert.assertEquals("192.168.1.1", actualFixedFields.get(Constants.Fields.DST_ADDR.getName()));
-    Assert.assertEquals("1000", actualFixedFields.get(Constants.Fields.DST_PORT.getName()));
-    Assert.assertEquals("true", actualFixedFields.get(Constants.Fields.INCLUDES_REVERSE_TRAFFIC.getName()));
-    Assert.assertEquals("TCP", actualFixedFields.get(Constants.Fields.PROTOCOL.getName()));
-    Assert.assertEquals("filter", actualFixedFields.get(PcapHelper.PacketFields.PACKET_FILTER.getName()));
+    assertEquals("192.168.1.2", actualFixedFields.get(Constants.Fields.SRC_ADDR.getName()));
+    assertEquals("2000", actualFixedFields.get(Constants.Fields.SRC_PORT.getName()));
+    assertEquals("192.168.1.1", actualFixedFields.get(Constants.Fields.DST_ADDR.getName()));
+    assertEquals("1000", actualFixedFields.get(Constants.Fields.DST_PORT.getName()));
+    assertEquals("true", actualFixedFields.get(Constants.Fields.INCLUDES_REVERSE_TRAFFIC.getName()));
+    assertEquals("TCP", actualFixedFields.get(Constants.Fields.PROTOCOL.getName()));
+    assertEquals("filter", actualFixedFields.get(PcapHelper.PacketFields.PACKET_FILTER.getName()));
   }
 
 
@@ -181,22 +177,22 @@
             .andExpect(content().contentType(MediaType.parseMediaType("application/json;charset=UTF-8")))
             .andExpect(jsonPath("$.jobStatus").value("RUNNING"));
 
-    Assert.assertEquals("/apps/metron/pcap/input", mockPcapJob.getBasePath());
-    Assert.assertEquals("/apps/metron/pcap/interim", mockPcapJob.getBaseInterrimResultPath());
-    Assert.assertEquals("/apps/metron/pcap/output", mockPcapJob.getFinalOutputPath());
-    Assert.assertEquals(0, mockPcapJob.getStartTimeNs());
-    Assert.assertTrue(beforeJobTime < mockPcapJob.getEndTimeNs() / 1000000);
-    Assert.assertTrue(System.currentTimeMillis() > mockPcapJob.getEndTimeNs() / 1000000);
-    Assert.assertEquals(10, mockPcapJob.getNumReducers());
-    Assert.assertTrue(mockPcapJob.getFilterImpl() instanceof FixedPcapFilter.Configurator);
+    assertEquals("/apps/metron/pcap/input", mockPcapJob.getBasePath());
+    assertEquals("/apps/metron/pcap/interim", mockPcapJob.getBaseInterrimResultPath());
+    assertEquals("/apps/metron/pcap/output", mockPcapJob.getFinalOutputPath());
+    assertEquals(0, mockPcapJob.getStartTimeNs());
+    assertTrue(beforeJobTime < mockPcapJob.getEndTimeNs() / 1000000);
+    assertTrue(System.currentTimeMillis() > mockPcapJob.getEndTimeNs() / 1000000);
+    assertEquals(10, mockPcapJob.getNumReducers());
+    assertTrue(mockPcapJob.getFilterImpl() instanceof FixedPcapFilter.Configurator);
     Map<String, String> actualFixedFields = mockPcapJob.getFixedFields();
-    Assert.assertEquals("192.168.1.2", actualFixedFields.get(Constants.Fields.SRC_ADDR.getName()));
-    Assert.assertEquals("2000", actualFixedFields.get(Constants.Fields.SRC_PORT.getName()));
-    Assert.assertEquals("192.168.1.1", actualFixedFields.get(Constants.Fields.DST_ADDR.getName()));
-    Assert.assertEquals("1000", actualFixedFields.get(Constants.Fields.DST_PORT.getName()));
-    Assert.assertEquals("true", actualFixedFields.get(Constants.Fields.INCLUDES_REVERSE_TRAFFIC.getName()));
-    Assert.assertEquals("TCP", actualFixedFields.get(Constants.Fields.PROTOCOL.getName()));
-    Assert.assertEquals("filter", actualFixedFields.get(PcapHelper.PacketFields.PACKET_FILTER.getName()));
+    assertEquals("192.168.1.2", actualFixedFields.get(Constants.Fields.SRC_ADDR.getName()));
+    assertEquals("2000", actualFixedFields.get(Constants.Fields.SRC_PORT.getName()));
+    assertEquals("192.168.1.1", actualFixedFields.get(Constants.Fields.DST_ADDR.getName()));
+    assertEquals("1000", actualFixedFields.get(Constants.Fields.DST_PORT.getName()));
+    assertEquals("true", actualFixedFields.get(Constants.Fields.INCLUDES_REVERSE_TRAFFIC.getName()));
+    assertEquals("TCP", actualFixedFields.get(Constants.Fields.PROTOCOL.getName()));
+    assertEquals("filter", actualFixedFields.get(PcapHelper.PacketFields.PACKET_FILTER.getName()));
   }
 
   @Test
@@ -209,14 +205,14 @@
             .andExpect(content().contentType(MediaType.parseMediaType("application/json;charset=UTF-8")))
             .andExpect(jsonPath("$.jobStatus").value("RUNNING"));
 
-    Assert.assertEquals("/base/path", mockPcapJob.getBasePath());
-    Assert.assertEquals("/base/interim/result/path", mockPcapJob.getBaseInterrimResultPath());
-    Assert.assertEquals("/final/output/path", mockPcapJob.getFinalOutputPath());
-    Assert.assertEquals(10000000, mockPcapJob.getStartTimeNs());
-    Assert.assertEquals(20000000, mockPcapJob.getEndTimeNs());
-    Assert.assertEquals(2, mockPcapJob.getNumReducers());
-    Assert.assertTrue(mockPcapJob.getFilterImpl() instanceof QueryPcapFilter.Configurator);
-    Assert.assertEquals("query", mockPcapJob.getQuery());
+    assertEquals("/base/path", mockPcapJob.getBasePath());
+    assertEquals("/base/interim/result/path", mockPcapJob.getBaseInterrimResultPath());
+    assertEquals("/final/output/path", mockPcapJob.getFinalOutputPath());
+    assertEquals(10000000, mockPcapJob.getStartTimeNs());
+    assertEquals(20000000, mockPcapJob.getEndTimeNs());
+    assertEquals(2, mockPcapJob.getNumReducers());
+    assertTrue(mockPcapJob.getFilterImpl() instanceof QueryPcapFilter.Configurator);
+    assertEquals("query", mockPcapJob.getQuery());
   }
 
   @Test
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/RestExceptionHandlerTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/RestExceptionHandlerTest.java
index b934481..b9a2da9 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/RestExceptionHandlerTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/RestExceptionHandlerTest.java
@@ -14,15 +14,15 @@
  */
 package org.apache.metron.rest.controller;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import javax.servlet.http.HttpServletRequest;
 import org.apache.commons.lang.exception.ExceptionUtils;
 import org.apache.metron.rest.model.RestError;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 
@@ -31,7 +31,7 @@
   private RestExceptionHandler restExceptionHandler;
   private HttpServletRequest request;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     restExceptionHandler = new RestExceptionHandler();
     request = mock(HttpServletRequest.class);
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SearchControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SearchControllerIntegrationTest.java
index aa7b6cd..859c21a 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SearchControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SearchControllerIntegrationTest.java
@@ -17,6 +17,30 @@
  */
 package org.apache.metron.rest.controller;
 
+import com.google.common.collect.ImmutableMap;
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.indexing.dao.InMemoryDao;
+import org.apache.metron.indexing.dao.SearchIntegrationTest;
+import org.apache.metron.indexing.dao.search.FieldType;
+import org.apache.metron.rest.service.AlertsUIService;
+import org.apache.metron.rest.service.SensorIndexingConfigService;
+import org.json.simple.parser.ParseException;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.WebApplicationContext;
+
+import java.util.HashMap;
+import java.util.Map;
+
 import static org.apache.metron.integration.utils.TestUtils.assertEventually;
 import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
 import static org.hamcrest.Matchers.hasSize;
@@ -24,36 +48,9 @@
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-import com.google.common.collect.ImmutableMap;
-
-import java.util.HashMap;
-import java.util.Map;
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.indexing.dao.InMemoryDao;
-import org.apache.metron.indexing.dao.SearchIntegrationTest;
-import org.apache.metron.indexing.dao.search.FieldType;
-import org.apache.metron.rest.service.AlertsUIService;
-import org.apache.metron.rest.service.GlobalConfigService;
-import org.apache.metron.rest.service.SensorIndexingConfigService;
-import org.json.simple.parser.ParseException;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.MediaType;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class SearchControllerIntegrationTest extends DaoControllerTest {
@@ -99,7 +96,7 @@
   private String user = "user";
   private String password = "password";
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
     ImmutableMap<String, String> testData = ImmutableMap.of(
@@ -111,7 +108,7 @@
     loadFacetCounts();
   }
 
-  @After
+  @AfterEach
   public void cleanup() throws Exception {
     InMemoryDao.clear();
   }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorEnrichmentConfigControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorEnrichmentConfigControllerIntegrationTest.java
index d25ee04..ab288ef 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorEnrichmentConfigControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorEnrichmentConfigControllerIntegrationTest.java
@@ -20,14 +20,14 @@
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.rest.service.SensorEnrichmentConfigService;
 import org.hamcrest.core.IsCollectionContaining;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
@@ -42,7 +42,7 @@
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class SensorEnrichmentConfigControllerIntegrationTest {
@@ -120,7 +120,7 @@
   private String user = "user";
   private String password = "password";
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
   }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorIndexingConfigControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorIndexingConfigControllerIntegrationTest.java
index cde71fd..dd1ae11 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorIndexingConfigControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorIndexingConfigControllerIntegrationTest.java
@@ -17,34 +17,31 @@
  */
 package org.apache.metron.rest.controller;
 
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.rest.service.SensorIndexingConfigService;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.http.MediaType;
+import org.springframework.test.context.ActiveProfiles;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.test.web.servlet.MockMvc;
+import org.springframework.test.web.servlet.setup.MockMvcBuilders;
+import org.springframework.web.context.WebApplicationContext;
+
+import java.nio.charset.StandardCharsets;
+
 import static org.apache.metron.integration.utils.TestUtils.assertEventually;
 import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-import java.nio.charset.StandardCharsets;
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.rest.service.SensorIndexingConfigService;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.http.MediaType;
-import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.test.web.servlet.MockMvc;
-import org.springframework.test.web.servlet.setup.MockMvcBuilders;
-import org.springframework.web.context.WebApplicationContext;
-
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class SensorIndexingConfigControllerIntegrationTest {
@@ -70,8 +67,8 @@
   private String user = "user";
   private String password = "password";
 
-  @Before
-  public void setup() throws Exception {
+  @BeforeEach
+  public void setup() {
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
   }
 
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorParserConfigControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorParserConfigControllerIntegrationTest.java
index c9adac9..d3f7e62 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorParserConfigControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorParserConfigControllerIntegrationTest.java
@@ -23,16 +23,15 @@
 import org.apache.metron.integration.utils.TestUtils;
 import org.apache.metron.rest.MetronRestConstants;
 import org.apache.metron.rest.service.SensorParserConfigService;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.core.env.Environment;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
@@ -45,17 +44,14 @@
 import static org.apache.metron.integration.utils.TestUtils.assertEventually;
 import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
 import static org.hamcrest.Matchers.hasSize;
+import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class SensorParserConfigControllerIntegrationTest {
@@ -176,8 +172,8 @@
   private String user = "user";
   private String password = "password";
 
-  @Before
-  public void setup() throws Exception {
+  @BeforeEach
+  public void setup() {
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
   }
 
@@ -301,7 +297,7 @@
 
     {
       //we must wait for the config to find its way into the config.
-      TestUtils.assertEventually(() -> Assert.assertNull(sensorParserConfigService.findOne("squidTest")));
+      TestUtils.assertEventually(() -> assertNull(sensorParserConfigService.findOne("squidTest")));
     }
 
     this.mockMvc.perform(get(sensorParserConfigUrl + "/squidTest").with(httpBasic(user,password)))
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorParserGroupControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorParserGroupControllerIntegrationTest.java
index f74bf58..9a36555 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorParserGroupControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/SensorParserGroupControllerIntegrationTest.java
@@ -25,16 +25,15 @@
 import org.apache.metron.rest.service.GlobalConfigService;
 import org.apache.metron.rest.service.SensorParserConfigService;
 import org.apache.metron.rest.service.SensorParserGroupService;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
@@ -45,17 +44,14 @@
 
 import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
 import static org.hamcrest.Matchers.hasSize;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class SensorParserGroupControllerIntegrationTest {
@@ -119,7 +115,7 @@
   private String user = "user";
   private String password = "password";
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
     Method[] method = SensorParserGroup.class.getMethods();
@@ -135,11 +131,11 @@
     this.sensorParserConfigService.save("squid", new SensorParserConfig());
     this.sensorParserConfigService.save("yaf", new SensorParserConfig());
     this.sensorParserConfigService.save("jsonMap", new SensorParserConfig());
-    TestUtils.assertEventually(() -> Assert.assertNotNull(sensorParserConfigService.findOne("bro")));
-    TestUtils.assertEventually(() -> Assert.assertNotNull(sensorParserConfigService.findOne("snort")));
-    TestUtils.assertEventually(() -> Assert.assertNotNull(sensorParserConfigService.findOne("squid")));
-    TestUtils.assertEventually(() -> Assert.assertNotNull(sensorParserConfigService.findOne("yaf")));
-    TestUtils.assertEventually(() -> Assert.assertNotNull(sensorParserConfigService.findOne("jsonMap")));
+    TestUtils.assertEventually(() -> assertNotNull(sensorParserConfigService.findOne("bro")));
+    TestUtils.assertEventually(() -> assertNotNull(sensorParserConfigService.findOne("snort")));
+    TestUtils.assertEventually(() -> assertNotNull(sensorParserConfigService.findOne("squid")));
+    TestUtils.assertEventually(() -> assertNotNull(sensorParserConfigService.findOne("yaf")));
+    TestUtils.assertEventually(() -> assertNotNull(sensorParserConfigService.findOne("jsonMap")));
   }
 
   @Test
@@ -182,7 +178,7 @@
   public void testUpdate() throws Exception {
     SensorParserGroup group1 = JSONUtils.INSTANCE.load(group1BroSquid, SensorParserGroup.class);
     this.sensorParserGroupService.save(group1);
-    TestUtils.assertEventually(() -> Assert.assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
+    TestUtils.assertEventually(() -> assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
 
     this.mockMvc.perform(post(sensorParserGroupUrl).with(httpBasic(user, password)).with(csrf()).contentType(MediaType.parseMediaType("application/json;charset=UTF-8")).content(group1BroSquid))
             .andExpect(status().isOk())
@@ -198,7 +194,7 @@
   public void testFindOne() throws Exception {
     SensorParserGroup group1 = JSONUtils.INSTANCE.load(group1BroSquid, SensorParserGroup.class);
     this.sensorParserGroupService.save(group1);
-    TestUtils.assertEventually(() -> Assert.assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
+    TestUtils.assertEventually(() -> assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
 
     this.mockMvc.perform(get(sensorParserGroupUrl + "/group1").with(httpBasic(user,password)))
             .andExpect(status().isOk())
@@ -217,10 +213,10 @@
   public void testGetAll() throws Exception {
     SensorParserGroup group1 = JSONUtils.INSTANCE.load(group1BroSquid, SensorParserGroup.class);
     this.sensorParserGroupService.save(group1);
-    TestUtils.assertEventually(() -> Assert.assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
+    TestUtils.assertEventually(() -> assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
     SensorParserGroup group2 = JSONUtils.INSTANCE.load(group2YafJsonMap, SensorParserGroup.class);
     this.sensorParserGroupService.save(group2);
-    TestUtils.assertEventually(() -> Assert.assertEquals(group2, this.sensorParserGroupService.findOne("group2")));
+    TestUtils.assertEventually(() -> assertEquals(group2, this.sensorParserGroupService.findOne("group2")));
 
     this.mockMvc.perform(get(sensorParserGroupUrl).with(httpBasic(user,password)))
             .andExpect(status().isOk())
@@ -242,7 +238,7 @@
   public void testError() throws Exception {
     SensorParserGroup group1 = JSONUtils.INSTANCE.load(group1BroSquid, SensorParserGroup.class);
     this.sensorParserGroupService.save(group1);
-    TestUtils.assertEventually(() -> Assert.assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
+    TestUtils.assertEventually(() -> assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
 
     this.mockMvc.perform(post(sensorParserGroupUrl).with(httpBasic(user, password)).with(csrf()).contentType(MediaType.parseMediaType("application/json;charset=UTF-8")).content(errorGroup))
             .andExpect(status().isInternalServerError())
@@ -256,7 +252,7 @@
   public void testDelete() throws Exception {
     SensorParserGroup group1 = JSONUtils.INSTANCE.load(group1BroSquid, SensorParserGroup.class);
     this.sensorParserGroupService.save(group1);
-    TestUtils.assertEventually(() -> Assert.assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
+    TestUtils.assertEventually(() -> assertEquals(group1, this.sensorParserGroupService.findOne("group1")));
 
     this.mockMvc.perform(delete(sensorParserGroupUrl + "/group1").with(httpBasic(user,password)).with(csrf()))
             .andExpect(status().isOk());
@@ -266,11 +262,11 @@
 
     {
       //we must wait for the config to find its way into the config.
-      TestUtils.assertEventually(() -> Assert.assertNull(sensorParserGroupService.findOne("group1")));
+      TestUtils.assertEventually(() -> assertNull(sensorParserGroupService.findOne("group1")));
     }
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     this.globalConfigService.delete();
     this.sensorParserConfigService.delete("bro");
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/StellarControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/StellarControllerIntegrationTest.java
index 7a57173..d36df11 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/StellarControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/StellarControllerIntegrationTest.java
@@ -18,14 +18,14 @@
 package org.apache.metron.rest.controller;
 
 import org.adrianwalker.multilinestring.Multiline;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
@@ -38,11 +38,9 @@
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class StellarControllerIntegrationTest {
@@ -70,7 +68,7 @@
     private String user = "user";
     private String password = "password";
 
-    @Before
+    @BeforeEach
     public void setup() throws Exception {
         this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
     }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/StormControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/StormControllerIntegrationTest.java
index 3986413..8b4c3a8 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/StormControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/StormControllerIntegrationTest.java
@@ -24,16 +24,15 @@
 import org.apache.metron.rest.model.TopologyStatusCode;
 import org.apache.metron.rest.service.GlobalConfigService;
 import org.apache.metron.rest.service.SensorParserConfigService;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.core.env.Environment;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
@@ -45,14 +44,13 @@
 import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
 import static org.hamcrest.Matchers.containsString;
 import static org.hamcrest.Matchers.hasSize;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class StormControllerIntegrationTest {
@@ -77,8 +75,8 @@
 
   private String metronVersion;
 
-  @Before
-  public void setup() throws Exception {
+  @BeforeEach
+  public void setup() {
     this.metronVersion = this.environment.getProperty("metron.version");
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
   }
@@ -177,7 +175,7 @@
     {
       final Map<String, Object> expectedGlobalConfig = globalConfig;
       //we must wait for the config to find its way into the config.
-      TestUtils.assertEventually(() -> Assert.assertEquals(expectedGlobalConfig, globalConfigService.get()));
+      TestUtils.assertEventually(() -> assertEquals(expectedGlobalConfig, globalConfigService.get()));
     }
 
     this.mockMvc.perform(get(stormUrl + "/parser/start/broTest").with(httpBasic(user,password)))
@@ -192,7 +190,7 @@
     {
       final SensorParserConfig expectedSensorParserConfig = sensorParserConfig;
       //we must wait for the config to find its way into the config.
-      TestUtils.assertEventually(() -> Assert.assertEquals(expectedSensorParserConfig, sensorParserConfigService.findOne("broTest")));
+      TestUtils.assertEventually(() -> assertEquals(expectedSensorParserConfig, sensorParserConfigService.findOne("broTest")));
     }
 
     this.mockMvc.perform(get(stormUrl + "/parser/start/broTest").with(httpBasic(user,password)))
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/UpdateControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/UpdateControllerIntegrationTest.java
index 02f3f3a..ee844ad 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/UpdateControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/UpdateControllerIntegrationTest.java
@@ -18,7 +18,6 @@
 package org.apache.metron.rest.controller;
 
 import com.google.common.collect.ImmutableMap;
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.hadoop.hbase.client.Get;
@@ -29,34 +28,33 @@
 import org.apache.metron.indexing.dao.SearchIntegrationTest;
 import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
 import org.apache.metron.rest.service.UpdateService;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.http.MediaType;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.ResultActions;
 import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
 
+import java.nio.charset.StandardCharsets;
 import java.util.NavigableMap;
 
 import static org.apache.metron.rest.MetronRestConstants.TEST_PROFILE;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf;
 import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.httpBasic;
 import static org.springframework.security.test.web.servlet.setup.SecurityMockMvcConfigurers.springSecurity;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.patch;
 import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
-import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class UpdateControllerIntegrationTest extends DaoControllerTest {
@@ -125,7 +123,7 @@
   @Multiline
   public static String removeComment;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
     ImmutableMap<String, String> testData = ImmutableMap.of(
@@ -165,7 +163,7 @@
 
     // nothing is recorded in HBase
     MockHTable table = (MockHTable) MockHBaseTableProvider.getFromCache(TABLE);
-    Assert.assertEquals(0,table.size());
+    assertEquals(0,table.size());
 
     // patch the document
     this.mockMvc.perform(patchRequest)
@@ -181,13 +179,13 @@
             .andExpect(jsonPath("$.timestamp").value(2));
 
     // the change should be recorded in HBase
-    Assert.assertEquals(1,table.size());
+    assertEquals(1,table.size());
     {
         //ensure hbase is up to date
         Get g = new Get(new HBaseDao.Key(guid,"bro").toBytes());
         Result r = table.get(g);
         NavigableMap<byte[], byte[]> columns = r.getFamilyMap(CF.getBytes(StandardCharsets.UTF_8));
-        Assert.assertEquals(1, columns.size());
+        assertEquals(1, columns.size());
     }
   }
 
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/UserControllerIntegrationTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/UserControllerIntegrationTest.java
index b1e432e..16ff374 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/UserControllerIntegrationTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/controller/UserControllerIntegrationTest.java
@@ -17,13 +17,13 @@
  */
 package org.apache.metron.rest.controller;
 
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.ActiveProfiles;
-import org.springframework.test.context.junit4.SpringRunner;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
 import org.springframework.test.web.servlet.MockMvc;
 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
 import org.springframework.web.context.WebApplicationContext;
@@ -35,7 +35,7 @@
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
 import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
 
-@RunWith(SpringRunner.class)
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class UserControllerIntegrationTest {
@@ -49,8 +49,8 @@
   private String user1 = "user1";
   private String password = "password";
 
-  @Before
-  public void setup() throws Exception {
+  @BeforeEach
+  public void setup() {
     this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).apply(springSecurity()).build();
   }
 
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/AlertsUIServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/AlertsUIServiceImplTest.java
index 016a08b..14099e3 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/AlertsUIServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/AlertsUIServiceImplTest.java
@@ -17,40 +17,28 @@
  */
 package org.apache.metron.rest.service.impl;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.mock;
-
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.system.FakeClock;
 import org.apache.metron.rest.MetronRestConstants;
 import org.apache.metron.rest.model.AlertsUIUserSettings;
 import org.apache.metron.rest.service.KafkaService;
 import org.apache.metron.rest.user.UserSettingsClient;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 import org.springframework.core.env.Environment;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.security.core.userdetails.UserDetails;
 
-@SuppressWarnings("unchecked")
+import java.io.IOException;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
 public class AlertsUIServiceImplTest {
 
   public static ThreadLocal<ObjectMapper> _mapper = ThreadLocal.withInitial(() ->
@@ -80,9 +68,8 @@
   private String user2 = "user2";
   private FakeClock clock;
 
-  @SuppressWarnings("unchecked")
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     kafkaService = mock(KafkaService.class);
     environment = mock(Environment.class);
     userSettingsClient = mock(UserSettingsClient.class);
@@ -122,7 +109,7 @@
     alertsUIService.escalateAlerts(Arrays.asList(alert1, alert2));
     verify(kafkaService).produceMessage(escalationTopic, escalationMessage1);
     verify(kafkaService).produceMessage(escalationTopic, escalationMessage2);
-    verifyZeroInteractions(kafkaService);
+    verifyNoMoreInteractions(kafkaService);
   }
 
   @Test
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/CachedStormStatusServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/CachedStormStatusServiceImplTest.java
index 993465f..f77e031 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/CachedStormStatusServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/CachedStormStatusServiceImplTest.java
@@ -18,33 +18,27 @@
 
 package org.apache.metron.rest.service.impl;
 
-import static org.junit.Assert.assertThat;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
 import com.google.common.collect.ImmutableList;
-import java.util.List;
-import org.apache.metron.rest.model.SupervisorStatus;
-import org.apache.metron.rest.model.SupervisorSummary;
-import org.apache.metron.rest.model.TopologyResponse;
-import org.apache.metron.rest.model.TopologyStatus;
-import org.apache.metron.rest.model.TopologySummary;
+import org.apache.metron.rest.model.*;
 import org.apache.metron.rest.service.StormStatusService;
 import org.hamcrest.CoreMatchers;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.util.List;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.*;
+
 public class CachedStormStatusServiceImplTest {
 
   @Mock
   private StormStatusService stormService;
   private CachedStormStatusServiceImpl cachedStormStatusService;
 
-  @Before
+  @BeforeEach
   public void setup() {
     MockitoAnnotations.initMocks(this);
     cachedStormStatusService = new CachedStormStatusServiceImpl(stormService, 150, 30);
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/DockerStormCLIWrapperTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/DockerStormCLIWrapperTest.java
index d2847f0..a2f3e04 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/DockerStormCLIWrapperTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/DockerStormCLIWrapperTest.java
@@ -17,45 +17,38 @@
  */
 package org.apache.metron.rest.service.impl;
 
-import java.nio.charset.StandardCharsets;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
 
 import java.io.ByteArrayInputStream;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.anyVararg;
-import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.when;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.contains;
+import static org.hamcrest.collection.IsMapContaining.hasEntry;
+import static org.mockito.Mockito.*;
 
-@SuppressWarnings("unchecked")
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({DockerStormCLIWrapper.class, ProcessBuilder.class})
 public class DockerStormCLIWrapperTest {
   private ProcessBuilder processBuilder;
   private Environment environment;
   private DockerStormCLIWrapper dockerStormCLIWrapper;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     processBuilder = mock(ProcessBuilder.class);
     environment = mock(Environment.class);
 
-    dockerStormCLIWrapper = new DockerStormCLIWrapper(environment);
+    dockerStormCLIWrapper = mock(DockerStormCLIWrapper.class,
+            withSettings().useConstructor(environment).defaultAnswer(CALLS_REAL_METHODS));
   }
 
   @Test
   public void getProcessBuilderShouldProperlyGenerateProcessorBuilder() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
+    doReturn(processBuilder).when(dockerStormCLIWrapper).getDockerEnvironmentProcessBuilder();
 
     when(processBuilder.environment()).thenReturn(new HashMap<>());
     when(processBuilder.command()).thenReturn(new ArrayList<>());
@@ -71,12 +64,11 @@
 
 
     ProcessBuilder actualBuilder = dockerStormCLIWrapper.getProcessBuilder("oo", "ooo");
+    assertThat(actualBuilder.environment(), hasEntry("METRON_VERSION", "1"));
+    assertThat(actualBuilder.environment(), hasEntry("DOCKER_HOST", "tcp://192.168.99.100:2376"));
 
-    assertEquals(new HashMap<String, String>() {{
-      put("METRON_VERSION", "1");
-      put("DOCKER_HOST", "tcp://192.168.99.100:2376");
-    }}, actualBuilder.environment());
-    assertEquals(new ArrayList<>(), actualBuilder.command());
+      // Needs to contain what we normally construct + what we passed in.
+    assertThat(actualBuilder.command(), contains("docker-compose", "-f", "/test", "-p", "metron", "exec", "storm", "oo", "ooo"));
 
     verify(process).waitFor();
   }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/GlobalConfigServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/GlobalConfigServiceImplTest.java
index caddf8b..b49c135 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/GlobalConfigServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/GlobalConfigServiceImplTest.java
@@ -17,19 +17,6 @@
  */
 package org.apache.metron.rest.service.impl;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.Map;
-
 import com.google.common.collect.ImmutableMap;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.api.DeleteBuilder;
@@ -42,22 +29,24 @@
 import org.apache.metron.rest.service.GlobalConfigService;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.data.Stat;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 @SuppressWarnings("ALL")
 public class GlobalConfigServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   CuratorFramework curatorFramework;
   GlobalConfigService globalConfigService;
   ConfigurationsCache cache;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     curatorFramework = mock(CuratorFramework.class);
     cache = mock(ConfigurationsCache.class);
     globalConfigService = new GlobalConfigServiceImpl(curatorFramework, cache);
@@ -76,25 +65,20 @@
 
   @Test
   public void deleteShouldProperlyCatchNonNoNodeExceptionAndThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-
     DeleteBuilder builder = mock(DeleteBuilder.class);
 
     when(curatorFramework.delete()).thenReturn(builder);
     when(builder.forPath(ConfigurationType.GLOBAL.getZookeeperRoot())).thenThrow(Exception.class);
 
-    assertFalse(globalConfigService.delete());
+    assertThrows(RestException.class, () -> assertFalse(globalConfigService.delete()));
   }
 
   @Test
   public void deleteShouldReturnTrueWhenClientSuccessfullyCallsDelete() throws Exception {
     DeleteBuilder builder = mock(DeleteBuilder.class);
-
     when(curatorFramework.delete()).thenReturn(builder);
-    when(builder.forPath(ConfigurationType.GLOBAL.getZookeeperRoot())).thenReturn(null);
 
     assertTrue(globalConfigService.delete());
-
     verify(curatorFramework).delete();
   }
 
@@ -119,27 +103,23 @@
 
   @Test
   public void getShouldWrapNonNoNodeExceptionInRestException() throws Exception {
-    exception.expect(RestException.class);
-
     GetDataBuilder getDataBuilder = mock(GetDataBuilder.class);
     when(getDataBuilder.forPath(ConfigurationType.GLOBAL.getZookeeperRoot())).thenThrow(Exception.class);
 
     when(curatorFramework.getData()).thenReturn(getDataBuilder);
 
-    globalConfigService.get();
+    assertThrows(RestException.class, () -> globalConfigService.get());
   }
 
   @Test
   public void saveShouldWrapExceptionInRestException() throws Exception {
-    exception.expect(RestException.class);
-
     SetDataBuilder setDataBuilder = mock(SetDataBuilder.class);
     when(setDataBuilder.forPath(ConfigurationType.GLOBAL.getZookeeperRoot(), "{ }".getBytes(
         StandardCharsets.UTF_8))).thenThrow(Exception.class);
 
     when(curatorFramework.setData()).thenReturn(setDataBuilder);
 
-    globalConfigService.save(new HashMap<>());
+    assertThrows(RestException.class, () -> globalConfigService.save(new HashMap<>()));
   }
 
   @Test
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/GrokServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/GrokServiceImplTest.java
index 4e06b59..5056283 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/GrokServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/GrokServiceImplTest.java
@@ -18,13 +18,14 @@
 package org.apache.metron.rest.service.impl;
 
 import static org.apache.metron.rest.MetronRestConstants.GROK_TEMP_PATH_SPRING_PROPERTY;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.mockito.Mockito.when;
+
 
 import java.io.File;
-import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
@@ -35,25 +36,20 @@
 import org.apache.metron.rest.model.GrokValidation;
 import org.apache.metron.rest.service.GrokService;
 import org.apache.metron.rest.service.HdfsService;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
 
 public class GrokServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private Environment environment;
   private Grok grok;
   private HdfsService hdfsService;
   private GrokService grokService;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     environment = mock(Environment.class);
     grok = mock(Grok.class);
     hdfsService = new HdfsServiceImpl(new Configuration());
@@ -61,14 +57,14 @@
   }
 
   @Test
-  public void getCommonGrokPattersShouldCallGrokToGetPatterns() throws Exception {
+  public void getCommonGrokPattersShouldCallGrokToGetPatterns() {
     grokService.getCommonGrokPatterns();
 
     verify(grok).getPatterns();
   }
 
   @Test
-  public void getCommonGrokPattersShouldCallGrokToGetPatternsAndNotAlterValue() throws Exception {
+  public void getCommonGrokPattersShouldCallGrokToGetPatternsAndNotAlterValue() {
     final Map<String, String> actual = new HashMap<String, String>() {{
       put("k", "v");
       put("k1", "v1");
@@ -84,44 +80,38 @@
   }
 
   @Test
-  public void validateGrokStatementShouldThrowExceptionWithNullStringAsPatternLabel() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("Pattern label is required");
-
+  public void validateGrokStatementShouldThrowExceptionWithNullStringAsPatternLabel() {
     GrokValidation grokValidation = new GrokValidation();
     grokValidation.setResults(new HashMap<>());
     grokValidation.setSampleData("asdf asdf");
     grokValidation.setStatement("LABEL %{WORD:word1} %{WORD:word2}");
 
-    grokService.validateGrokStatement(grokValidation);
+    RestException e = assertThrows(RestException.class, () -> grokService.validateGrokStatement(grokValidation));
+    assertEquals("Pattern label is required", e.getMessage());
   }
 
   @Test
-  public void validateGrokStatementShouldThrowExceptionWithEmptyStringAsStatement() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("Grok statement is required");
-
+  public void validateGrokStatementShouldThrowExceptionWithEmptyStringAsStatement() {
     GrokValidation grokValidation = new GrokValidation();
     grokValidation.setResults(new HashMap<>());
     grokValidation.setSampleData("asdf asdf");
     grokValidation.setPatternLabel("LABEL");
     grokValidation.setStatement("");
 
-    grokService.validateGrokStatement(grokValidation);
+    RestException e = assertThrows(RestException.class, () -> grokService.validateGrokStatement(grokValidation));
+    assertEquals("Grok statement is required", e.getMessage());
   }
 
   @Test
-  public void validateGrokStatementShouldThrowExceptionWithNullStringAsStatement() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("Grok statement is required");
-
+  public void validateGrokStatementShouldThrowExceptionWithNullStringAsStatement() {
     GrokValidation grokValidation = new GrokValidation();
     grokValidation.setResults(new HashMap<>());
     grokValidation.setSampleData("asdf asdf");
     grokValidation.setPatternLabel("LABEL");
     grokValidation.setStatement(null);
 
-    grokService.validateGrokStatement(grokValidation);
+    RestException e = assertThrows(RestException.class, () -> grokService.validateGrokStatement(grokValidation));
+    assertEquals("Grok statement is required", e.getMessage());
   }
 
   @Test
@@ -178,15 +168,13 @@
   }
 
   @Test
-  public void invalidGrokStatementShouldThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-
+  public void invalidGrokStatementShouldThrowRestException() {
     GrokValidation grokValidation = new GrokValidation();
     grokValidation.setResults(new HashMap<>());
     grokValidation.setSampleData(null);
     grokValidation.setStatement("LABEL %{WORD:word1} %{WORD:word2");
 
-    grokService.validateGrokStatement(grokValidation);
+    assertThrows(RestException.class, () -> grokService.validateGrokStatement(grokValidation));
   }
 
   @Test
@@ -207,11 +195,9 @@
   }
 
   @Test
-  public void missingGrokStatementShouldThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("A grokStatement must be provided");
-
-    grokService.saveTemporary(null, "squid");
+  public void missingGrokStatementShouldThrowRestException() {
+    RestException e = assertThrows(RestException.class, () -> grokService.saveTemporary(null, "squid"));
+    assertEquals("A grokStatement must be provided", e.getMessage());
   }
 
   @Test
@@ -222,10 +208,8 @@
   }
 
   @Test
-  public void getStatementFromClasspathShouldThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("Could not find a statement at path /bad/path");
-
-    grokService.getStatementFromClasspath("/bad/path");
+  public void getStatementFromClasspathShouldThrowRestException() {
+    RestException e = assertThrows(RestException.class, () -> grokService.getStatementFromClasspath("/bad/path"));
+    assertEquals("Could not find a statement at path /bad/path", e.getMessage());
   }
 }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/HdfsServiceImplExceptionTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/HdfsServiceImplExceptionTest.java
index 7282859..373250e 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/HdfsServiceImplExceptionTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/HdfsServiceImplExceptionTest.java
@@ -21,91 +21,56 @@
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.metron.rest.RestException;
-import org.apache.metron.rest.service.HdfsService;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HdfsServiceImpl.class, FileSystem.class})
 public class HdfsServiceImplExceptionTest {
-    @Rule
-    public final ExpectedException exception = ExpectedException.none();
-
-    private Configuration configuration;
-    private HdfsService hdfsService;
+    private HdfsServiceImpl hdfsService;
+    private FileSystem fileSystem;
     private String testDir = "./target/hdfsUnitTest";
 
-    @Before
+    @BeforeEach
     public void setup() throws IOException {
-        configuration = new Configuration();
-        hdfsService = new HdfsServiceImpl(configuration);
-
-        mockStatic(FileSystem.class);
+        Configuration configuration = new Configuration();
+        hdfsService = mock(HdfsServiceImpl.class, withSettings().useConstructor(configuration).defaultAnswer(CALLS_REAL_METHODS));
+        fileSystem = mock(FileSystem.class);
+        doReturn(fileSystem).when(hdfsService).getFileSystem();
     }
 
     @Test
     public void listShouldWrapExceptionInRestException() throws Exception {
-      exception.expect(RestException.class);
-
-      FileSystem fileSystem = mock(FileSystem.class);
-      when(FileSystem.get(configuration)).thenReturn(fileSystem);
-      when(fileSystem.listStatus(new Path(testDir))).thenThrow(new IOException());
-
-      hdfsService.list(new Path(testDir));
+      doThrow(new IOException()).when(fileSystem).listStatus(new Path(testDir));
+      assertThrows(RestException.class, () -> hdfsService.list(new Path(testDir)));
     }
 
     @Test
     public void readShouldWrapExceptionInRestException() throws Exception {
-        exception.expect(RestException.class);
-
-        FileSystem fileSystem = mock(FileSystem.class);
-        when(FileSystem.get(configuration)).thenReturn(fileSystem);
-        when(fileSystem.open(new Path(testDir))).thenThrow(new IOException());
-
-        hdfsService.read(new Path(testDir));
+      doThrow(new IOException()).when(fileSystem).open(new Path(testDir));
+      assertThrows(RestException.class, () -> hdfsService.read(new Path(testDir)));
     }
 
     @Test
     public void writeShouldWrapExceptionInRestException() throws Exception {
-        exception.expect(RestException.class);
-
-        FileSystem fileSystem = mock(FileSystem.class);
-        when(FileSystem.get(configuration)).thenReturn(fileSystem);
-        when(fileSystem.create(new Path(testDir), true)).thenThrow(new IOException());
-
-        hdfsService.write(new Path(testDir), "contents".getBytes(UTF_8),null, null,null);
+        doThrow(new IOException()).when(fileSystem).create(new Path(testDir), true);
+        assertThrows(RestException.class,
+                () -> hdfsService.write(new Path(testDir), "contents".getBytes(UTF_8),null, null,null));
     }
 
     @Test
-    public void writeShouldThrowIfInvalidPermissions() throws Exception {
-        exception.expect(RestException.class);
-
-        FileSystem fileSystem = mock(FileSystem.class);
-        when(FileSystem.get(configuration)).thenReturn(fileSystem);
-
-        hdfsService.write(new Path(testDir,"test"),"oops".getBytes(UTF_8), "foo", "r-x","r--");
+    public void writeShouldThrowIfInvalidPermissions() {
+        assertThrows(RestException.class,
+                () -> hdfsService.write(new Path(testDir,"test"),"oops".getBytes(UTF_8), "foo", "r-x","r--"));
     }
 
     @Test
     public void deleteShouldWrapExceptionInRestException() throws Exception {
-        exception.expect(RestException.class);
-
-        FileSystem fileSystem = mock(FileSystem.class);
-        when(FileSystem.get(configuration)).thenReturn(fileSystem);
-        when(fileSystem.delete(new Path(testDir), false)).thenThrow(new IOException());
-
-        hdfsService.delete(new Path(testDir), false);
+        doThrow(new IOException()).when(fileSystem).delete(new Path(testDir), false);
+        assertThrows(RestException.class, () -> hdfsService.delete(new Path(testDir), false));
     }
 }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/HdfsServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/HdfsServiceImplTest.java
index 280be63..60abe90 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/HdfsServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/HdfsServiceImplTest.java
@@ -21,14 +21,12 @@
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
-import org.apache.hadoop.fs.permission.FsPermission;
 import org.apache.hadoop.fs.permission.FsAction;
+import org.apache.hadoop.fs.permission.FsPermission;
 import org.apache.metron.rest.service.HdfsService;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.io.IOException;
@@ -36,17 +34,14 @@
 import java.util.List;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class HdfsServiceImplTest {
-    @Rule
-    public final ExpectedException exception = ExpectedException.none();
-
     private Configuration configuration;
     private HdfsService hdfsService;
     private String testDir = "./target/hdfsUnitTest";
 
-    @Before
+    @BeforeEach
     public void setup() throws IOException {
         configuration = new Configuration();
         hdfsService = new HdfsServiceImpl(configuration);
@@ -57,7 +52,7 @@
         FileUtils.cleanDirectory(file);
     }
 
-    @After
+    @AfterEach
     public void teardown() throws IOException {
         File file = new File(testDir);
         FileUtils.cleanDirectory(file);
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/KafkaServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/KafkaServiceImplTest.java
index b99128a..a6d52ff 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/KafkaServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/KafkaServiceImplTest.java
@@ -17,27 +17,9 @@
  */
 package org.apache.metron.rest.service.impl;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.mock;
-
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
 import kafka.admin.AdminOperationException;
 import kafka.admin.AdminUtils$;
 import kafka.admin.RackAwareMode;
@@ -53,25 +35,18 @@
 import org.apache.metron.rest.RestException;
 import org.apache.metron.rest.model.KafkaTopic;
 import org.apache.metron.rest.service.KafkaService;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PowerMockIgnore;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.kafka.core.ConsumerFactory;
 
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
 
 @SuppressWarnings("unchecked")
-@RunWith(PowerMockRunner.class)
-@PowerMockIgnore("javax.management.*") // resolve classloader conflict
-@PrepareForTest({AdminUtils$.class})
 public class KafkaServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private ZkUtils zkUtils;
   private KafkaConsumer<String, String> kafkaConsumer;
   private KafkaProducer<String, String> kafkaProducer;
@@ -89,8 +64,8 @@
   }};
 
   @SuppressWarnings("unchecked")
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     zkUtils = mock(ZkUtils.class);
     kafkaConsumerFactory = mock(ConsumerFactory.class);
     kafkaConsumer = mock(KafkaConsumer.class);
@@ -103,23 +78,21 @@
   }
 
   @Test
-  public void listTopicsHappyPathWithListTopicsReturningNull() throws Exception {
-    final Map<String, List<PartitionInfo>> topics = null;
-
-    when(kafkaConsumer.listTopics()).thenReturn(topics);
+  public void listTopicsHappyPathWithListTopicsReturningNull() {
+    when(kafkaConsumer.listTopics()).thenReturn(null);
 
     final Set<String> listedTopics = kafkaService.listTopics();
 
     assertEquals(Sets.newHashSet(), listedTopics);
 
-    verifyZeroInteractions(zkUtils);
+    verifyNoInteractions(zkUtils);
     verify(kafkaConsumer).listTopics();
     verify(kafkaConsumer).close();
     verifyNoMoreInteractions(kafkaConsumer, zkUtils, adminUtils);
   }
 
   @Test
-  public void listTopicsHappyPathWithListTopicsReturningEmptyMap() throws Exception {
+  public void listTopicsHappyPathWithListTopicsReturningEmptyMap() {
     final Map<String, List<PartitionInfo>> topics = new HashMap<>();
 
     when(kafkaConsumer.listTopics()).thenReturn(topics);
@@ -128,14 +101,14 @@
 
     assertEquals(Sets.newHashSet(), listedTopics);
 
-    verifyZeroInteractions(zkUtils);
+    verifyNoInteractions(zkUtils);
     verify(kafkaConsumer).listTopics();
     verify(kafkaConsumer).close();
     verifyNoMoreInteractions(kafkaConsumer, zkUtils);
   }
 
   @Test
-  public void listTopicsHappyPath() throws Exception {
+  public void listTopicsHappyPath() {
     final Map<String, List<PartitionInfo>> topics = new HashMap<>();
     topics.put("topic1", Lists.newArrayList());
     topics.put("topic2", Lists.newArrayList());
@@ -147,14 +120,14 @@
 
     assertEquals(Sets.newHashSet("topic1", "topic2", "topic3"), listedTopics);
 
-    verifyZeroInteractions(zkUtils);
+    verifyNoInteractions(zkUtils);
     verify(kafkaConsumer).listTopics();
     verify(kafkaConsumer).close();
     verifyNoMoreInteractions(kafkaConsumer, zkUtils);
   }
 
   @Test
-  public void listTopicsShouldProperlyRemoveOffsetTopic() throws Exception {
+  public void listTopicsShouldProperlyRemoveOffsetTopic() {
     final Map<String, List<PartitionInfo>> topics = new HashMap<>();
     topics.put("topic1", Lists.newArrayList());
     topics.put("topic2", Lists.newArrayList());
@@ -167,26 +140,26 @@
 
     assertEquals(Sets.newHashSet("topic1", "topic2", "topic3"), listedTopics);
 
-    verifyZeroInteractions(zkUtils);
+    verifyNoInteractions(zkUtils);
     verify(kafkaConsumer).listTopics();
     verify(kafkaConsumer).close();
     verifyNoMoreInteractions(kafkaConsumer, zkUtils);
   }
 
   @Test
-  public void deletingTopicThatDoesNotExistShouldReturnFalse() throws Exception {
+  public void deletingTopicThatDoesNotExistShouldReturnFalse() {
     when(kafkaConsumer.listTopics()).thenReturn(Maps.newHashMap());
 
     assertFalse(kafkaService.deleteTopic("non_existent_topic"));
 
-    verifyZeroInteractions(zkUtils);
+    verifyNoInteractions(zkUtils);
     verify(kafkaConsumer).listTopics();
     verify(kafkaConsumer).close();
     verifyNoMoreInteractions(kafkaConsumer, zkUtils);
   }
 
   @Test
-  public void deletingTopicThatExistShouldReturnTrue() throws Exception {
+  public void deletingTopicThatExistShouldReturnTrue() {
     final Map<String, List<PartitionInfo>> topics = new HashMap<>();
     topics.put("non_existent_topic", Lists.newArrayList());
 
@@ -201,7 +174,7 @@
   }
 
   @Test
-  public void makeSureDeletingTopicReturnsFalseWhenNoTopicsExist() throws Exception {
+  public void makeSureDeletingTopicReturnsFalseWhenNoTopicsExist() {
     final Map<String, List<PartitionInfo>> topics = null;
 
     when(kafkaConsumer.listTopics()).thenReturn(topics);
@@ -214,7 +187,7 @@
   }
 
   @Test
-  public void getTopicShouldProperlyMapTopicToKafkaTopic() throws Exception {
+  public void getTopicShouldProperlyMapTopicToKafkaTopic() {
     final PartitionInfo partitionInfo = mock(PartitionInfo.class);
     when(partitionInfo.replicas()).thenReturn(new Node[] {new Node(1, "host", 8080)});
 
@@ -236,34 +209,30 @@
   }
 
   @Test
-  public void getTopicShouldProperlyHandleTopicsThatDontExist() throws Exception {
+  public void getTopicShouldProperlyHandleTopicsThatDontExist() {
     final Map<String, List<PartitionInfo>> topics = new HashMap<>();
     topics.put("t1", Lists.newArrayList());
 
     when(kafkaConsumer.listTopics()).thenReturn(topics);
     when(kafkaConsumer.partitionsFor("t")).thenReturn(Lists.newArrayList());
 
-    assertEquals(null, kafkaService.getTopic("t"));
+    assertNull(kafkaService.getTopic("t"));
 
     verify(kafkaConsumer).listTopics();
     verify(kafkaConsumer, times(0)).partitionsFor("t");
     verify(kafkaConsumer).close();
-    verifyZeroInteractions(zkUtils);
+    verifyNoInteractions(zkUtils);
     verifyNoMoreInteractions(kafkaConsumer);
   }
 
   @Test
-  public void createTopicShouldFailIfReplicationFactorIsGreaterThanAvailableBrokers() throws Exception {
-    exception.expect(RestException.class);
+  public void createTopicShouldFailIfReplicationFactorIsGreaterThanAvailableBrokers() {
     doThrow(AdminOperationException.class).when(adminUtils).createTopic(eq(zkUtils), eq("t"), eq(1), eq(2), eq(new Properties()), eq(RackAwareMode.Disabled$.MODULE$));
-    kafkaService.createTopic(VALID_KAFKA_TOPIC);
-
+    assertThrows(RestException.class, () -> kafkaService.createTopic(VALID_KAFKA_TOPIC));
   }
 
   @Test
-  public void whenAdminUtilsThrowsAdminOperationExceptionCreateTopicShouldProperlyWrapExceptionInRestException() throws Exception {
-    exception.expect(RestException.class);
-
+  public void whenAdminUtilsThrowsAdminOperationExceptionCreateTopicShouldProperlyWrapExceptionInRestException() {
     final Map<String, List<PartitionInfo>> topics = new HashMap<>();
     topics.put("1", new ArrayList<>());
 
@@ -271,11 +240,11 @@
 
     doThrow(AdminOperationException.class).when(adminUtils).createTopic(eq(zkUtils), eq("t"), eq(1), eq(2), eq(new Properties()), eq(RackAwareMode.Disabled$.MODULE$));
 
-    kafkaService.createTopic(VALID_KAFKA_TOPIC);
+    assertThrows(RestException.class, () -> kafkaService.createTopic(VALID_KAFKA_TOPIC));
   }
 
   @Test
-  public void getSampleMessageProperlyReturnsAMessageFromAGivenKafkaTopic() throws Exception {
+  public void getSampleMessageProperlyReturnsAMessageFromAGivenKafkaTopic() {
     final String topicName = "t";
     final Node host = new Node(1, "host", 8080);
     final Node[] replicas = {host};
@@ -302,7 +271,7 @@
     verify(kafkaConsumer, times(2)).position(topicPartition);
     verify(kafkaConsumer).seek(topicPartition, 0);
 
-    verifyZeroInteractions(zkUtils, adminUtils);
+    verifyNoInteractions(zkUtils, adminUtils);
   }
 
   @Test
@@ -314,11 +283,11 @@
 
     String expectedMessage = "{\"field\":\"value\"}";
     verify(kafkaProducer).send(new ProducerRecord<>(topicName, expectedMessage));
-    verifyZeroInteractions(kafkaProducer);
+    verifyNoMoreInteractions(kafkaProducer);
   }
 
   @Test
-  public void addACLtoNonExistingTopicShouldReturnFalse() throws Exception{
+  public void addACLtoNonExistingTopicShouldReturnFalse() {
     when(kafkaConsumer.listTopics()).thenReturn(Maps.newHashMap());
     assertFalse(kafkaService.addACLToCurrentUser("non_existent_topic"));
   }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/PcapServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/PcapServiceImplTest.java
index 62b197b..ffbfc38 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/PcapServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/PcapServiceImplTest.java
@@ -17,27 +17,6 @@
  */
 package org.apache.metron.rest.service.impl;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Matchers.anyVararg;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.doReturn;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FSDataInputStream;
@@ -45,11 +24,7 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.utils.JSONUtils;
-import org.apache.metron.job.JobException;
-import org.apache.metron.job.JobNotFoundException;
-import org.apache.metron.job.JobStatus;
-import org.apache.metron.job.Pageable;
-import org.apache.metron.job.Statusable;
+import org.apache.metron.job.*;
 import org.apache.metron.job.manager.InMemoryJobManager;
 import org.apache.metron.job.manager.JobManager;
 import org.apache.metron.pcap.PcapHelper;
@@ -61,31 +36,28 @@
 import org.apache.metron.rest.config.PcapJobSupplier;
 import org.apache.metron.rest.mock.MockPcapJob;
 import org.apache.metron.rest.mock.MockPcapJobSupplier;
-import org.apache.metron.rest.model.pcap.FixedPcapOptions;
-import org.apache.metron.rest.model.pcap.FixedPcapRequest;
-import org.apache.metron.rest.model.pcap.PcapStatus;
-import org.apache.metron.rest.model.pcap.Pdml;
-import org.apache.metron.rest.model.pcap.QueryPcapOptions;
-import org.apache.metron.rest.model.pcap.QueryPcapRequest;
+import org.apache.metron.rest.model.pcap.*;
 import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
 
-@SuppressWarnings("ALL")
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({PcapToPdmlScriptWrapper.class, ProcessBuilder.class})
-public class PcapServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
 
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
+@SuppressWarnings("ALL")
+//@PrepareForTest({PcapToPdmlScriptWrapper.class, ProcessBuilder.class})
+public class PcapServiceImplTest {
   /**
    *<?xml version="1.0" encoding="utf-8"?>
    *<?xml-stylesheet type="text/xsl" href="pdml2html.xsl"?>
@@ -182,8 +154,8 @@
   MockPcapJobSupplier mockPcapJobSupplier;
   PcapToPdmlScriptWrapper pcapToPdmlScriptWrapper;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     environment = mock(Environment.class);
     configuration = new Configuration();
     mockPcapJobSupplier = new MockPcapJobSupplier();
@@ -244,26 +216,26 @@
     expectedPcapStatus.setJobStatus(JobStatus.State.RUNNING.name());
     expectedPcapStatus.setDescription("description");
 
-    Assert.assertEquals(expectedPcapStatus, pcapService.submit("user", fixedPcapRequest));
-    Assert.assertEquals(expectedPcapStatus, pcapService.jobStatusToPcapStatus(jobManager.getJob("user", "jobId").getStatus()));
-    Assert.assertEquals("basePath", mockPcapJob.getBasePath());
-    Assert.assertEquals("baseOutputPath", mockPcapJob.getBaseInterrimResultPath());
-    Assert.assertEquals("finalOutputPath", mockPcapJob.getFinalOutputPath());
-    Assert.assertEquals(1000000, mockPcapJob.getStartTimeNs());
-    Assert.assertEquals(2000000, mockPcapJob.getEndTimeNs());
-    Assert.assertEquals(2, mockPcapJob.getNumReducers());
-    Assert.assertEquals(100, mockPcapJob.getRecPerFile());
-    Assert.assertEquals("pcap", mockPcapJob.getYarnQueue());
-    Assert.assertEquals("2C", mockPcapJob.getFinalizerThreadpoolSize());
-    Assert.assertTrue(mockPcapJob.getFilterImpl() instanceof FixedPcapFilter.Configurator);
+    assertEquals(expectedPcapStatus, pcapService.submit("user", fixedPcapRequest));
+    assertEquals(expectedPcapStatus, pcapService.jobStatusToPcapStatus(jobManager.getJob("user", "jobId").getStatus()));
+    assertEquals("basePath", mockPcapJob.getBasePath());
+    assertEquals("baseOutputPath", mockPcapJob.getBaseInterrimResultPath());
+    assertEquals("finalOutputPath", mockPcapJob.getFinalOutputPath());
+    assertEquals(1000000, mockPcapJob.getStartTimeNs());
+    assertEquals(2000000, mockPcapJob.getEndTimeNs());
+    assertEquals(2, mockPcapJob.getNumReducers());
+    assertEquals(100, mockPcapJob.getRecPerFile());
+    assertEquals("pcap", mockPcapJob.getYarnQueue());
+    assertEquals("2C", mockPcapJob.getFinalizerThreadpoolSize());
+    assertTrue(mockPcapJob.getFilterImpl() instanceof FixedPcapFilter.Configurator);
     Map<String, String> actualFixedFields = mockPcapJob.getFixedFields();
-    Assert.assertEquals("ip_src_addr", actualFixedFields.get(Constants.Fields.SRC_ADDR.getName()));
-    Assert.assertEquals("1000", actualFixedFields.get(Constants.Fields.SRC_PORT.getName()));
-    Assert.assertEquals("ip_dst_addr", actualFixedFields.get(Constants.Fields.DST_ADDR.getName()));
-    Assert.assertEquals("2000", actualFixedFields.get(Constants.Fields.DST_PORT.getName()));
-    Assert.assertEquals("true", actualFixedFields.get(Constants.Fields.INCLUDES_REVERSE_TRAFFIC.getName()));
-    Assert.assertEquals("tcp", actualFixedFields.get(Constants.Fields.PROTOCOL.getName()));
-    Assert.assertEquals("filter", actualFixedFields.get(PcapHelper.PacketFields.PACKET_FILTER.getName()));
+    assertEquals("ip_src_addr", actualFixedFields.get(Constants.Fields.SRC_ADDR.getName()));
+    assertEquals("1000", actualFixedFields.get(Constants.Fields.SRC_PORT.getName()));
+    assertEquals("ip_dst_addr", actualFixedFields.get(Constants.Fields.DST_ADDR.getName()));
+    assertEquals("2000", actualFixedFields.get(Constants.Fields.DST_PORT.getName()));
+    assertEquals("true", actualFixedFields.get(Constants.Fields.INCLUDES_REVERSE_TRAFFIC.getName()));
+    assertEquals("tcp", actualFixedFields.get(Constants.Fields.PROTOCOL.getName()));
+    assertEquals("filter", actualFixedFields.get(PcapHelper.PacketFields.PACKET_FILTER.getName()));
   }
 
   @Test
@@ -289,17 +261,17 @@
     expectedPcapStatus.setJobStatus(JobStatus.State.RUNNING.name());
     expectedPcapStatus.setDescription("description");
 
-    Assert.assertEquals(expectedPcapStatus, pcapService.submit("user", fixedPcapRequest));
-    Assert.assertEquals("/base/path", mockPcapJob.getBasePath());
-    Assert.assertEquals("/base/interim/result/path", mockPcapJob.getBaseInterrimResultPath());
-    Assert.assertEquals("/final/output/path", mockPcapJob.getFinalOutputPath());
-    Assert.assertEquals(0, mockPcapJob.getStartTimeNs());
-    Assert.assertTrue(beforeJobTime <= mockPcapJob.getEndTimeNs() / 1000000);
-    Assert.assertTrue(System.currentTimeMillis() >= mockPcapJob.getEndTimeNs() / 1000000);
-    Assert.assertEquals(10, mockPcapJob.getNumReducers());
-    Assert.assertEquals(100, mockPcapJob.getRecPerFile());
-    Assert.assertTrue(mockPcapJob.getFilterImpl() instanceof FixedPcapFilter.Configurator);
-    Assert.assertEquals(new HashMap<>(), mockPcapJob.getFixedFields());
+    assertEquals(expectedPcapStatus, pcapService.submit("user", fixedPcapRequest));
+    assertEquals("/base/path", mockPcapJob.getBasePath());
+    assertEquals("/base/interim/result/path", mockPcapJob.getBaseInterrimResultPath());
+    assertEquals("/final/output/path", mockPcapJob.getFinalOutputPath());
+    assertEquals(0, mockPcapJob.getStartTimeNs());
+    assertTrue(beforeJobTime <= mockPcapJob.getEndTimeNs() / 1000000);
+    assertTrue(System.currentTimeMillis() >= mockPcapJob.getEndTimeNs() / 1000000);
+    assertEquals(10, mockPcapJob.getNumReducers());
+    assertEquals(100, mockPcapJob.getRecPerFile());
+    assertTrue(mockPcapJob.getFilterImpl() instanceof FixedPcapFilter.Configurator);
+    assertEquals(new HashMap<>(), mockPcapJob.getFixedFields());
   }
 
   @Test
@@ -331,25 +303,22 @@
     expectedPcapStatus.setJobStatus(JobStatus.State.RUNNING.name());
     expectedPcapStatus.setDescription("description");
 
-    Assert.assertEquals(expectedPcapStatus, pcapService.submit("user", queryPcapRequest));
-    Assert.assertEquals(expectedPcapStatus, pcapService.jobStatusToPcapStatus(jobManager.getJob("user", "jobId").getStatus()));
-    Assert.assertEquals("basePath", mockPcapJob.getBasePath());
-    Assert.assertEquals("baseOutputPath", mockPcapJob.getBaseInterrimResultPath());
-    Assert.assertEquals("finalOutputPath", mockPcapJob.getFinalOutputPath());
-    Assert.assertEquals(1000000, mockPcapJob.getStartTimeNs());
-    Assert.assertEquals(2000000, mockPcapJob.getEndTimeNs());
-    Assert.assertEquals(2, mockPcapJob.getNumReducers());
-    Assert.assertEquals(100, mockPcapJob.getRecPerFile());
-    Assert.assertTrue(mockPcapJob.getFilterImpl() instanceof QueryPcapFilter.Configurator);
+    assertEquals(expectedPcapStatus, pcapService.submit("user", queryPcapRequest));
+    assertEquals(expectedPcapStatus, pcapService.jobStatusToPcapStatus(jobManager.getJob("user", "jobId").getStatus()));
+    assertEquals("basePath", mockPcapJob.getBasePath());
+    assertEquals("baseOutputPath", mockPcapJob.getBaseInterrimResultPath());
+    assertEquals("finalOutputPath", mockPcapJob.getFinalOutputPath());
+    assertEquals(1000000, mockPcapJob.getStartTimeNs());
+    assertEquals(2000000, mockPcapJob.getEndTimeNs());
+    assertEquals(2, mockPcapJob.getNumReducers());
+    assertEquals(100, mockPcapJob.getRecPerFile());
+    assertTrue(mockPcapJob.getFilterImpl() instanceof QueryPcapFilter.Configurator);
     Map<String, String> actualFixedFields = mockPcapJob.getFixedFields();
-    Assert.assertEquals("query", mockPcapJob.getQuery());
+    assertEquals("query", mockPcapJob.getQuery());
   }
 
   @Test
   public void submitShouldThrowExceptionOnRunningJobFound() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("Cannot submit job because a job is already running.  Please contact the administrator to cancel job(s) with id(s) jobId");
-
     PcapStatus runningStatus1 = new PcapStatus();
     runningStatus1.setJobStatus("RUNNING");
     runningStatus1.setJobId("jobId1");
@@ -361,15 +330,13 @@
     doReturn(Arrays.asList(runningStatus1, runningStatus2)).when(pcapService).getJobStatus("user", JobStatus.State.RUNNING);
     when(environment.getProperty(MetronRestConstants.USER_JOB_LIMIT_SPRING_PROPERTY, Integer.class, 1)).thenReturn(2);
 
-    pcapService.submit("user", new FixedPcapRequest());
+    RestException e = assertThrows(RestException.class, () -> pcapService.submit("user", new FixedPcapRequest()));
+    assertTrue(e.getMessage().contains("Cannot submit job because a job is already running.  Please contact the administrator to cancel job(s) with id(s) jobId"));
   }
 
 
   @Test
   public void fixedShouldThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("some job exception");
-
     FixedPcapRequest fixedPcapRequest = new FixedPcapRequest();
     JobManager jobManager = mock(JobManager.class);
     PcapJobSupplier pcapJobSupplier = new PcapJobSupplier();
@@ -378,7 +345,8 @@
     doReturn(fileSystem).when(pcapService).getFileSystem();
     when(jobManager.submit(pcapJobSupplier, "user")).thenThrow(new JobException("some job exception"));
 
-    pcapService.submit("user", fixedPcapRequest);
+    RestException e = assertThrows(RestException.class, () -> pcapService.submit("user", fixedPcapRequest));
+    assertEquals("some job exception", e.getMessage());
   }
 
   @Test
@@ -405,7 +373,7 @@
     expectedPcapStatus.setPercentComplete(100.0);
     expectedPcapStatus.setPageTotal(2);
 
-    Assert.assertEquals(expectedPcapStatus, pcapService.getJobStatus("user", "jobId"));
+    assertEquals(expectedPcapStatus, pcapService.getJobStatus("user", "jobId"));
   }
 
   @Test
@@ -413,19 +381,17 @@
     JobManager jobManager = new InMemoryJobManager();
     PcapServiceImpl pcapService = new PcapServiceImpl(environment, configuration, new PcapJobSupplier(), jobManager, pcapToPdmlScriptWrapper);
 
-    Assert.assertNull(pcapService.getJobStatus("user", "jobId"));
+    assertNull(pcapService.getJobStatus("user", "jobId"));
   }
 
   @Test
   public void getStatusShouldThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("some job exception");
-
     JobManager jobManager = mock(JobManager.class);
     when(jobManager.getJob("user", "jobId")).thenThrow(new JobException("some job exception"));
 
     PcapServiceImpl pcapService = new PcapServiceImpl(environment, configuration, new PcapJobSupplier(), jobManager, pcapToPdmlScriptWrapper);
-    pcapService.getJobStatus("user", "jobId");
+    RestException e = assertThrows(RestException.class, () -> pcapService.getJobStatus("user", "jobId"));
+    assertEquals("some job exception", e.getMessage());
   }
 
   @Test
@@ -458,18 +424,18 @@
     PcapStatus expectedRunningPcapStatus = new PcapStatus();
     expectedRunningPcapStatus.setJobId("runningJob");
     expectedRunningPcapStatus.setJobStatus(JobStatus.State.RUNNING.name());
-    Assert.assertEquals(expectedRunningPcapStatus, pcapService.getJobStatus("user", JobStatus.State.RUNNING).get(0));
+    assertEquals(expectedRunningPcapStatus, pcapService.getJobStatus("user", JobStatus.State.RUNNING).get(0));
 
     PcapStatus expectedFailedPcapStatus = new PcapStatus();
     expectedFailedPcapStatus.setJobStatus(JobStatus.State.FAILED.name());
     expectedFailedPcapStatus.setDescription("job exception");
-    Assert.assertEquals(expectedFailedPcapStatus, pcapService.getJobStatus("user", JobStatus.State.FAILED).get(0));
+    assertEquals(expectedFailedPcapStatus, pcapService.getJobStatus("user", JobStatus.State.FAILED).get(0));
 
     PcapStatus expectedSucceededPcapStatus = new PcapStatus();
     expectedSucceededPcapStatus.setJobId("succeededJob");
     expectedSucceededPcapStatus.setJobStatus(JobStatus.State.SUCCEEDED.name());
     expectedSucceededPcapStatus.setPageTotal(5);
-    Assert.assertEquals(expectedSucceededPcapStatus, pcapService.getJobStatus("user", JobStatus.State.SUCCEEDED).get(0));
+    assertEquals(expectedSucceededPcapStatus, pcapService.getJobStatus("user", JobStatus.State.SUCCEEDED).get(0));
   }
 
   @Test
@@ -520,7 +486,7 @@
     when(pageable.getPage(0)).thenReturn(actualPath);
     when(jobManager.getJob("user", "jobId")).thenReturn(mockPcapJob);
 
-    Assert.assertEquals("/path", pcapService.getPath("user", "jobId", 1).toUri().getPath());
+    assertEquals("/path", pcapService.getPath("user", "jobId", 1).toUri().getPath());
   }
 
   @Test
@@ -535,8 +501,8 @@
     when(mockPcapJob.get()).thenReturn(pageable);
     when(jobManager.getJob("user", "jobId")).thenReturn(mockPcapJob);
 
-    Assert.assertNull(pcapService.getPath("user", "jobId", 0));
-    Assert.assertNull(pcapService.getPath("user", "jobId", 3));
+    assertNull(pcapService.getPath("user", "jobId", 0));
+    assertNull(pcapService.getPath("user", "jobId", 3));
   }
 
   @Test
@@ -549,14 +515,14 @@
     when(fileSystem.exists(path)).thenReturn(true);
     doReturn(path).when(pcapService).getPath("user", "jobId", 1);
     doReturn(new ByteArrayInputStream(pdmlXml.getBytes(StandardCharsets.UTF_8))).when(pcapToPdmlScriptWrapper).getRawInputStream(fileSystem, path);
-    ProcessBuilder pb = PowerMockito.mock(ProcessBuilder.class);
-    Process p = PowerMockito.mock(Process.class);
+    ProcessBuilder pb = mock(ProcessBuilder.class);
+    Process p = mock(Process.class);
     OutputStream outputStream = new ByteArrayOutputStream();
     when(p.getOutputStream()).thenReturn(outputStream);
     when(p.isAlive()).thenReturn(true);
     when(p.getInputStream()).thenReturn(new ByteArrayInputStream(pdmlXml.getBytes(StandardCharsets.UTF_8)));
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(pb);
-    PowerMockito.when(pb.start()).thenReturn(p);
+    doReturn(pb).when(pcapToPdmlScriptWrapper).getProcessBuilder(any());
+    when(pb.start()).thenReturn(p);
 
     assertEquals(JSONUtils.INSTANCE.load(expectedPdml, Pdml.class), pcapService.getPdml("user", "jobId", 1));
   }
@@ -576,9 +542,6 @@
 
   @Test
   public void getPdmlShouldThrowException() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("some exception");
-
     Path path = new Path("./target");
     PcapToPdmlScriptWrapper pcapToPdmlScriptWrapper = spy(new PcapToPdmlScriptWrapper());
     PcapServiceImpl pcapService = spy(new PcapServiceImpl(environment, configuration, new PcapJobSupplier(), new InMemoryJobManager<>(), pcapToPdmlScriptWrapper));
@@ -586,11 +549,12 @@
     doReturn(fileSystem).when(pcapService).getFileSystem();
     when(fileSystem.exists(path)).thenReturn(true);
     doReturn(path).when(pcapService).getPath("user", "jobId", 1);
-    ProcessBuilder pb = PowerMockito.mock(ProcessBuilder.class);
+    ProcessBuilder pb = mock(ProcessBuilder.class);
     doReturn(pb).when(pcapToPdmlScriptWrapper).getProcessBuilder("/path/to/pdml/script", "target");
-    PowerMockito.when(pb.start()).thenThrow(new IOException("some exception"));
+    when(pb.start()).thenThrow(new IOException("some exception"));
 
-    pcapService.getPdml("user", "jobId", 1);
+    RestException e = assertThrows(RestException.class, () -> pcapService.getPdml("user", "jobId", 1));
+    assertEquals("some exception", e.getMessage());
   }
 
   @Test
@@ -604,7 +568,7 @@
     doReturn(path).when(pcapService).getPath("user", "jobId", 1);
     when(fileSystem.open(path)).thenReturn(inputStream);
 
-    Assert.assertEquals(inputStream, pcapService.getRawPcap("user", "jobId", 1));
+    assertEquals(inputStream, pcapService.getRawPcap("user", "jobId", 1));
   }
 
   @Test
@@ -633,9 +597,6 @@
 
   @Test
   public void getRawShouldThrowException() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("some exception");
-
     Path path = new Path("./target");
     PcapServiceImpl pcapService = spy(new PcapServiceImpl(environment, configuration, new PcapJobSupplier(), new InMemoryJobManager<>(), pcapToPdmlScriptWrapper));
     FileSystem fileSystem = mock(FileSystem.class);
@@ -644,7 +605,8 @@
     doReturn(path).when(pcapService).getPath("user", "jobId", 1);
     when(fileSystem.open(path)).thenThrow(new IOException("some exception"));
 
-    pcapService.getRawPcap("user", "jobId", 1);
+    RestException e = assertThrows(RestException.class, () -> pcapService.getRawPcap("user", "jobId", 1));
+    assertEquals("some exception", e.getMessage());
   }
 
   @Test
@@ -676,18 +638,18 @@
     pcapService.submit("user", fixedPcapRequest);
 
     Map<String, Object> configuration = pcapService.getConfiguration("user", "jobId");
-    Assert.assertEquals("basePath", configuration.get(PcapOptions.BASE_PATH.getKey()));
-    Assert.assertEquals("finalOutputPath", configuration.get(PcapOptions.FINAL_OUTPUT_PATH.getKey()));
-    Assert.assertEquals(1L, configuration.get(PcapOptions.START_TIME_MS.getKey()));
-    Assert.assertEquals(2L, configuration.get(PcapOptions.END_TIME_MS.getKey()));
-    Assert.assertEquals(2, configuration.get(PcapOptions.NUM_REDUCERS.getKey()));
-    Assert.assertEquals("ip_src_addr", configuration.get(FixedPcapOptions.IP_SRC_ADDR.getKey()));
-    Assert.assertEquals("ip_dst_addr", configuration.get(FixedPcapOptions.IP_DST_ADDR.getKey()));
-    Assert.assertEquals(1000, configuration.get(FixedPcapOptions.IP_SRC_PORT.getKey()));
-    Assert.assertEquals(2000, configuration.get(FixedPcapOptions.IP_DST_PORT.getKey()));
-    Assert.assertEquals("tcp", configuration.get(FixedPcapOptions.PROTOCOL.getKey()));
-    Assert.assertEquals("filter", configuration.get(FixedPcapOptions.PACKET_FILTER.getKey()));
-    Assert.assertEquals(true, configuration.get(FixedPcapOptions.INCLUDE_REVERSE.getKey()));
+    assertEquals("basePath", configuration.get(PcapOptions.BASE_PATH.getKey()));
+    assertEquals("finalOutputPath", configuration.get(PcapOptions.FINAL_OUTPUT_PATH.getKey()));
+    assertEquals(1L, configuration.get(PcapOptions.START_TIME_MS.getKey()));
+    assertEquals(2L, configuration.get(PcapOptions.END_TIME_MS.getKey()));
+    assertEquals(2, configuration.get(PcapOptions.NUM_REDUCERS.getKey()));
+    assertEquals("ip_src_addr", configuration.get(FixedPcapOptions.IP_SRC_ADDR.getKey()));
+    assertEquals("ip_dst_addr", configuration.get(FixedPcapOptions.IP_DST_ADDR.getKey()));
+    assertEquals(1000, configuration.get(FixedPcapOptions.IP_SRC_PORT.getKey()));
+    assertEquals(2000, configuration.get(FixedPcapOptions.IP_DST_PORT.getKey()));
+    assertEquals("tcp", configuration.get(FixedPcapOptions.PROTOCOL.getKey()));
+    assertEquals("filter", configuration.get(FixedPcapOptions.PACKET_FILTER.getKey()));
+    assertEquals(true, configuration.get(FixedPcapOptions.INCLUDE_REVERSE.getKey()));
   }
 
   @Test
@@ -713,12 +675,12 @@
     pcapService.submit("user", queryPcapRequest);
 
     Map<String, Object> configuration = pcapService.getConfiguration("user", "jobId");
-    Assert.assertEquals("basePath", configuration.get(PcapOptions.BASE_PATH.getKey()));
-    Assert.assertEquals("finalOutputPath", configuration.get(PcapOptions.FINAL_OUTPUT_PATH.getKey()));
-    Assert.assertEquals(1L, configuration.get(PcapOptions.START_TIME_MS.getKey()));
-    Assert.assertEquals(2L, configuration.get(PcapOptions.END_TIME_MS.getKey()));
-    Assert.assertEquals(2, configuration.get(PcapOptions.NUM_REDUCERS.getKey()));
-    Assert.assertEquals("query", configuration.get(QueryPcapOptions.QUERY.getKey()));
+    assertEquals("basePath", configuration.get(PcapOptions.BASE_PATH.getKey()));
+    assertEquals("finalOutputPath", configuration.get(PcapOptions.FINAL_OUTPUT_PATH.getKey()));
+    assertEquals(1L, configuration.get(PcapOptions.START_TIME_MS.getKey()));
+    assertEquals(2L, configuration.get(PcapOptions.END_TIME_MS.getKey()));
+    assertEquals(2, configuration.get(PcapOptions.NUM_REDUCERS.getKey()));
+    assertEquals("query", configuration.get(QueryPcapOptions.QUERY.getKey()));
   }
 
   @Test
@@ -729,19 +691,17 @@
 
     PcapServiceImpl pcapService = new PcapServiceImpl(environment, configuration, mockPcapJobSupplier, jobManager, pcapToPdmlScriptWrapper);
     Map<String, Object> configuration = pcapService.getConfiguration("user", "jobId");
-    Assert.assertEquals(new HashMap<>(), configuration);
+    assertEquals(new HashMap<>(), configuration);
   }
 
   @Test
   public void getConfigurationShouldThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("some job exception");
-
     JobManager jobManager = mock(JobManager.class);
     when(jobManager.getJob("user", "jobId")).thenThrow(new JobException("some job exception"));
 
     PcapServiceImpl pcapService = new PcapServiceImpl(environment, configuration, new PcapJobSupplier(), jobManager, pcapToPdmlScriptWrapper);
-    pcapService.getConfiguration("user", "jobId");
+    RestException e = assertThrows(RestException.class, () -> pcapService.getConfiguration("user", "jobId"));
+    assertEquals("some job exception", e.getMessage());
   }
 
 }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SearchServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SearchServiceImplTest.java
index 82e7221..589904e 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SearchServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SearchServiceImplTest.java
@@ -17,23 +17,6 @@
  */
 package org.apache.metron.rest.service.impl;
 
-import static org.apache.metron.common.Constants.SENSOR_TYPE_FIELD_PROPERTY;
-import static org.apache.metron.rest.MetronRestConstants.INDEX_WRITER_NAME;
-import static org.apache.metron.rest.MetronRestConstants.SEARCH_FACET_FIELDS_SPRING_PROPERTY;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
 import org.apache.metron.indexing.dao.IndexDao;
 import org.apache.metron.indexing.dao.search.InvalidSearchException;
 import org.apache.metron.indexing.dao.search.SearchRequest;
@@ -42,17 +25,21 @@
 import org.apache.metron.rest.service.AlertsUIService;
 import org.apache.metron.rest.service.GlobalConfigService;
 import org.apache.metron.rest.service.SensorIndexingConfigService;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
 
+import java.util.*;
+
+import static org.apache.metron.common.Constants.SENSOR_TYPE_FIELD_PROPERTY;
+import static org.apache.metron.rest.MetronRestConstants.INDEX_WRITER_NAME;
+import static org.apache.metron.rest.MetronRestConstants.SEARCH_FACET_FIELDS_SPRING_PROPERTY;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
+
 @SuppressWarnings("ALL")
 public class SearchServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   IndexDao dao;
   Environment environment;
   SensorIndexingConfigService sensorIndexingConfigService;
@@ -60,7 +47,7 @@
   AlertsUIService alertsUIService;
   SearchServiceImpl searchService;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     dao = mock(IndexDao.class);
     environment = mock(Environment.class);
@@ -157,14 +144,12 @@
 
   @Test
   public void saveShouldWrapExceptionInRestException() throws Exception {
-    exception.expect(RestException.class);
-
     when(dao.search(any(SearchRequest.class))).thenThrow(InvalidSearchException.class);
 
     SearchRequest searchRequest = new SearchRequest();
     searchRequest.setIndices(Arrays.asList("bro"));
     searchRequest.setFacetFields(Arrays.asList("ip_src_addr"));
-    searchService.search(searchRequest);
+    assertThrows(RestException.class, () -> searchService.search(searchRequest));
   }
 
   @Test
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorEnrichmentConfigServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorEnrichmentConfigServiceImplTest.java
index 5cc9705..12affbf 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorEnrichmentConfigServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorEnrichmentConfigServiceImplTest.java
@@ -34,26 +34,19 @@
 import org.apache.metron.rest.service.SensorEnrichmentConfigService;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.data.Stat;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.junit.Assert.*;
-import static org.mockito.Matchers.eq;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
-@SuppressWarnings("ALL")
 public class SensorEnrichmentConfigServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   ObjectMapper objectMapper;
   CuratorFramework curatorFramework;
   SensorEnrichmentConfigService sensorEnrichmentConfigService;
@@ -81,8 +74,8 @@
   ConfigurationsCache cache;
   private HBaseClient hBaseClient;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     objectMapper = mock(ObjectMapper.class);
     curatorFramework = mock(CuratorFramework.class);
     cache = mock(ConfigurationsCache.class);
@@ -103,14 +96,12 @@
 
   @Test
   public void deleteShouldProperlyCatchNonNoNodeExceptionAndThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-
     DeleteBuilder builder = mock(DeleteBuilder.class);
 
     when(curatorFramework.delete()).thenReturn(builder);
     when(builder.forPath(ConfigurationType.ENRICHMENT.getZookeeperRoot() + "/bro")).thenThrow(Exception.class);
 
-    assertFalse(sensorEnrichmentConfigService.delete("bro"));
+    assertThrows(RestException.class, () -> sensorEnrichmentConfigService.delete("bro"));
   }
 
   @Test
@@ -118,7 +109,7 @@
     DeleteBuilder builder = mock(DeleteBuilder.class);
 
     when(curatorFramework.delete()).thenReturn(builder);
-    when(builder.forPath(ConfigurationType.ENRICHMENT.getZookeeperRoot() + "/bro")).thenReturn(null);
+    doNothing().when(builder).forPath(ConfigurationType.ENRICHMENT.getZookeeperRoot() + "/bro");
 
     assertTrue(sensorEnrichmentConfigService.delete("bro"));
 
@@ -158,7 +149,7 @@
     when(cache.get(eq(EnrichmentConfigurations.class)))
             .thenReturn(configs);
 
-    assertEquals(new ArrayList() {{
+    assertEquals(new ArrayList<String>() {{
       add("bro");
       add("squid");
     }}, sensorEnrichmentConfigService.getAllTypes());
@@ -178,20 +169,18 @@
     when(cache.get( eq(EnrichmentConfigurations.class)))
             .thenReturn(configs);
 
-    assertEquals(new HashMap() {{ put("bro", sensorEnrichmentConfig);}}, sensorEnrichmentConfigService.getAll());
+    assertEquals(Collections.singletonMap("bro", sensorEnrichmentConfig), sensorEnrichmentConfigService.getAll());
   }
 
   @Test
   public void saveShouldWrapExceptionInRestException() throws Exception {
-    exception.expect(RestException.class);
-
     SetDataBuilder setDataBuilder = mock(SetDataBuilder.class);
     when(setDataBuilder.forPath(ConfigurationType.ENRICHMENT.getZookeeperRoot() + "/bro", broJson.getBytes(
         StandardCharsets.UTF_8))).thenThrow(Exception.class);
 
     when(curatorFramework.setData()).thenReturn(setDataBuilder);
 
-    sensorEnrichmentConfigService.save("bro", new SensorEnrichmentConfig());
+    assertThrows(RestException.class, () -> sensorEnrichmentConfigService.save("bro", new SensorEnrichmentConfig()));
   }
 
   @Test
@@ -225,7 +214,7 @@
   }
 
   @Test
-  public void getAvailableThreatTriageAggregatorsShouldReturnAggregators() throws Exception {
+  public void getAvailableThreatTriageAggregatorsShouldReturnAggregators() {
     assertEquals(new ArrayList<String>() {{
       add("MAX");
       add("MIN");
@@ -238,11 +227,11 @@
   private SensorEnrichmentConfig getTestSensorEnrichmentConfig() {
     SensorEnrichmentConfig sensorEnrichmentConfig = new SensorEnrichmentConfig();
     EnrichmentConfig enrichmentConfig = new EnrichmentConfig();
-    enrichmentConfig.setFieldMap(new HashMap() {{ put("geo", Arrays.asList("ip_dst_addr")); }});
+    enrichmentConfig.setFieldMap(Collections.singletonMap("geo", Collections.singletonList("ip_dst_addr")));
     sensorEnrichmentConfig.setEnrichment(enrichmentConfig);
     ThreatIntelConfig threatIntelConfig = new ThreatIntelConfig();
-    threatIntelConfig.setFieldMap(new HashMap() {{ put("hbaseThreatIntel", Arrays.asList("ip_src_addr")); }});
-    threatIntelConfig.setFieldToTypeMap(new HashMap() {{ put("ip_src_addr", Arrays.asList("malicious_ip")); }});
+    threatIntelConfig.setFieldMap(Collections.singletonMap("hbaseThreatIntel", Collections.singletonList("ip_src_addr")));
+    threatIntelConfig.setFieldToTypeMap(Collections.singletonMap("ip_src_addr", Collections.singletonList("malicious_ip")));
     sensorEnrichmentConfig.setThreatIntel(threatIntelConfig);
     return sensorEnrichmentConfig;
   }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorIndexingConfigServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorIndexingConfigServiceImplTest.java
index dcdd41d..3496d74 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorIndexingConfigServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorIndexingConfigServiceImplTest.java
@@ -21,48 +21,29 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.api.DeleteBuilder;
-import org.apache.curator.framework.api.GetChildrenBuilder;
-import org.apache.curator.framework.api.GetDataBuilder;
 import org.apache.curator.framework.api.SetDataBuilder;
 import org.apache.metron.common.configuration.ConfigurationType;
 import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.configuration.ParserConfigurations;
-import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.common.zookeeper.ConfigurationsCache;
 import org.apache.metron.rest.RestException;
 import org.apache.metron.rest.service.SensorIndexingConfigService;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.data.Stat;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Collections;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 @SuppressWarnings("ALL")
 public class SensorIndexingConfigServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   ObjectMapper objectMapper;
   CuratorFramework curatorFramework;
   SensorIndexingConfigService sensorIndexingConfigService;
@@ -80,7 +61,7 @@
   @Multiline
   public static String broJson;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     objectMapper = mock(ObjectMapper.class);
     curatorFramework = mock(CuratorFramework.class);
@@ -101,25 +82,20 @@
 
   @Test
   public void deleteShouldProperlyCatchNonNoNodeExceptionAndThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-
     DeleteBuilder builder = mock(DeleteBuilder.class);
 
     when(curatorFramework.delete()).thenReturn(builder);
     when(builder.forPath(ConfigurationType.INDEXING.getZookeeperRoot() + "/bro")).thenThrow(Exception.class);
 
-    assertFalse(sensorIndexingConfigService.delete("bro"));
+    assertThrows(RestException.class, () -> sensorIndexingConfigService.delete("bro"));
   }
 
   @Test
   public void deleteShouldReturnTrueWhenClientSuccessfullyCallsDelete() throws Exception {
     DeleteBuilder builder = mock(DeleteBuilder.class);
-
     when(curatorFramework.delete()).thenReturn(builder);
-    when(builder.forPath(ConfigurationType.INDEXING.getZookeeperRoot() + "/bro")).thenReturn(null);
 
     assertTrue(sensorIndexingConfigService.delete("bro"));
-
     verify(curatorFramework).delete();
   }
 
@@ -158,9 +134,9 @@
     when(cache.get(eq(IndexingConfigurations.class))).thenReturn(indexingConfiguration);
     List<String> indices = new ArrayList<String>();
     Iterables.addAll(indices, sensorIndexingConfigService.getAllIndices("elasticsearch"));
-    Assert.assertEquals(2, indices.size());
-    Assert.assertTrue(indices.contains("bro"));
-    Assert.assertTrue(indices.contains("snort"));
+    assertEquals(2, indices.size());
+    assertTrue(indices.contains("bro"));
+    assertTrue(indices.contains("snort"));
   }
 
   @Test
@@ -180,9 +156,9 @@
     when(cache.get(eq(IndexingConfigurations.class))).thenReturn(indexingConfiguration);
     List<String> indices = new ArrayList<String>();
     Iterables.addAll(indices, sensorIndexingConfigService.getAllIndices("elasticsearch"));
-    Assert.assertEquals(2, indices.size());
-    Assert.assertTrue(indices.contains("renamed_bro"));
-    Assert.assertTrue(indices.contains("snort"));
+    assertEquals(2, indices.size());
+    assertTrue(indices.contains("renamed_bro"));
+    assertTrue(indices.contains("snort"));
   }
 
   @Test
@@ -203,10 +179,10 @@
     when(cache.get(eq(IndexingConfigurations.class))).thenReturn(indexingConfiguration);
     List<String> indices = new ArrayList<String>();
     Iterables.addAll(indices, sensorIndexingConfigService.getAllIndices("elasticsearch"));
-    Assert.assertEquals(3, indices.size());
-    Assert.assertTrue(indices.contains("renamed_bro"));
-    Assert.assertTrue(indices.contains("snort"));
-    Assert.assertTrue(indices.contains("yaf"));
+    assertEquals(3, indices.size());
+    assertTrue(indices.contains("renamed_bro"));
+    assertTrue(indices.contains("snort"));
+    assertTrue(indices.contains("yaf"));
   }
 
   @Test
@@ -220,7 +196,7 @@
     when(cache.get(eq(IndexingConfigurations.class))).thenReturn(indexingConfiguration);
     List<String> indices = new ArrayList<String>();
     Iterables.addAll(indices, sensorIndexingConfigService.getAllIndices("elasticsearch"));
-    Assert.assertEquals(0, indices.size());
+    assertEquals(0, indices.size());
   }
 
   @Test
@@ -260,15 +236,13 @@
 
   @Test
   public void saveShouldWrapExceptionInRestException() throws Exception {
-    exception.expect(RestException.class);
-
     SetDataBuilder setDataBuilder = mock(SetDataBuilder.class);
     when(setDataBuilder.forPath(ConfigurationType.INDEXING.getZookeeperRoot() + "/bro", broJson.getBytes(
         StandardCharsets.UTF_8))).thenThrow(Exception.class);
 
     when(curatorFramework.setData()).thenReturn(setDataBuilder);
 
-    sensorIndexingConfigService.save("bro", new HashMap<>());
+    assertThrows(RestException.class, () -> sensorIndexingConfigService.save("bro", new HashMap<>()));
   }
 
   @Test
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorParserConfigServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorParserConfigServiceImplTest.java
index a588b99..742a92d 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorParserConfigServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorParserConfigServiceImplTest.java
@@ -19,20 +19,13 @@
 
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.ImmutableMap;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.nio.charset.StandardCharsets;
 import oi.thekraken.grok.api.Grok;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.api.DeleteBuilder;
-import org.apache.curator.framework.api.GetChildrenBuilder;
-import org.apache.curator.framework.api.GetDataBuilder;
 import org.apache.curator.framework.api.SetDataBuilder;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.metron.common.configuration.ConfigurationType;
-import org.apache.metron.common.configuration.ConfigurationType;
 import org.apache.metron.common.configuration.ParserConfigurations;
 import org.apache.metron.common.configuration.SensorParserConfig;
 import org.apache.metron.common.zookeeper.ConfigurationsCache;
@@ -42,35 +35,26 @@
 import org.apache.metron.rest.service.SensorParserConfigService;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.data.Stat;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Map;
 import org.springframework.security.core.Authentication;
 import org.springframework.security.core.context.SecurityContextHolder;
 
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.Writer;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
 import static org.apache.metron.rest.MetronRestConstants.GROK_TEMP_PATH_SPRING_PROPERTY;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
-@SuppressWarnings("ALL")
 public class SensorParserConfigServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   Environment environment;
   ObjectMapper objectMapper;
   CuratorFramework curatorFramework;
@@ -105,8 +89,8 @@
 
   ConfigurationsCache cache;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     objectMapper = mock(ObjectMapper.class);
     curatorFramework = mock(CuratorFramework.class);
     Environment environment = mock(Environment.class);
@@ -132,25 +116,20 @@
 
   @Test
   public void deleteShouldProperlyCatchNonNoNodeExceptionAndThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-
     DeleteBuilder builder = mock(DeleteBuilder.class);
 
     when(curatorFramework.delete()).thenReturn(builder);
     when(builder.forPath(ConfigurationType.PARSER.getZookeeperRoot() + "/bro")).thenThrow(Exception.class);
 
-    assertFalse(sensorParserConfigService.delete("bro"));
+    assertThrows(RestException.class, () -> sensorParserConfigService.delete("bro"));
   }
 
   @Test
   public void deleteShouldReturnTrueWhenClientSuccessfullyCallsDelete() throws Exception {
     DeleteBuilder builder = mock(DeleteBuilder.class);
-
     when(curatorFramework.delete()).thenReturn(builder);
-    when(builder.forPath(ConfigurationType.PARSER.getZookeeperRoot() + "/bro")).thenReturn(null);
 
     assertTrue(sensorParserConfigService.delete("bro"));
-
     verify(curatorFramework).delete();
   }
 
@@ -186,7 +165,7 @@
     when(cache.get( eq(ParserConfigurations.class)))
             .thenReturn(configs);
 
-    assertEquals(new ArrayList() {{
+    assertEquals(new ArrayList<String>() {{
       add("bro");
       add("squid");
     }}, sensorParserConfigService.getAllTypes());
@@ -207,7 +186,7 @@
     when(cache.get( eq(ParserConfigurations.class)))
             .thenReturn(configs);
 
-    assertEquals(new HashMap() {{
+    assertEquals(new HashMap<String, Object>() {{
       put("bro", getTestBroSensorParserConfig());
       put("squid", getTestSquidSensorParserConfig());
     }}, sensorParserConfigService.getAll());
@@ -215,8 +194,6 @@
 
   @Test
   public void saveShouldWrapExceptionInRestException() throws Exception {
-    exception.expect(RestException.class);
-
     SetDataBuilder setDataBuilder = mock(SetDataBuilder.class);
     when(setDataBuilder.forPath(ConfigurationType.PARSER.getZookeeperRoot() + "/bro", broJson.getBytes(StandardCharsets.UTF_8))).thenThrow(Exception.class);
 
@@ -224,7 +201,7 @@
 
     final SensorParserConfig sensorParserConfig = new SensorParserConfig();
     sensorParserConfig.setSensorTopic("bro");
-    sensorParserConfigService.save("bro", sensorParserConfig);
+    assertThrows(RestException.class, () -> sensorParserConfigService.save("bro", sensorParserConfig));
   }
 
   @Test
@@ -242,7 +219,7 @@
   }
 
   @Test
-  public void reloadAvailableParsersShouldReturnParserClasses() throws Exception {
+  public void reloadAvailableParsersShouldReturnParserClasses() {
     Map<String, String> availableParsers = sensorParserConfigService.reloadAvailableParsers();
     assertTrue(availableParsers.size() > 0);
     assertEquals("org.apache.metron.parsers.GrokParser", availableParsers.get("Grok"));
@@ -266,7 +243,7 @@
     writer.write(grokStatement);
     writer.close();
 
-    assertEquals(new HashMap() {{
+    assertEquals(new HashMap<String, Object>() {{
       put("elapsed", 161);
       put("code", 200);
       put("ip_dst_addr", "199.27.79.73");
@@ -282,34 +259,28 @@
   }
 
   @Test
-  public void missingSensorParserConfigShouldThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-
+  public void missingSensorParserConfigShouldThrowRestException() {
     ParseMessageRequest parseMessageRequest = new ParseMessageRequest();
-    sensorParserConfigService.parseMessage(parseMessageRequest);
+    assertThrows(RestException.class, () -> sensorParserConfigService.parseMessage(parseMessageRequest));
   }
 
   @Test
-  public void missingParserClassShouldThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-
+  public void missingParserClassShouldThrowRestException() {
     final SensorParserConfig sensorParserConfig = new SensorParserConfig();
     sensorParserConfig.setSensorTopic("squid");
     ParseMessageRequest parseMessageRequest = new ParseMessageRequest();
     parseMessageRequest.setSensorParserConfig(sensorParserConfig);
-    sensorParserConfigService.parseMessage(parseMessageRequest);
+    assertThrows(RestException.class, () -> sensorParserConfigService.parseMessage(parseMessageRequest));
   }
 
   @Test
-  public void invalidParserClassShouldThrowRestException() throws Exception {
-    exception.expect(RestException.class);
-
+  public void invalidParserClassShouldThrowRestException() {
     final SensorParserConfig sensorParserConfig = new SensorParserConfig();
     sensorParserConfig.setSensorTopic("squid");
     sensorParserConfig.setParserClassName("bad.class.package.BadClassName");
     ParseMessageRequest parseMessageRequest = new ParseMessageRequest();
     parseMessageRequest.setSensorParserConfig(sensorParserConfig);
-    sensorParserConfigService.parseMessage(parseMessageRequest);
+    assertThrows(RestException.class, () -> sensorParserConfigService.parseMessage(parseMessageRequest));
   }
 
   private SensorParserConfig getTestBroSensorParserConfig() {
@@ -323,7 +294,7 @@
     SensorParserConfig sensorParserConfig = new SensorParserConfig();
     sensorParserConfig.setSensorTopic("squid");
     sensorParserConfig.setParserClassName("org.apache.metron.parsers.GrokParser");
-    sensorParserConfig.setParserConfig(new HashMap() {{
+    sensorParserConfig.setParserConfig(new HashMap<String, Object>() {{
       put("grokPath", "/patterns/squid");
       put("patternLabel", "SQUID_DELIMITED");
       put("timestampField", "timestamp");
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorParserGroupServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorParserGroupServiceImplTest.java
index efe8f43..a070c34 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorParserGroupServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/SensorParserGroupServiceImplTest.java
@@ -25,37 +25,23 @@
 import org.apache.metron.rest.service.GlobalConfigService;
 import org.apache.metron.rest.service.SensorParserConfigService;
 import org.apache.metron.rest.service.SensorParserGroupService;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
+import java.util.*;
 
 import static org.apache.metron.common.configuration.ParserConfigurations.PARSER_GROUPS_CONF;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 public class SensorParserGroupServiceImplTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private ConfigurationsCache cache;
   private GlobalConfigService globalConfigService;
   private SensorParserConfigService sensorParserConfigService;
   private SensorParserGroupService sensorParserGroupService;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     cache = mock(ConfigurationsCache.class);
     globalConfigService = mock(GlobalConfigService.class);
     sensorParserConfigService = mock(SensorParserConfigService.class);
@@ -112,33 +98,26 @@
   }
 
   @Test
-  public void saveShouldThrowExceptionOnMissingSensor() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("A parser group must contain sensors");
-
+  public void saveShouldThrowExceptionOnMissingSensor() {
     when(cache.get(ParserConfigurations.class)).thenReturn(new ParserConfigurations());
 
-    sensorParserGroupService.save(new SensorParserGroup());
+    RestException e = assertThrows(RestException.class, () -> sensorParserGroupService.save(new SensorParserGroup()));
+    assertEquals("A parser group must contain sensors", e.getMessage());
   }
 
   @Test
-  public void saveShouldThrowExceptionOnMissingConfig() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("Could not find config for sensor bro");
-
+  public void saveShouldThrowExceptionOnMissingConfig() {
     when(cache.get(ParserConfigurations.class)).thenReturn(new ParserConfigurations());
 
     SensorParserGroup sensorParserGroup = new SensorParserGroup();
     sensorParserGroup.setSensors(Collections.singleton("bro"));
 
-    sensorParserGroupService.save(sensorParserGroup);
+    RestException e = assertThrows(RestException.class, () -> sensorParserGroupService.save(sensorParserGroup));
+    assertEquals("Could not find config for sensor bro", e.getMessage());
   }
 
   @Test
   public void saveShouldThrowExceptionOnSensorInAnotherGroup() throws Exception {
-    exception.expect(RestException.class);
-    exception.expectMessage("Sensor bro is already in group existingGroup");
-
     SensorParserGroup existingGroup = new SensorParserGroup();
     existingGroup.setName("existingGroup");
     existingGroup.setSensors(Collections.singleton("bro"));
@@ -153,11 +132,12 @@
     newGroup.setName("newGroup");
     newGroup.setSensors(Collections.singleton("bro"));
 
-    sensorParserGroupService.save(newGroup);
+    RestException e = assertThrows(RestException.class, () -> sensorParserGroupService.save(newGroup));
+    assertEquals("Sensor bro is already in group existingGroup", e.getMessage());
   }
 
   @Test
-  public void shouldFindSensorParserGroup() throws Exception {
+  public void shouldFindSensorParserGroup() {
     ParserConfigurations parserConfigurations = mock(ParserConfigurations.class);
     SensorParserGroup group1 = new SensorParserGroup();
     group1.setName("group1");
@@ -192,8 +172,8 @@
     Map<String, Object> expectedGlobalConfig = new HashMap<>();
     expectedGlobalConfig.put(PARSER_GROUPS_CONF, new HashSet<>());
 
-    assertEquals(true, sensorParserGroupService.delete("group1"));
-    assertEquals(false, sensorParserGroupService.delete("group2"));
+    assertTrue(sensorParserGroupService.delete("group1"));
+    assertFalse(sensorParserGroupService.delete("group2"));
 
     verify(globalConfigService, times(1)).save(expectedGlobalConfig);
     verifyNoMoreInteractions(globalConfigService);
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StellarServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StellarServiceImplTest.java
index 629dfc3..1c8ce99 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StellarServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StellarServiceImplTest.java
@@ -23,8 +23,8 @@
 import org.apache.metron.rest.model.SensorParserContext;
 import org.apache.metron.rest.service.StellarService;
 import org.apache.storm.shade.com.google.common.collect.ImmutableList;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.HashMap;
@@ -32,8 +32,8 @@
 import java.util.List;
 import java.util.Map;
 
-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;
 import static org.mockito.Mockito.mock;
 
 public class StellarServiceImplTest {
@@ -41,7 +41,7 @@
   private StellarService stellarService;
   CuratorFramework curatorFramework;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     curatorFramework = mock(CuratorFramework.class);
     stellarService = new StellarServiceImpl(curatorFramework);
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormAdminServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormAdminServiceImplTest.java
index 9f6c3c5..e842b83 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormAdminServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormAdminServiceImplTest.java
@@ -22,31 +22,20 @@
 import org.apache.metron.rest.model.TopologyResponse;
 import org.apache.metron.rest.model.TopologyStatus;
 import org.apache.metron.rest.model.TopologyStatusCode;
-import org.apache.metron.rest.service.GlobalConfigService;
-import org.apache.metron.rest.service.SensorParserConfigService;
-import org.apache.metron.rest.service.SensorParserGroupService;
-import org.apache.metron.rest.service.StormAdminService;
-import org.apache.metron.rest.service.StormStatusService;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.apache.metron.rest.service.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import java.util.Arrays;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @SuppressWarnings("ALL")
 public class StormAdminServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   StormCLIWrapper stormCLIClientWrapper;
   StormAdminService stormAdminService;
   GlobalConfigService globalConfigService;
@@ -54,7 +43,7 @@
   SensorParserGroupService sensorParserGroupService;
   StormStatusService stormStatusService;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     stormCLIClientWrapper = mock(StormCLIWrapper.class);
     globalConfigService = mock(GlobalConfigService.class);
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormCLIWrapperTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormCLIWrapperTest.java
index 60a9790..fc734d5 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormCLIWrapperTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormCLIWrapperTest.java
@@ -19,13 +19,8 @@
 
 import org.apache.metron.rest.MetronRestConstants;
 import org.apache.metron.rest.RestException;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
 
 import java.io.ByteArrayInputStream;
@@ -35,41 +30,28 @@
 import java.util.Map;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.anyVararg;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.verifyNew;
-import static org.powermock.api.mockito.PowerMockito.when;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
 
-@SuppressWarnings("unchecked")
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({DockerStormCLIWrapper.class, ProcessBuilder.class})
 public class StormCLIWrapperTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private ProcessBuilder processBuilder;
   private Environment environment;
   private Process process;
   private StormCLIWrapper stormCLIWrapper;
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     processBuilder = mock(ProcessBuilder.class);
     environment = mock(Environment.class);
     process = mock(Process.class);
-    stormCLIWrapper = new StormCLIWrapper();
+    stormCLIWrapper = mock(StormCLIWrapper.class, withSettings().defaultAnswer(CALLS_REAL_METHODS));
     stormCLIWrapper.setEnvironment(environment);
+    doReturn(processBuilder).when(stormCLIWrapper).getProcessBuilder(any());
   }
 
   @Test
   public void startParserTopologyShouldRunCommandProperly() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     when(processBuilder.start()).thenReturn(process);
     when(environment.getProperty(MetronRestConstants.PARSER_SCRIPT_PATH_SPRING_PROPERTY)).thenReturn("/start_parser");
     when(environment.getProperty(MetronRestConstants.KAFKA_BROKER_URL_SPRING_PROPERTY)).thenReturn("kafka_broker_url");
@@ -80,7 +62,7 @@
 
     assertEquals(0, stormCLIWrapper.startParserTopology("bro"));
     verify(process).waitFor();
-    verifyNew(ProcessBuilder.class).withArguments("/start_parser",
+    verify(stormCLIWrapper).getProcessBuilder("/start_parser",
             "-s", "bro",
             "-z", "zookeeper_url",
             "-k", "kafka_broker_url",
@@ -93,9 +75,6 @@
    */
   @Test
   public void startParserTopologyWithExtraTopologyOptions() throws Exception {
-
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     when(processBuilder.start()).thenReturn(process);
     when(environment.getProperty(MetronRestConstants.PARSER_SCRIPT_PATH_SPRING_PROPERTY)).thenReturn("/start_parser");
     when(environment.getProperty(MetronRestConstants.KAFKA_BROKER_URL_SPRING_PROPERTY)).thenReturn("kafka_broker_url");
@@ -107,7 +86,7 @@
 
     assertEquals(0, stormCLIWrapper.startParserTopology("bro"));
     verify(process, times(2)).waitFor();
-    verifyNew(ProcessBuilder.class).withArguments("/start_parser",
+    verify(stormCLIWrapper).getProcessBuilder("/start_parser",
             "-s", "bro",
             "-z", "zookeeper_url",
             "-k", "kafka_broker_url",
@@ -117,34 +96,28 @@
 
   @Test
   public void stopParserTopologyShouldRunCommandProperly() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     when(processBuilder.start()).thenReturn(process);
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
     when(process.exitValue()).thenReturn(0);
 
     assertEquals(0, stormCLIWrapper.stopParserTopology("bro", false));
     verify(process).waitFor();
-    verifyNew(ProcessBuilder.class).withArguments("storm", "kill", "bro");
+    verify(stormCLIWrapper).getProcessBuilder("storm", "kill", "bro");
   }
 
   @Test
   public void stopParserTopologyNowShouldRunCommandProperly() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     when(processBuilder.start()).thenReturn(process);
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
     when(process.exitValue()).thenReturn(0);
 
     assertEquals(0, stormCLIWrapper.stopParserTopology("bro", true));
     verify(process).waitFor();
-    verifyNew(ProcessBuilder.class).withArguments("storm", "kill", "bro", "-w", "0");
+    verify(stormCLIWrapper).getProcessBuilder("storm", "kill", "bro", "-w", "0");
   }
 
   @Test
   public void startEnrichmentTopologyShouldRunCommandProperly() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     when(processBuilder.start()).thenReturn(process);
     when(environment.getProperty(MetronRestConstants.ENRICHMENT_SCRIPT_PATH_SPRING_PROPERTY)).thenReturn("/start_enrichment");
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
@@ -152,27 +125,22 @@
 
     assertEquals(0, stormCLIWrapper.startEnrichmentTopology());
     verify(process).waitFor();
-    verifyNew(ProcessBuilder.class).withArguments("/start_enrichment");
-
+    verify(stormCLIWrapper).getProcessBuilder("/start_enrichment");
   }
 
   @Test
   public void stopEnrichmentTopologyShouldRunCommandProperly() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     when(processBuilder.start()).thenReturn(process);
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
     when(process.exitValue()).thenReturn(0);
 
     assertEquals(0, stormCLIWrapper.stopEnrichmentTopology(false));
     verify(process).waitFor();
-    verifyNew(ProcessBuilder.class).withArguments("storm", "kill", MetronRestConstants.ENRICHMENT_TOPOLOGY_NAME);
+    verify(stormCLIWrapper).getProcessBuilder("storm", "kill", MetronRestConstants.ENRICHMENT_TOPOLOGY_NAME);
   }
 
   @Test
   public void startIndexingTopologyShouldRunCommandProperly() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     when(processBuilder.start()).thenReturn(process);
     when(environment.getProperty(MetronRestConstants.RANDOM_ACCESS_INDEXING_SCRIPT_PATH_SPRING_PROPERTY)).thenReturn("/start_indexing");
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
@@ -180,27 +148,22 @@
 
     assertEquals(0, stormCLIWrapper.startIndexingTopology(MetronRestConstants.RANDOM_ACCESS_INDEXING_SCRIPT_PATH_SPRING_PROPERTY));
     verify(process).waitFor();
-    verifyNew(ProcessBuilder.class).withArguments("/start_indexing");
-
+    verify(stormCLIWrapper).getProcessBuilder("/start_indexing");
   }
 
   @Test
   public void stopIndexingTopologyShouldRunCommandProperly() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     when(processBuilder.start()).thenReturn(process);
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(false);
     when(process.exitValue()).thenReturn(0);
 
     assertEquals(0, stormCLIWrapper.stopIndexingTopology("random_access_indexing", false));
     verify(process).waitFor();
-    verifyNew(ProcessBuilder.class).withArguments("storm", "kill", MetronRestConstants.RANDOM_ACCESS_INDEXING_TOPOLOGY_NAME);
+    verify(stormCLIWrapper).getProcessBuilder("storm", "kill", MetronRestConstants.RANDOM_ACCESS_INDEXING_TOPOLOGY_NAME);
   }
 
   @Test
   public void getStormClientStatusShouldReturnCorrectStatus() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     Process process = mock(Process.class);
     InputStream inputStream = new ByteArrayInputStream("\nStorm 1.1".getBytes(UTF_8));
 
@@ -221,12 +184,11 @@
       put("batchIndexingScriptPath", "/start_hdfs");
 
     }}, actual);
-    verifyNew(ProcessBuilder.class).withArguments("storm", "version");
+    verify(stormCLIWrapper).getProcessBuilder("storm", "version");
   }
 
   @Test
   public void stormClientVersionInstalledShouldReturnDefault() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
 
     Process process = mock(Process.class);
     InputStream inputStream = new ByteArrayInputStream("".getBytes(UTF_8));
@@ -238,28 +200,20 @@
 
   @Test
   public void runCommandShouldReturnRestExceptionOnError() throws Exception {
-    exception.expect(RestException.class);
-
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
     when(processBuilder.start()).thenThrow(new IOException());
 
-    stormCLIWrapper.runCommand(new String[]{"storm", "kill"});
+    assertThrows(RestException.class, () -> stormCLIWrapper.runCommand(new String[]{"storm", "kill"}));
   }
 
   @Test
   public void stormClientVersionInstalledShouldReturnRestExceptionOnError() throws Exception {
-    exception.expect(RestException.class);
-
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
     when(processBuilder.start()).thenThrow(new IOException());
 
-    stormCLIWrapper.stormClientVersionInstalled();
+    assertThrows(RestException.class, () -> stormCLIWrapper.stormClientVersionInstalled());
   }
 
   @Test
   public void kinitShouldRunCommandProperly() throws Exception {
-    whenNew(ProcessBuilder.class).withParameterTypes(String[].class).withArguments(anyVararg()).thenReturn(processBuilder);
-
     when(processBuilder.start()).thenReturn(process);
     when(environment.getProperty(MetronRestConstants.KERBEROS_ENABLED_SPRING_PROPERTY, Boolean.class, false)).thenReturn(true);
     when(environment.getProperty(MetronRestConstants.KERBEROS_KEYTAB_SPRING_PROPERTY)).thenReturn("metron keytabLocation");
@@ -268,6 +222,6 @@
 
     stormCLIWrapper.kinit();
     verify(process, times(1)).waitFor();
-    verifyNew(ProcessBuilder.class).withArguments("kinit", "-kt", "metron keytabLocation", "metron principal");
+    verify(stormCLIWrapper).getProcessBuilder("kinit", "-kt", "metron keytabLocation", "metron principal");
   }
 }
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormStatusServiceImplTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormStatusServiceImplTest.java
index eac9be5..a325751 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormStatusServiceImplTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/service/impl/StormStatusServiceImplTest.java
@@ -24,10 +24,8 @@
 import org.apache.metron.rest.model.TopologySummary;
 import org.apache.metron.rest.service.SensorParserGroupService;
 import org.apache.metron.rest.service.StormStatusService;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
 import org.springframework.web.client.RestTemplate;
 
@@ -36,10 +34,8 @@
 import java.util.HashSet;
 import java.util.Map;
 
-import static org.apache.metron.rest.MetronRestConstants.STORM_UI_SPRING_PROPERTY;
-import static org.apache.metron.rest.MetronRestConstants.TOPOLOGY_SUMMARY_URL;
-import static org.apache.metron.rest.MetronRestConstants.TOPOLOGY_URL;
-import static org.junit.Assert.assertEquals;
+import static org.apache.metron.rest.MetronRestConstants.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -49,15 +45,13 @@
   private static final String HTTP_STORM_UI = "http://storm_ui";
   private static final String HTTPS_STORM_UI = "https://storm_ui";
   private static final String NO_PROTOCOL_STORM_UI = "storm_ui";
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
 
   Environment environment;
   RestTemplate restTemplate;
   StormStatusService stormStatusService;
   SensorParserGroupService sensorParserGroupService;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     environment = mock(Environment.class);
     restTemplate = mock(RestTemplate.class);
diff --git a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/user/UserSettingsClientTest.java b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/user/UserSettingsClientTest.java
index 0fea0f4..e383e64 100644
--- a/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/user/UserSettingsClientTest.java
+++ b/metron-interface/metron-rest/src/test/java/org/apache/metron/rest/user/UserSettingsClientTest.java
@@ -18,37 +18,28 @@
 package org.apache.metron.rest.user;
 
 
-import static org.apache.metron.rest.user.UserSettingsClient.USER_SETTINGS_HBASE_CF;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.databind.ObjectMapper;
+import org.apache.hadoop.hbase.client.*;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Supplier;
-import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.ResultScanner;
-import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.client.Table;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+
+import static org.apache.metron.rest.user.UserSettingsClient.USER_SETTINGS_HBASE_CF;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 public class UserSettingsClientTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private static ThreadLocal<ObjectMapper> _mapper = ThreadLocal.withInitial(() ->
           new ObjectMapper().setSerializationInclusion(JsonInclude.Include.NON_NULL));
 
@@ -57,8 +48,8 @@
   private UserSettingsClient userSettingsClient;
   private static byte[] cf = Bytes.toBytes("cf");
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     userSettingsTable = mock(Table.class);
     globalConfigSupplier = () -> new HashMap<String, Object>() {{
       put(USER_SETTINGS_HBASE_CF, "cf");
diff --git a/metron-interface/metron-rest/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/metron-interface/metron-rest/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
new file mode 100644
index 0000000..ca6ee9c
--- /dev/null
+++ b/metron-interface/metron-rest/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
@@ -0,0 +1 @@
+mock-maker-inline
\ No newline at end of file
diff --git a/metron-interface/pom.xml b/metron-interface/pom.xml
index 2934368..846fe9d 100644
--- a/metron-interface/pom.xml
+++ b/metron-interface/pom.xml
@@ -49,12 +49,6 @@
     </modules>
     <dependencies>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
             <groupId>org.adrianwalker</groupId>
             <artifactId>multiline-string</artifactId>
             <version>0.1.2</version>
diff --git a/metron-platform/metron-common-streaming/metron-common-storm/pom.xml b/metron-platform/metron-common-streaming/metron-common-storm/pom.xml
index 27f3aa1..2e12e1b 100644
--- a/metron-platform/metron-common-streaming/metron-common-storm/pom.xml
+++ b/metron-platform/metron-common-streaming/metron-common-storm/pom.xml
@@ -91,5 +91,16 @@
         <version>${project.parent.version}</version>
         <scope>test</scope>
       </dependency>
+      <dependency>
+          <groupId>org.hamcrest</groupId>
+          <artifactId>hamcrest-core</artifactId>
+          <version>${global_hamcrest_version}</version>
+          <scope>test</scope>
+      </dependency>
+      <dependency>
+          <groupId>org.mockito</groupId>
+          <artifactId>mockito-core</artifactId>
+          <scope>test</scope>
+      </dependency>
     </dependencies>
 </project>
diff --git a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/BaseConfiguredBoltTest.java b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/BaseConfiguredBoltTest.java
index ac2d1e8..4cf688f 100644
--- a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/BaseConfiguredBoltTest.java
+++ b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/BaseConfiguredBoltTest.java
@@ -17,11 +17,12 @@
  */
 package org.apache.metron.storm.common.bolt;
 
-import org.apache.metron.test.bolt.BaseBoltTest;
-import org.junit.Assert;
+import static org.junit.jupiter.api.Assertions.fail;
+
 
 import java.util.HashSet;
 import java.util.Set;
+import org.apache.metron.test.bolt.BaseBoltTest;
 
 public class BaseConfiguredBoltTest extends BaseBoltTest {
 
@@ -35,7 +36,7 @@
     int count = 0;
     while (!configsUpdated.equals(expectedConfigUpdates)) {
       if (count++ > 5) {
-        Assert.fail("ConfiguredBolt was not updated in time");
+        fail("ConfiguredBolt was not updated in time");
         return;
       }
       try {
diff --git a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/ConfiguredEnrichmentBoltTest.java b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/ConfiguredEnrichmentBoltTest.java
index 256415a..a9f6480 100644
--- a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/ConfiguredEnrichmentBoltTest.java
+++ b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/ConfiguredEnrichmentBoltTest.java
@@ -17,23 +17,27 @@
  */
 package org.apache.metron.storm.common.bolt;
 
-import org.apache.log4j.Level;
-import org.apache.metron.test.utils.UnitTestHelper;
-import org.apache.storm.topology.OutputFieldsDeclarer;
-import org.apache.storm.tuple.Tuple;
-import org.apache.curator.test.TestingServer;
-import org.apache.metron.TestConstants;
-import org.apache.metron.common.configuration.*;
-import org.apache.metron.common.configuration.enrichment.SensorEnrichmentConfig;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import org.apache.curator.test.TestingServer;
+import org.apache.log4j.Level;
+import org.apache.metron.TestConstants;
+import org.apache.metron.common.configuration.ConfigurationType;
+import org.apache.metron.common.configuration.ConfigurationsUtils;
+import org.apache.metron.common.configuration.EnrichmentConfigurations;
+import org.apache.metron.common.configuration.enrichment.SensorEnrichmentConfig;
+import org.apache.metron.test.utils.UnitTestHelper;
+import org.apache.storm.topology.OutputFieldsDeclarer;
+import org.apache.storm.tuple.Tuple;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public class ConfiguredEnrichmentBoltTest extends BaseConfiguredBoltTest {
 
@@ -64,7 +68,7 @@
     }
   }
 
-  @Before
+  @BeforeEach
   public void setupConfiguration() throws Exception {
     TestingServer testZkServer = new TestingServer(true);
     this.zookeeperUrl = testZkServer.getConnectString();
@@ -86,11 +90,9 @@
   public void test() throws Exception {
     EnrichmentConfigurations sampleConfigurations = new EnrichmentConfigurations();
     UnitTestHelper.setLog4jLevel(ConfiguredBolt.class, Level.FATAL);
-    try {
-      StandAloneConfiguredEnrichmentBolt configuredBolt = new StandAloneConfiguredEnrichmentBolt(null);
-      configuredBolt.prepare(new HashMap(), topologyContext, outputCollector);
-      Assert.fail("A valid zookeeper url must be supplied");
-    } catch (RuntimeException e){}
+    StandAloneConfiguredEnrichmentBolt configuredBoltNullZk = new StandAloneConfiguredEnrichmentBolt(null);
+    assertThrows(RuntimeException.class, () -> configuredBoltNullZk.prepare(new HashMap(), topologyContext, outputCollector),
+        "A valid zookeeper url must be supplied");
     UnitTestHelper.setLog4jLevel(ConfiguredBolt.class, Level.ERROR);
 
     configsUpdated = new HashSet<>();
@@ -103,20 +105,20 @@
     StandAloneConfiguredEnrichmentBolt configuredBolt = new StandAloneConfiguredEnrichmentBolt(zookeeperUrl);
     configuredBolt.prepare(new HashMap(), topologyContext, outputCollector);
     waitForConfigUpdate(enrichmentConfigurationTypes);
-    Assert.assertEquals(sampleConfigurations, configuredBolt.getConfigurations());
+    assertEquals(sampleConfigurations, configuredBolt.getConfigurations());
 
     configsUpdated = new HashSet<>();
     Map<String, Object> sampleGlobalConfig = sampleConfigurations.getGlobalConfig();
     sampleGlobalConfig.put("newGlobalField", "newGlobalValue");
     ConfigurationsUtils.writeGlobalConfigToZookeeper(sampleGlobalConfig, zookeeperUrl);
     waitForConfigUpdate(ConfigurationType.GLOBAL.getTypeName());
-    Assert.assertEquals("Add global config field", sampleConfigurations.getGlobalConfig(), configuredBolt.getConfigurations().getGlobalConfig());
+    assertEquals(sampleConfigurations.getGlobalConfig(), configuredBolt.getConfigurations().getGlobalConfig(), "Add global config field");
 
     configsUpdated = new HashSet<>();
     sampleGlobalConfig.remove("newGlobalField");
     ConfigurationsUtils.writeGlobalConfigToZookeeper(sampleGlobalConfig, zookeeperUrl);
     waitForConfigUpdate(ConfigurationType.GLOBAL.getTypeName());
-    Assert.assertEquals("Remove global config field", sampleConfigurations, configuredBolt.getConfigurations());
+    assertEquals(sampleConfigurations, configuredBolt.getConfigurations(), "Remove global config field");
 
     configsUpdated = new HashSet<>();
     String sensorType = "testSensorConfig";
@@ -134,7 +136,7 @@
     sampleConfigurations.updateSensorEnrichmentConfig(sensorType, testSensorConfig);
     ConfigurationsUtils.writeSensorEnrichmentConfigToZookeeper(sensorType, testSensorConfig, zookeeperUrl);
     waitForConfigUpdate(sensorType);
-    Assert.assertEquals("Add new sensor config", sampleConfigurations, configuredBolt.getConfigurations());
+    assertEquals(sampleConfigurations, configuredBolt.getConfigurations(), "Add new sensor config");
     configuredBolt.cleanup();
   }
 }
diff --git a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/ConfiguredParserBoltTest.java b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/ConfiguredParserBoltTest.java
index 66668d1..aed8ce5 100644
--- a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/ConfiguredParserBoltTest.java
+++ b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/bolt/ConfiguredParserBoltTest.java
@@ -15,27 +15,30 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 package org.apache.metron.storm.common.bolt;
 
-import org.apache.log4j.Level;
-import org.apache.metron.common.configuration.FieldValidator;
-import org.apache.metron.test.utils.UnitTestHelper;
-import org.apache.storm.topology.OutputFieldsDeclarer;
-import org.apache.storm.tuple.Tuple;
-import org.apache.curator.test.TestingServer;
-import org.apache.metron.TestConstants;
-import org.apache.metron.common.configuration.ConfigurationType;
-import org.apache.metron.common.configuration.ConfigurationsUtils;
-import org.apache.metron.common.configuration.ParserConfigurations;
-import org.apache.metron.common.configuration.SensorParserConfig;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
+import org.apache.curator.test.TestingServer;
+import org.apache.log4j.Level;
+import org.apache.metron.TestConstants;
+import org.apache.metron.common.configuration.ConfigurationType;
+import org.apache.metron.common.configuration.ConfigurationsUtils;
+import org.apache.metron.common.configuration.FieldValidator;
+import org.apache.metron.common.configuration.ParserConfigurations;
+import org.apache.metron.common.configuration.SensorParserConfig;
+import org.apache.metron.test.utils.UnitTestHelper;
+import org.apache.storm.topology.OutputFieldsDeclarer;
+import org.apache.storm.tuple.Tuple;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public class ConfiguredParserBoltTest extends BaseConfiguredBoltTest {
 
@@ -62,7 +65,7 @@
     }
   }
 
-  @Before
+  @BeforeEach
   public void setupConfiguration() throws Exception {
     TestingServer testZkServer = new TestingServer(true);
     this.zookeeperUrl = testZkServer.getConnectString();
@@ -84,11 +87,9 @@
   public void test() throws Exception {
     ParserConfigurations sampleConfigurations = new ParserConfigurations();
     UnitTestHelper.setLog4jLevel(ConfiguredBolt.class, Level.FATAL);
-    try {
-      StandAloneConfiguredParserBolt configuredBolt = new StandAloneConfiguredParserBolt(null);
-      configuredBolt.prepare(new HashMap(), topologyContext, outputCollector);
-      Assert.fail("A valid zookeeper url must be supplied");
-    } catch (RuntimeException e){}
+    StandAloneConfiguredParserBolt configuredBoltNullZk = new ConfiguredParserBoltTest.StandAloneConfiguredParserBolt(null);
+    assertThrows(RuntimeException.class, () -> configuredBoltNullZk.prepare(new HashMap(), topologyContext, outputCollector),
+        "A valid zookeeper url must be supplied");
     UnitTestHelper.setLog4jLevel(ConfiguredBolt.class, Level.ERROR);
 
     configsUpdated = new HashSet<>();
@@ -101,20 +102,20 @@
     StandAloneConfiguredParserBolt configuredBolt = new StandAloneConfiguredParserBolt(zookeeperUrl);
     configuredBolt.prepare(new HashMap(), topologyContext, outputCollector);
     waitForConfigUpdate(parserConfigurationTypes);
-    Assert.assertEquals(sampleConfigurations, configuredBolt.getConfigurations());
+    assertEquals(sampleConfigurations, configuredBolt.getConfigurations());
 
     configsUpdated = new HashSet<>();
     Map<String, Object> sampleGlobalConfig = sampleConfigurations.getGlobalConfig();
     sampleGlobalConfig.put("newGlobalField", "newGlobalValue");
     ConfigurationsUtils.writeGlobalConfigToZookeeper(sampleGlobalConfig, zookeeperUrl);
     waitForConfigUpdate(ConfigurationType.GLOBAL.getTypeName());
-    Assert.assertEquals("Add global config field", sampleConfigurations.getGlobalConfig(), configuredBolt.getConfigurations().getGlobalConfig());
+    assertEquals(sampleConfigurations.getGlobalConfig(), configuredBolt.getConfigurations().getGlobalConfig(), "Add global config field");
 
     configsUpdated = new HashSet<>();
     sampleGlobalConfig.remove("newGlobalField");
     ConfigurationsUtils.writeGlobalConfigToZookeeper(sampleGlobalConfig, zookeeperUrl);
     waitForConfigUpdate(ConfigurationType.GLOBAL.getTypeName());
-    Assert.assertEquals("Remove global config field", sampleConfigurations, configuredBolt.getConfigurations());
+    assertEquals(sampleConfigurations, configuredBolt.getConfigurations(), "Remove global config field");
 
     configsUpdated = new HashSet<>();
     String sensorType = "testSensorConfig";
@@ -152,9 +153,9 @@
           System.out.println(r);
         }
       }
-      Assert.assertEquals("Add new sensor config", sampleConfigurations, configuredBoltConfigs);
+      assertEquals(sampleConfigurations, configuredBoltConfigs, "Add new sensor config");
     }
-    Assert.assertEquals("Add new sensor config", sampleConfigurations, configuredBoltConfigs);
+    assertEquals(sampleConfigurations, configuredBoltConfigs, "Add new sensor config");
     configuredBolt.cleanup();
   }
 }
diff --git a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/message/MessageGettersTest.java b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/message/MessageGettersTest.java
index aa3c0a0..e094735 100644
--- a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/message/MessageGettersTest.java
+++ b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/message/MessageGettersTest.java
@@ -19,20 +19,15 @@
 
 import org.apache.storm.tuple.Tuple;
 import org.json.simple.JSONObject;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Test;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 public class MessageGettersTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   @Test
   public void bytesFromPositionShouldReturnBytes() {
     Tuple tuple = mock(Tuple.class);
@@ -55,13 +50,11 @@
 
   @Test
   public void jsonFromPositionShouldThrowException() {
-    exception.expect(IllegalStateException.class);
-
     Tuple tuple = mock(Tuple.class);
     when(tuple.getBinary(1)).thenReturn("{\"field\":".getBytes(UTF_8));
 
     MessageGetStrategy messageGetStrategy = MessageGetters.JSON_FROM_POSITION.get("1");
-    messageGetStrategy.get(tuple);
+    assertThrows(IllegalStateException.class, () -> messageGetStrategy.get(tuple));
   }
 
   @Test
diff --git a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/message/metadata/RawMessageUtilTest.java b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/message/metadata/RawMessageUtilTest.java
index 4abbcc0..8d57966 100644
--- a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/message/metadata/RawMessageUtilTest.java
+++ b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/message/metadata/RawMessageUtilTest.java
@@ -18,31 +18,31 @@
 package org.apache.metron.storm.common.message.metadata;
 
 import com.google.common.collect.ImmutableMap;
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.message.metadata.EnvelopedRawMessageStrategy;
+import org.apache.metron.common.message.metadata.MetadataUtil;
 import org.apache.metron.common.message.metadata.RawMessage;
 import org.apache.metron.common.message.metadata.RawMessageStrategies;
 import org.apache.storm.tuple.Fields;
 import org.apache.storm.tuple.Tuple;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import org.apache.metron.common.message.metadata.MetadataUtil;
+import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.mockito.Matchers.eq;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 public class RawMessageUtilTest {
 
-  private static Tuple createTuple(Map<String, Object> kafkaFields, String metadata) throws Exception {
+  private static Tuple createTuple(Map<String, Object> kafkaFields, String metadata) {
     List<Map.Entry<String, Object>> fields = new ArrayList<>();
     for(Map.Entry<String, Object> kv : kafkaFields.entrySet()) {
       fields.add(kv);
@@ -65,23 +65,23 @@
 
   private void checkKafkaMetadata(RawMessage m, boolean isEmpty) {
     if(!isEmpty) {
-      Assert.assertEquals("kafka_meta_1_val", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".kafka_meta_1"));
-      Assert.assertEquals("kafka_meta_2_val", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".kafka_meta_2"));
+      assertEquals("kafka_meta_1_val", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".kafka_meta_1"));
+      assertEquals("kafka_meta_2_val", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".kafka_meta_2"));
     }
     else {
-      Assert.assertFalse(m.getMetadata().containsKey(MetadataUtil.METADATA_PREFIX + ".kafka_meta_1"));
-      Assert.assertFalse(m.getMetadata().containsKey(MetadataUtil.METADATA_PREFIX + ".kafka_meta_2"));
+      assertFalse(m.getMetadata().containsKey(MetadataUtil.METADATA_PREFIX + ".kafka_meta_1"));
+      assertFalse(m.getMetadata().containsKey(MetadataUtil.METADATA_PREFIX + ".kafka_meta_2"));
     }
   }
 
   private void checkAppMetadata(RawMessage m, boolean isEmpty) {
     if(!isEmpty) {
-      Assert.assertEquals("app_meta_1_val", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".app_meta_1"));
-      Assert.assertEquals("app_meta_2_val", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".app_meta_2"));
+      assertEquals("app_meta_1_val", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".app_meta_1"));
+      assertEquals("app_meta_2_val", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".app_meta_2"));
     }
     else {
-      Assert.assertFalse(m.getMetadata().containsKey(MetadataUtil.METADATA_PREFIX + ".app_meta_1"));
-      Assert.assertFalse(m.getMetadata().containsKey(MetadataUtil.METADATA_PREFIX + ".app_meta_2"));
+      assertFalse(m.getMetadata().containsKey(MetadataUtil.METADATA_PREFIX + ".app_meta_1"));
+      assertFalse(m.getMetadata().containsKey(MetadataUtil.METADATA_PREFIX + ".app_meta_2"));
     }
   }
 
@@ -97,76 +97,76 @@
   public static String appMetadata;
 
   @Test
-  public void testDefaultStrategy_withKafkaMetadata_withAppMetadata() throws Exception {
+  public void testDefaultStrategy_withKafkaMetadata_withAppMetadata() {
     Tuple t = createTuple( kafkaMetadata
                          , appMetadata);
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage(RawMessageStrategies.DEFAULT, t, "raw_message".getBytes(
           StandardCharsets.UTF_8), true, new HashMap<>());
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
       checkKafkaMetadata(m, false);
       checkAppMetadata(m, false);
     }
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage(RawMessageStrategies.DEFAULT, t, "raw_message".getBytes(
           StandardCharsets.UTF_8), false, new HashMap<>());
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertTrue(m.getMetadata().isEmpty());
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertTrue(m.getMetadata().isEmpty());
     }
   }
 
   @Test
-  public void testDefaultStrategy_withKafkaMetadata_withoutAppMetadata() throws Exception {
+  public void testDefaultStrategy_withKafkaMetadata_withoutAppMetadata() {
     Tuple t = createTuple(kafkaMetadata
                          ,"{}");
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage(RawMessageStrategies.DEFAULT, t, "raw_message".getBytes(
           StandardCharsets.UTF_8), true, new HashMap<>());
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
       checkKafkaMetadata(m, false);
       checkAppMetadata(m, true);
     }
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage(RawMessageStrategies.DEFAULT, t, "raw_message".getBytes(
           StandardCharsets.UTF_8), false, new HashMap<>());
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertTrue(m.getMetadata().isEmpty());
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertTrue(m.getMetadata().isEmpty());
     }
   }
 
   @Test
-  public void testDefaultStrategy_withoutKafkaMetadata_withAppMetadata() throws Exception {
+  public void testDefaultStrategy_withoutKafkaMetadata_withAppMetadata() {
     Tuple t = createTuple(new HashMap<>() ,appMetadata);
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage(RawMessageStrategies.DEFAULT, t, "raw_message".getBytes(
           StandardCharsets.UTF_8), true, new HashMap<>());
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
       checkKafkaMetadata(m, true);
       checkAppMetadata(m, false);
     }
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage(RawMessageStrategies.DEFAULT, t, "raw_message".getBytes(
           StandardCharsets.UTF_8), false, new HashMap<>());
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertTrue(m.getMetadata().isEmpty());
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertTrue(m.getMetadata().isEmpty());
     }
   }
 
   @Test
-  public void testDefaultStrategy_withoutKafkaMetadata_withoutAppMetadata() throws Exception {
+  public void testDefaultStrategy_withoutKafkaMetadata_withoutAppMetadata() {
     Tuple t = createTuple(new HashMap<>() , "{}");
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage(RawMessageStrategies.DEFAULT, t, "raw_message".getBytes(
           StandardCharsets.UTF_8), true, new HashMap<>());
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
       checkKafkaMetadata(m, true);
       checkAppMetadata(m, true);
     }
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage(RawMessageStrategies.DEFAULT, t, "raw_message".getBytes(
           StandardCharsets.UTF_8), false, new HashMap<>());
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertTrue(m.getMetadata().isEmpty());
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertTrue(m.getMetadata().isEmpty());
     }
   }
 
@@ -187,30 +187,30 @@
   }};
 
   private void checkEnvelopeMetadata(RawMessage m) {
-    Assert.assertEquals("real_original_string", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + "." + Constants.Fields.ORIGINAL.getName()));
-    Assert.assertEquals("enveloped_metadata_val_1", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".enveloped_metadata_field_1"));
-    Assert.assertEquals("enveloped_metadata_val_2", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".enveloped_metadata_field_2"));
+    assertEquals("real_original_string", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + "." + Constants.Fields.ORIGINAL.getName()));
+    assertEquals("enveloped_metadata_val_1", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".enveloped_metadata_field_1"));
+    assertEquals("enveloped_metadata_val_2", m.getMetadata().get(MetadataUtil.METADATA_PREFIX + ".enveloped_metadata_field_2"));
   }
 
   private void checkMergedData(RawMessage m) {
     JSONObject message = new JSONObject(envelopedMessage);
     RawMessageStrategies.ENVELOPE.mergeMetadata(message, m.getMetadata(), true, new HashMap<String, Object>() {});
     if(m.getMetadata().containsKey(MetadataUtil.METADATA_PREFIX + "." +Constants.Fields.ORIGINAL.getName())) {
-      Assert.assertEquals(m.getMetadata().get(MetadataUtil.METADATA_PREFIX + "." + Constants.Fields.ORIGINAL.getName()), message.get(Constants.Fields.ORIGINAL.getName()));
+      assertEquals(m.getMetadata().get(MetadataUtil.METADATA_PREFIX + "." + Constants.Fields.ORIGINAL.getName()), message.get(Constants.Fields.ORIGINAL.getName()));
     }
-    Assert.assertEquals("message_val1", message.get("message_field1"));
+    assertEquals("message_val1", message.get("message_field1"));
   }
 
   @Test
-  public void testEnvelopeStrategy_withKafkaMetadata_withAppMetadata() throws Exception {
+  public void testEnvelopeStrategy_withKafkaMetadata_withAppMetadata() {
     Tuple t = createTuple( kafkaMetadata
                          , appMetadata);
     Map<String, Object> config = ImmutableMap.of(EnvelopedRawMessageStrategy.MESSAGE_FIELD_CONFIG, "data");
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage( RawMessageStrategies.ENVELOPE, t, envelopedData.getBytes(
           StandardCharsets.UTF_8), true, config);
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertFalse(m.getMetadata().containsKey("data"));
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertFalse(m.getMetadata().containsKey("data"));
       checkEnvelopeMetadata(m);
       checkMergedData(m);
       checkKafkaMetadata(m, false);
@@ -221,22 +221,22 @@
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage( RawMessageStrategies.ENVELOPE, t, envelopedData.getBytes(
           StandardCharsets.UTF_8), false, config);
       checkMergedData(m);
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertFalse(m.getMetadata().containsKey("data"));
-      Assert.assertTrue(m.getMetadata().isEmpty());
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertFalse(m.getMetadata().containsKey("data"));
+      assertTrue(m.getMetadata().isEmpty());
     }
   }
 
   @Test
-  public void testEnvelopeStrategy_withKafkaMetadata_withoutAppMetadata() throws Exception {
+  public void testEnvelopeStrategy_withKafkaMetadata_withoutAppMetadata() {
     Tuple t = createTuple(kafkaMetadata
                          ,"{}");
     Map<String, Object> config = ImmutableMap.of(EnvelopedRawMessageStrategy.MESSAGE_FIELD_CONFIG, "data");
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage( RawMessageStrategies.ENVELOPE, t, envelopedData.getBytes(
           StandardCharsets.UTF_8), true, config);
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertFalse(m.getMetadata().containsKey("data"));
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertFalse(m.getMetadata().containsKey("data"));
       checkMergedData(m);
       checkEnvelopeMetadata(m);
       checkKafkaMetadata(m, false);
@@ -245,23 +245,23 @@
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage( RawMessageStrategies.ENVELOPE, t, envelopedData.getBytes(
           StandardCharsets.UTF_8), false, config);
-      Assert.assertFalse(m.getMetadata().containsKey("data"));
+      assertFalse(m.getMetadata().containsKey("data"));
       checkMergedData(m);
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertTrue(m.getMetadata().isEmpty());
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertTrue(m.getMetadata().isEmpty());
     }
   }
 
   @Test
-  public void testEnvelopeStrategy_withoutKafkaMetadata_withAppMetadata() throws Exception {
+  public void testEnvelopeStrategy_withoutKafkaMetadata_withAppMetadata() {
     Tuple t = createTuple(new HashMap<>() ,appMetadata);
     Map<String, Object> config = ImmutableMap.of(EnvelopedRawMessageStrategy.MESSAGE_FIELD_CONFIG, "data");
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage( RawMessageStrategies.ENVELOPE, t, envelopedData.getBytes(
           StandardCharsets.UTF_8), true, config);
-      Assert.assertFalse(m.getMetadata().containsKey("data"));
+      assertFalse(m.getMetadata().containsKey("data"));
       checkMergedData(m);
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
       checkEnvelopeMetadata(m);
       checkKafkaMetadata(m, true);
       checkAppMetadata(m, false);
@@ -269,23 +269,23 @@
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage( RawMessageStrategies.ENVELOPE, t, envelopedData.getBytes(
           StandardCharsets.UTF_8), false, config);
-      Assert.assertFalse(m.getMetadata().containsKey("data"));
+      assertFalse(m.getMetadata().containsKey("data"));
       checkMergedData(m);
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertTrue(m.getMetadata().isEmpty());
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertTrue(m.getMetadata().isEmpty());
     }
   }
 
   @Test
-  public void testEnvelopeStrategy_withoutKafkaMetadata_withoutAppMetadata() throws Exception {
+  public void testEnvelopeStrategy_withoutKafkaMetadata_withoutAppMetadata() {
     Tuple t = createTuple(new HashMap<>() , "{}");
     Map<String, Object> config = ImmutableMap.of(EnvelopedRawMessageStrategy.MESSAGE_FIELD_CONFIG, "data");
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage( RawMessageStrategies.ENVELOPE, t, envelopedData.getBytes(
           StandardCharsets.UTF_8), true, config);
-      Assert.assertFalse(m.getMetadata().containsKey("data"));
+      assertFalse(m.getMetadata().containsKey("data"));
       checkMergedData(m);
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
       checkEnvelopeMetadata(m);
       checkKafkaMetadata(m, true);
       checkAppMetadata(m, true);
@@ -293,10 +293,10 @@
     {
       RawMessage m = RawMessageUtil.INSTANCE.getRawMessage( RawMessageStrategies.ENVELOPE, t, envelopedData.getBytes(
           StandardCharsets.UTF_8), false, config);
-      Assert.assertFalse(m.getMetadata().containsKey("data"));
+      assertFalse(m.getMetadata().containsKey("data"));
       checkMergedData(m);
-      Assert.assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
-      Assert.assertTrue(m.getMetadata().isEmpty());
+      assertEquals("raw_message", new String(m.getMessage(), StandardCharsets.UTF_8));
+      assertTrue(m.getMetadata().isEmpty());
     }
   }
 
diff --git a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/utils/ErrorUtilsTest.java b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/utils/ErrorUtilsTest.java
index 7d0694e..89d0821 100644
--- a/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/utils/ErrorUtilsTest.java
+++ b/metron-platform/metron-common-streaming/metron-common-storm/src/test/java/org/apache/metron/storm/common/utils/ErrorUtilsTest.java
@@ -17,23 +17,24 @@
  */
 package org.apache.metron.storm.common.utils;
 
-import org.apache.metron.common.Constants;
-import org.apache.metron.common.error.MetronError;
-import org.apache.metron.test.error.MetronErrorJSONMatcher;
-import org.apache.storm.task.OutputCollector;
-import org.junit.Test;
-
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
+
+import org.apache.metron.common.Constants;
+import org.apache.metron.common.error.MetronError;
+import org.apache.metron.test.error.MetronErrorJSONMatcher;
+import org.apache.storm.task.OutputCollector;
+import org.junit.jupiter.api.Test;
+
 public class ErrorUtilsTest {
 
   @Test
-  public void handleErrorShouldEmitAndReportError() throws Exception {
+  public void handleErrorShouldEmitAndReportError() {
     Throwable e = new Exception("error");
     MetronError error = new MetronError().withMessage("error message").withThrowable(e);
     OutputCollector collector = mock(OutputCollector.class);
diff --git a/metron-platform/metron-common/pom.xml b/metron-platform/metron-common/pom.xml
index 7ecbabb..fd1ee32 100644
--- a/metron-platform/metron-common/pom.xml
+++ b/metron-platform/metron-common/pom.xml
@@ -324,6 +324,24 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-core</artifactId>
+            <version>${global_hamcrest_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-migrationsupport</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/AggregatorsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/AggregatorsTest.java
index e599e62..51c4da3 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/AggregatorsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/AggregatorsTest.java
@@ -21,46 +21,47 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.apache.metron.common.aggregator.Aggregators;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class AggregatorsTest {
   @Test
   public void testMax() {
-    Assert.assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MAX.aggregate(ImmutableList.of(1, 5, -1, 7), new HashMap<>()), 1e-7);
-    Assert.assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MAX.aggregate(ImmutableList.of(1, 5, -1, -2), new HashMap<>()), 1e-7);
-    Assert.assertEquals(7d, Aggregators.MAX.aggregate(ImmutableList.of(1, 5, -1, 7, 0), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
+    assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MAX.aggregate(ImmutableList.of(1, 5, -1, 7), new HashMap<>()), 1e-7);
+    assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MAX.aggregate(ImmutableList.of(1, 5, -1, -2), new HashMap<>()), 1e-7);
+    assertEquals(7d, Aggregators.MAX.aggregate(ImmutableList.of(1, 5, -1, 7, 0), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
   }
 
   @Test
   public void testMin() {
-    Assert.assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MIN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), new HashMap<>()), 1e-7);
-    Assert.assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MIN.aggregate(ImmutableList.of(1, 5, -1, -2, 0), new HashMap<>()), 1e-7);
-    Assert.assertEquals(-1d, Aggregators.MIN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
+    assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MIN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), new HashMap<>()), 1e-7);
+    assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MIN.aggregate(ImmutableList.of(1, 5, -1, -2, 0), new HashMap<>()), 1e-7);
+    assertEquals(-1d, Aggregators.MIN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
   }
 
   @Test
   public void testMinAllPositive() {
-    Assert.assertEquals(1, Aggregators.MIN.aggregate(ImmutableList.of(1, 5, 7), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
+    assertEquals(1, Aggregators.MIN.aggregate(ImmutableList.of(1, 5, 7), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
   }
 
   @Test
   public void testMean() {
-    Assert.assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MEAN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), new HashMap<>()), 1e-7);
-    Assert.assertEquals(12.0/5.0, Aggregators.MEAN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
+    assertEquals(Double.NEGATIVE_INFINITY, Aggregators.MEAN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), new HashMap<>()), 1e-7);
+    assertEquals(12.0/5.0, Aggregators.MEAN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
   }
 
   @Test
   public void testPositiveMean() {
-    Assert.assertEquals(Double.NEGATIVE_INFINITY, Aggregators.POSITIVE_MEAN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), new HashMap<>()), 1e-7);
-    Assert.assertEquals(13.0/3.0, Aggregators.POSITIVE_MEAN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
+    assertEquals(Double.NEGATIVE_INFINITY, Aggregators.POSITIVE_MEAN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), new HashMap<>()), 1e-7);
+    assertEquals(13.0/3.0, Aggregators.POSITIVE_MEAN.aggregate(ImmutableList.of(1, 5, -1, 7, 0), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
   }
 
   @Test
   public void testSum() {
-    Assert.assertEquals(Double.NEGATIVE_INFINITY, Aggregators.SUM.aggregate(ImmutableList.of(1, 5, -1, 7), new HashMap<>()), 1e-7);
-    Assert.assertEquals(1 + 5 + -1 + 7, Aggregators.SUM.aggregate(ImmutableList.of(1, 5, -1, 7), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
+    assertEquals(Double.NEGATIVE_INFINITY, Aggregators.SUM.aggregate(ImmutableList.of(1, 5, -1, 7), new HashMap<>()), 1e-7);
+    assertEquals(1 + 5 + -1 + 7, Aggregators.SUM.aggregate(ImmutableList.of(1, 5, -1, 7), ImmutableMap.of(Aggregators.NEGATIVE_VALUES_TRUMP_CONF, "false")), 1e-7);
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/cli/ConfigurationManagerIntegrationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/cli/ConfigurationManagerIntegrationTest.java
index 3c9470b..ced3cb6 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/cli/ConfigurationManagerIntegrationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/cli/ConfigurationManagerIntegrationTest.java
@@ -26,7 +26,12 @@
 import static org.apache.metron.common.configuration.ConfigurationType.PROFILER;
 import static org.apache.metron.common.utils.StringUtils.stripLines;
 import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.fail;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 
 import com.google.common.base.Splitter;
 import com.google.common.collect.Collections2;
@@ -56,10 +61,9 @@
 import org.apache.metron.common.configuration.ConfigurationsUtils;
 import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.integration.utils.TestUtils;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public class ConfigurationManagerIntegrationTest {
   private TestingServer testZkServer;
@@ -89,7 +93,7 @@
     }
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     testZkServer = new TestingServer(true);
     zookeeperUrl = testZkServer.getConnectString();
@@ -144,12 +148,12 @@
 
   private void validateConfigsOnDisk(File configDir) throws IOException {
     File globalConfigFile = new File(configDir, "global.json");
-    Assert.assertTrue("Global config does not exist", globalConfigFile.exists());
+    assertTrue(globalConfigFile.exists(), "Global config does not exist");
     validateConfig("global", GLOBAL, new String(Files.readAllBytes(Paths.get(globalConfigFile.toURI())),
         StandardCharsets.UTF_8));
     for(String sensor : sensors) {
       File sensorFile = new File(configDir, ENRICHMENT.getDirectory() + "/" + sensor + ".json");
-      Assert.assertTrue(sensor + " config does not exist", sensorFile.exists());
+      assertTrue(sensorFile.exists(), sensor + " config does not exist");
       validateConfig(sensor, ENRICHMENT, new String(Files.readAllBytes(Paths.get(sensorFile.toURI())),
           StandardCharsets.UTF_8));
     }
@@ -160,25 +164,19 @@
     cleanDir(new File(outDir));
     pullConfigs(false);
     validateConfigsOnDisk(new File(outDir));
-    try {
-      //second time without force should
-      pullConfigs(false);
-      fail("Should have failed to pull configs in a directory structure that already exists.");
 
-    } catch(IllegalStateException t) {
-      //make sure we didn't bork anything
-      validateConfigsOnDisk(new File(outDir));
-    }
+    //second time without force should error
+    assertThrows(IllegalStateException.class, () -> pullConfigs(false), "Should have failed to pull configs in a directory structure that already exists.");
+
+    //make sure we didn't bork anything
+    validateConfigsOnDisk(new File(outDir));
+
     pullConfigs(true);
     validateConfigsOnDisk(new File(outDir));
   }
 
   private void validateConfig(String name, ConfigurationType type, String data) {
-      try {
-        type.deserialize(data);
-      } catch (Exception e) {
-        fail("Unable to load config " + name + ": " + data);
-      }
+        assertDoesNotThrow(() -> type.deserialize(data), "Unable to load config " + name + ": " + data);
   }
 
   @Test
@@ -193,7 +191,7 @@
     ConfigurationsUtils.visitConfigs(client, new ConfigurationsUtils.ConfigurationVisitor() {
       @Override
       public void visit(ConfigurationType configurationType, String name, String data) {
-        Assert.assertTrue(data.length() > 0);
+        assertTrue(data.length() > 0);
         validateConfig(name, configurationType, data);
         if(configurationType == GLOBAL) {
           validateConfig(name, configurationType, data);
@@ -204,11 +202,11 @@
         }
       }
     });
-    Assert.assertEquals(true, foundGlobal.get());
-    Assert.assertEquals(sensorsInZookeeper, sensors);
+    assertTrue(foundGlobal.get());
+    assertEquals(sensorsInZookeeper, sensors);
   }
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testPushAllWithBadConfig() throws Exception {
 
     // create a bad global config
@@ -219,9 +217,8 @@
     File squidConfigFile = new File(parsersDir, "squid.json");
     TestUtils.write(squidConfigFile, badParserConfig);
 
-    pushAllConfigs(configDir.getAbsolutePath());
-
     // exception expected as the global and parser config is invalid
+    assertThrows(RuntimeException.class, () -> pushAllConfigs(configDir.getAbsolutePath()));
   }
 
   /**
@@ -243,7 +240,7 @@
     // validate
     byte[] expected = JSONUtils.INSTANCE.toJSONPretty(globalConfig);
     byte[] actual = JSONUtils.INSTANCE.toJSONPretty(stripLines(dumpConfigs(GLOBAL), 1));
-    Assert.assertThat(actual, equalTo(expected));
+    assertThat(actual, equalTo(expected));
   }
 
   /**
@@ -252,7 +249,7 @@
   @Multiline
   private static String badGlobalConfig;
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testPushGlobalWithBadConfig() throws Exception {
 
     // create the config
@@ -260,9 +257,8 @@
     TestUtils.write(configFile, badGlobalConfig);
 
     // push the global config
-    pushConfigs(GLOBAL, configDir);
-
     // exception expected as the global config is invalid
+    assertThrows(RuntimeException.class, () -> pushConfigs(GLOBAL, configDir));
   }
 
   private void pushConfigs(ConfigurationType type, File configPath) throws Exception {
@@ -357,7 +353,7 @@
     // validate
     byte[] expected = JSONUtils.INSTANCE.toJSONPretty(squidParserConfig);
     byte[] actual = JSONUtils.INSTANCE.toJSONPretty(stripLines(dumpConfigs(PARSER, Optional.of("myparser")), 1));
-    Assert.assertThat(actual, equalTo(expected));
+    assertThat(actual, equalTo(expected));
   }
 
   /**
@@ -369,7 +365,7 @@
   @Multiline
   private static String badParserConfig;
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testPushParserWithBadConfig() throws Exception {
 
     // create a parser config
@@ -377,9 +373,8 @@
     TestUtils.write(configFile, badParserConfig);
 
     // push the parser config
-    pushConfigs(PARSER, configDir, Optional.of("badparser"));
-
     // exception expected as the parser config is invalid
+    assertThrows(RuntimeException.class, () -> pushConfigs(PARSER, configDir, Optional.of("badparser")));
   }
 
   /**
@@ -417,7 +412,7 @@
     // validate
     byte[] expected = JSONUtils.INSTANCE.toJSONPretty(someEnrichmentConfig);
     byte[] actual = JSONUtils.INSTANCE.toJSONPretty(stripLines(dumpConfigs(ENRICHMENT, Optional.of("myenrichment")), 1));
-    Assert.assertThat(actual, equalTo(expected));
+    assertThat(actual, equalTo(expected));
   }
 
   /**
@@ -436,7 +431,7 @@
   @Multiline
   private static String badEnrichmentConfig;
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testPushEnrichmentWithBadConfig() throws Exception {
 
     // create enrichment config
@@ -444,9 +439,8 @@
     TestUtils.write(configFile, badEnrichmentConfig);
 
     // push enrichment config
-    pushConfigs(ENRICHMENT, configDir, Optional.of("badenrichment"));
-
     // exception expected as the enrichment config is invalid
+    assertThrows(RuntimeException.class, () -> pushConfigs(ENRICHMENT, configDir, Optional.of("badenrichment")));
   }
 
   /**
@@ -484,7 +478,7 @@
     // validate
     byte[] expected = JSONUtils.INSTANCE.toJSONPretty(someIndexingConfig);
     byte[] actual = JSONUtils.INSTANCE.toJSONPretty(stripLines(dumpConfigs(INDEXING, Optional.of("myindex")), 1));
-    Assert.assertThat(actual, equalTo(expected));
+    assertThat(actual, equalTo(expected));
   }
 
   /**
@@ -495,7 +489,7 @@
   @Multiline
   private static String badIndexingConfig;
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testPushIndexingWithBadConfig() throws Exception {
 
     // write the indexing config
@@ -503,9 +497,8 @@
     TestUtils.write(configFile, badIndexingConfig);
 
     // push the index config
-    pushConfigs(INDEXING, configDir, Optional.of("myindex"));
-
     // exception expected as the indexing config is invalid
+    assertThrows(RuntimeException.class, () -> pushConfigs(INDEXING, configDir, Optional.of("myindex")));
   }
 
   /**
@@ -539,7 +532,7 @@
     // validate
     byte[] expected = JSONUtils.INSTANCE.toJSONPretty(someProfilerConfig);
     byte[] actual = JSONUtils.INSTANCE.toJSONPretty(stripLines(dumpConfigs(PROFILER, configName), 1));
-    Assert.assertThat(actual, equalTo(expected));
+    assertThat(actual, equalTo(expected));
   }
 
   /**
@@ -554,7 +547,7 @@
   @Multiline
   private static String badProfilerConfig;
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testPushProfilerWithBadConfig() throws Exception {
 
     // write the indexing config
@@ -562,10 +555,9 @@
     TestUtils.write(configFile, badProfilerConfig);
 
     // push the index config
-    Optional<String> configName = Optional.empty();
-    pushConfigs(PROFILER, configDir, configName);
-
     // exception expected as the profiler config is invalid
+    Optional<String> configName = Optional.empty();
+    assertThrows(RuntimeException.class, () -> pushConfigs(PROFILER, configDir, configName));
   }
 
   /**
@@ -598,7 +590,7 @@
     // validate the patch
     byte[] expected = JSONUtils.INSTANCE.toJSONPretty(expectedSomeConfig);
     byte[] actual = JSONUtils.INSTANCE.toJSONPretty(stripLines(dumpConfigs(GLOBAL, Optional.of("global")), 1));
-    Assert.assertThat(actual, equalTo(expected));
+    assertThat(actual, equalTo(expected));
   }
 
   private void patchConfigs(ConfigurationType type, Optional<File> patchPath,
@@ -678,7 +670,7 @@
     // validate the patch
     byte[] expected = JSONUtils.INSTANCE.toJSONPretty(expectedPatchedParser);
     byte[] actual = JSONUtils.INSTANCE.toJSONPretty(stripLines(dumpConfigs(PARSER, Optional.of("myparser")), 1));
-    Assert.assertThat(actual, equalTo(expected));
+    assertThat(actual, equalTo(expected));
   }
 
   @Test
@@ -695,7 +687,7 @@
     // validate the patch
     byte[] expected = JSONUtils.INSTANCE.toJSONPretty(expectedPatchedParser);
     byte[] actual = JSONUtils.INSTANCE.toJSONPretty(stripLines(dumpConfigs(PARSER, Optional.of("myparser")), 1));
-    Assert.assertThat(actual, equalTo(expected));
+    assertThat(actual, equalTo(expected));
   }
 
   /**
@@ -710,7 +702,7 @@
   @Multiline
   public static String badParserPatch;
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testPatchParserWithBadConfig() throws Exception {
 
     // create a patch file that when applied makes the parser config invalid
@@ -723,7 +715,16 @@
     pushConfigs(PARSER, configDir, Optional.of("myparser"));
 
     // patch the configuration
-    patchConfigs(PARSER, Optional.of(patchFile), Optional.of("myparser"), Optional.empty(), Optional.empty(), Optional.empty());
+    assertThrows(
+        RuntimeException.class,
+        () ->
+            patchConfigs(
+                PARSER,
+                Optional.of(patchFile),
+                Optional.of("myparser"),
+                Optional.empty(),
+                Optional.empty(),
+                Optional.empty()));
   }
 
   /**
@@ -753,7 +754,7 @@
     // validate the patch
     byte[] expected = JSONUtils.INSTANCE.toJSONPretty(expectedComplexConfig);
     byte[] actual = JSONUtils.INSTANCE.toJSONPretty(stripLines(dumpConfigs(GLOBAL, Optional.of("global")), 1));
-    Assert.assertThat(actual, equalTo(expected));
+    assertThat(actual, equalTo(expected));
   }
 
   /**
@@ -768,7 +769,7 @@
   @Multiline
   public static String badProfilerPatch;
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testPatchProfilerWithBadConfig() throws Exception {
 
     // create a patch file that when applied makes the profiler config invalid
@@ -783,11 +784,20 @@
     pushConfigs(PROFILER, configDir, Optional.empty());
 
     // patch the profiler config
-    patchConfigs(PROFILER, Optional.of(patchFile), Optional.empty(), Optional.empty(), Optional.empty(), Optional.empty());
+    assertThrows(
+        RuntimeException.class,
+        () ->
+            patchConfigs(
+                PROFILER,
+                Optional.of(patchFile),
+                Optional.empty(),
+                Optional.empty(),
+                Optional.empty(),
+                Optional.empty()));
   }
 
 
-  @After
+  @AfterEach
   public void tearDown() throws IOException {
     client.close();
     testZkServer.close();
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigOptionTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigOptionTest.java
index 95db080..042388a 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigOptionTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigOptionTest.java
@@ -18,21 +18,22 @@
 
 package org.apache.metron.common.configuration;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.BiFunction;
-import org.junit.Before;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 /**
  * Test the default interface methods
  */
 public class ConfigOptionTest {
 
-  @Before
+  @BeforeEach
   public void setup() {
   }
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationTest.java
index 04d7e79..e45e7f2 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationTest.java
@@ -17,20 +17,19 @@
  */
 package org.apache.metron.common.configuration;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.api.ExistsBuilder;
 import org.apache.curator.framework.api.GetChildrenBuilder;
 import org.apache.curator.framework.api.GetDataBuilder;
-import org.apache.metron.common.Constants;
 import org.json.simple.JSONObject;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Paths;
 import java.util.Collections;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.anyString;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -60,7 +59,7 @@
         when(curatorFramework.checkExists()).thenReturn(existsBuilder);
         when(curatorFramework.getData()).thenReturn(getDataBuilder);
         when(curatorFramework.getChildren()).thenReturn(getChildrenBuilder);
-        when(getChildrenBuilder.forPath(anyString())).thenReturn(Collections.<String> emptyList());
+        when(getChildrenBuilder.forPath(any())).thenReturn(Collections.emptyList());
 
         Configuration configuration = new Configuration(Paths.get("foo"));
         configuration.curatorFramework = curatorFramework;
@@ -80,12 +79,9 @@
 
 
     private void checkResult( Configuration configuration ){
-
-        assertEquals("File contains 1 entry: ",1,configuration.getGlobalConfig().size());
+        assertEquals(1, configuration.getGlobalConfig().size(), "File contains 1 entry: ");
         String testValue = configuration.getGlobalConfig().get(TEST_PROPERTY).toString();
-        assertEquals(TEST_PROPERTY + " should be \"" + TEST_VALUE + "\"",TEST_VALUE,testValue);
-
-
+        assertEquals(TEST_VALUE, testValue, TEST_PROPERTY + " should be \"" + TEST_VALUE + "\"");
     }
 }
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationsTest.java
index 992f0a7..a3ecb16 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationsTest.java
@@ -19,21 +19,20 @@
 
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
-import org.junit.Test;
-import org.junit.Assert;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class ConfigurationsTest {
 
   @Test
   public void test() throws IOException {
     EqualsVerifier.forClass(Configurations.class).suppress(Warning.NONFINAL_FIELDS, Warning.NULL_FIELDS).usingGetClass().verify();
     Configurations configurations = new Configurations();
-    try {
-      configurations.updateGlobalConfig((byte[]) null);
-      Assert.fail("Updating a config with null should throw an IllegalStateException");
-    } catch(IllegalStateException e) {}
-    Assert.assertTrue(configurations.toString() != null && configurations.toString().length() > 0);
+    IllegalStateException e = assertThrows(IllegalStateException.class, () -> configurations.updateGlobalConfig((byte[]) null), "Updating a config with null should throw an IllegalStateException");
+    assertTrue(configurations.toString() != null && configurations.toString().length() > 0);
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationsUtilsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationsUtilsTest.java
index 9379285..6d9e7a3 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationsUtilsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ConfigurationsUtilsTest.java
@@ -18,24 +18,25 @@
 
 package org.apache.metron.common.configuration;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.curator.framework.CuratorFramework;
+import org.apache.curator.test.TestingServer;
+import org.apache.metron.TestConstants;
+import org.apache.metron.common.utils.JSONUtils;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.curator.framework.CuratorFramework;
-import org.apache.curator.test.TestingServer;
-import org.apache.metron.TestConstants;
-import org.apache.metron.common.utils.JSONUtils;
-import org.junit.After;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class ConfigurationsUtilsTest {
 
@@ -46,7 +47,7 @@
   private Map<String, byte[]> expectedSensorParserConfigMap;
   private Map<String, byte[]> expectedSensorEnrichmentConfigMap;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     testZkServer = new TestingServer(true);
     zookeeperUrl = testZkServer.getConnectString();
@@ -59,23 +60,23 @@
 
   @Test
   public void test() throws Exception {
-    Assert.assertTrue(expectedGlobalConfig.length > 0);
+    assertTrue(expectedGlobalConfig.length > 0);
     ConfigurationsUtils.writeGlobalConfigToZookeeper(expectedGlobalConfig, zookeeperUrl);
     byte[] actualGlobalConfigBytes = ConfigurationsUtils.readGlobalConfigBytesFromZookeeper(client);
-    Assert.assertTrue(Arrays.equals(expectedGlobalConfig, actualGlobalConfigBytes));
+    assertArrayEquals(expectedGlobalConfig, actualGlobalConfigBytes);
 
-    Assert.assertTrue(expectedSensorParserConfigMap.size() > 0);
+    assertTrue(expectedSensorParserConfigMap.size() > 0);
     String testSensorType = "yaf";
     byte[] expectedSensorParserConfigBytes = expectedSensorParserConfigMap.get(testSensorType);
     ConfigurationsUtils.writeSensorParserConfigToZookeeper(testSensorType, expectedSensorParserConfigBytes, zookeeperUrl);
     byte[] actualSensorParserConfigBytes = ConfigurationsUtils.readSensorParserConfigBytesFromZookeeper(testSensorType, client);
-    Assert.assertTrue(Arrays.equals(expectedSensorParserConfigBytes, actualSensorParserConfigBytes));
+    assertArrayEquals(expectedSensorParserConfigBytes, actualSensorParserConfigBytes);
 
-    Assert.assertTrue(expectedSensorEnrichmentConfigMap.size() > 0);
+    assertTrue(expectedSensorEnrichmentConfigMap.size() > 0);
     byte[] expectedSensorEnrichmentConfigBytes = expectedSensorEnrichmentConfigMap.get(testSensorType);
     ConfigurationsUtils.writeSensorEnrichmentConfigToZookeeper(testSensorType, expectedSensorEnrichmentConfigBytes, zookeeperUrl);
     byte[] actualSensorEnrichmentConfigBytes = ConfigurationsUtils.readSensorEnrichmentConfigBytesFromZookeeper(testSensorType, client);
-    Assert.assertTrue(Arrays.equals(expectedSensorEnrichmentConfigBytes, actualSensorEnrichmentConfigBytes));
+    assertArrayEquals(expectedSensorEnrichmentConfigBytes, actualSensorEnrichmentConfigBytes);
 
     String name = "testConfig";
     Map<String, Object> testConfig = new HashMap<>();
@@ -84,7 +85,7 @@
     testConfig.put("doubleField", 1.1);
     ConfigurationsUtils.writeConfigToZookeeper(name, testConfig, zookeeperUrl);
     byte[] readConfigBytes = ConfigurationsUtils.readConfigBytesFromZookeeper(name, client);
-    Assert.assertTrue(Arrays.equals(JSONUtils.INSTANCE.toJSONPretty(testConfig), readConfigBytes));
+    assertArrayEquals(JSONUtils.INSTANCE.toJSONPretty(testConfig), readConfigBytes);
 
   }
 
@@ -213,7 +214,7 @@
     assertThat(actual, equalTo(expected));
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws IOException {
     client.close();
     testZkServer.close();
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/EnrichmentConfigTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/EnrichmentConfigTest.java
index 21937d0..a07738b 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/EnrichmentConfigTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/EnrichmentConfigTest.java
@@ -22,11 +22,13 @@
 import org.apache.metron.common.configuration.enrichment.handler.ConfigHandler;
 import org.apache.metron.common.configuration.enrichment.handler.Configs;
 import org.apache.metron.common.utils.JSONUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class EnrichmentConfigTest {
   /**
    {
@@ -50,9 +52,9 @@
   public void testSerialization() throws Exception
   {
     EnrichmentConfig config = JSONUtils.INSTANCE.load(sourceConfigStr, EnrichmentConfig.class);
-    Assert.assertTrue(config.getFieldMap().get("stellar") instanceof Map);
-    Assert.assertTrue(config.getEnrichmentConfigs().get("stellar") instanceof ConfigHandler);
-    Assert.assertEquals(Configs.STELLAR, ((ConfigHandler)config.getEnrichmentConfigs().get("stellar")).getType());
+    assertTrue(config.getFieldMap().get("stellar") instanceof Map);
+    assertTrue(config.getEnrichmentConfigs().get("stellar") instanceof ConfigHandler);
+    assertEquals(Configs.STELLAR, ((ConfigHandler)config.getEnrichmentConfigs().get("stellar")).getType());
   }
 
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/IndexingConfigurationsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/IndexingConfigurationsTest.java
index f561423..0ac8b3e 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/IndexingConfigurationsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/IndexingConfigurationsTest.java
@@ -19,14 +19,14 @@
 package org.apache.metron.common.configuration;
 
 import org.adrianwalker.multilinestring.Multiline;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class IndexingConfigurationsTest {
 
@@ -50,7 +50,7 @@
 
   private IndexingConfigurations configurations;
 
-  @Before
+  @BeforeEach
   public void setup() {
     configurations = new IndexingConfigurations();
   }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ParserConfigurationsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ParserConfigurationsTest.java
index 77e9699..139e75a 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ParserConfigurationsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/ParserConfigurationsTest.java
@@ -18,17 +18,16 @@
 
 package org.apache.metron.common.configuration;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.not;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertThat;
+import org.adrianwalker.multilinestring.Multiline;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
 import java.util.HashMap;
-import org.adrianwalker.multilinestring.Multiline;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.*;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class ParserConfigurationsTest {
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorEnrichmentConfigTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorEnrichmentConfigTest.java
index a17f8d6..678712f 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorEnrichmentConfigTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorEnrichmentConfigTest.java
@@ -17,23 +17,19 @@
  */
 package org.apache.metron.common.configuration;
 
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
 import nl.jqno.equalsverifier.EqualsVerifier;
 import nl.jqno.equalsverifier.Warning;
 import org.apache.commons.io.IOUtils;
 import org.apache.metron.TestConstants;
 import org.apache.metron.common.configuration.enrichment.SensorEnrichmentConfig;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
+import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class SensorEnrichmentConfigTest {
 
   @Test
@@ -42,8 +38,8 @@
     Map<String, byte[]> testSensorConfigMap = ConfigurationsUtils.readSensorEnrichmentConfigsFromFile(TestConstants.ENRICHMENTS_CONFIGS_PATH);
     byte[] sensorConfigBytes = testSensorConfigMap.get("yaf");
     SensorEnrichmentConfig sensorEnrichmentConfig = SensorEnrichmentConfig.fromBytes(sensorConfigBytes);
-    Assert.assertNotNull(sensorEnrichmentConfig);
-    Assert.assertTrue(sensorEnrichmentConfig.toString() != null && sensorEnrichmentConfig.toString().length() > 0);
+    assertNotNull(sensorEnrichmentConfig);
+    assertTrue(sensorEnrichmentConfig.toString() != null && sensorEnrichmentConfig.toString().length() > 0);
   }
 
   @Test
@@ -56,7 +52,7 @@
       }
       SensorEnrichmentConfig config2 = SensorEnrichmentConfig.fromBytes(config.toJSON().getBytes(
           StandardCharsets.UTF_8));
-      Assert.assertEquals(config2, config);
+      assertEquals(config2, config);
     }
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorEnrichmentUpdateConfigTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorEnrichmentUpdateConfigTest.java
index 65ec920..7ed515c 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorEnrichmentUpdateConfigTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorEnrichmentUpdateConfigTest.java
@@ -19,16 +19,17 @@
 
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.Constants;
-import org.apache.metron.common.configuration.enrichment.SensorEnrichmentUpdateConfig;
 import org.apache.metron.common.configuration.enrichment.SensorEnrichmentConfig;
+import org.apache.metron.common.configuration.enrichment.SensorEnrichmentUpdateConfig;
 import org.apache.metron.common.utils.JSONUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class SensorEnrichmentUpdateConfigTest {
   /**
    {
@@ -100,47 +101,96 @@
       }
     };
     SensorEnrichmentUpdateConfig.updateSensorConfigs(scHandler, threatIntelConfig.getSensorToFieldList());
-    Assert.assertNotNull(finalEnrichmentConfig.get("bro"));
-    Assert.assertNotSame(finalEnrichmentConfig.get("bro"), broSc);
-    Assert.assertEquals( finalEnrichmentConfig.get("bro").toJSON()
-                       , ((List<String>)finalEnrichmentConfig.get("bro").getThreatIntel().getFieldMap().get(Constants.SIMPLE_HBASE_THREAT_INTEL)).size()
+    assertNotNull(finalEnrichmentConfig.get("bro"));
+    assertNotSame(finalEnrichmentConfig.get("bro"), broSc);
+    assertEquals(
+        ((List<String>)
+                finalEnrichmentConfig
+                    .get("bro")
+                    .getThreatIntel()
+                    .getFieldMap()
+                    .get(Constants.SIMPLE_HBASE_THREAT_INTEL))
+            .size(),
+        2,
+        finalEnrichmentConfig.get("bro").toJSON());
+    assertEquals(1, finalEnrichmentConfig.get("bro").getThreatIntel().getTriageConfig().getRiskLevelRules().size());
+    assertTrue(
+        ((List<String>)
+                finalEnrichmentConfig
+                    .get("bro")
+                    .getThreatIntel()
+                    .getFieldMap()
+                    .get(Constants.SIMPLE_HBASE_THREAT_INTEL))
+            .contains("ip_src_addr"),
+        finalEnrichmentConfig.get("bro").toJSON());
+    assertTrue(
+        ((List<String>)
+                finalEnrichmentConfig
+                    .get("bro")
+                    .getThreatIntel()
+                    .getFieldMap()
+                    .get(Constants.SIMPLE_HBASE_THREAT_INTEL))
+            .contains("ip_dst_addr"),
+        finalEnrichmentConfig.get("bro").toJSON());
+    assertEquals(finalEnrichmentConfig.get("bro").getThreatIntel().getFieldToTypeMap().keySet().size()
                        , 2
-                       );
-    Assert.assertEquals(1, finalEnrichmentConfig.get("bro").getThreatIntel().getTriageConfig().getRiskLevelRules().size());
-    Assert.assertTrue( finalEnrichmentConfig.get("bro").toJSON()
-                       , ((List<String>)finalEnrichmentConfig.get("bro").getThreatIntel().getFieldMap()
-                                  .get(Constants.SIMPLE_HBASE_THREAT_INTEL))
-                                  .contains("ip_src_addr")
-                       );
-    Assert.assertTrue( finalEnrichmentConfig.get("bro").toJSON()
-                       , ((List<String>)finalEnrichmentConfig.get("bro").getThreatIntel().getFieldMap()
-                                  .get(Constants.SIMPLE_HBASE_THREAT_INTEL))
-                                  .contains("ip_dst_addr")
-                       );
-    Assert.assertEquals( finalEnrichmentConfig.get("bro").toJSON()
-                       , finalEnrichmentConfig.get("bro").getThreatIntel().getFieldToTypeMap().keySet().size()
-                       , 2
-                       );
-    Assert.assertEquals( finalEnrichmentConfig.get("bro").toJSON()
-                       , ((List<String>)(finalEnrichmentConfig.get("bro").getThreatIntel().getFieldToTypeMap().get("ip_src_addr"))).size()
-                       , 2
-                       );
-    Assert.assertTrue( finalEnrichmentConfig.get("bro").toJSON()
-                       , ((List<String>)(finalEnrichmentConfig.get("bro").getThreatIntel().getFieldToTypeMap().get("ip_src_addr"))).contains("playful")
-                       );
-    Assert.assertTrue( finalEnrichmentConfig.get("bro").toJSON()
-                       , ((List<String>)(finalEnrichmentConfig.get("bro").getThreatIntel().getFieldToTypeMap().get("ip_src_addr"))).contains("malicious_ip")
-                       );
-    Assert.assertEquals( finalEnrichmentConfig.get("bro").toJSON()
-                       , ((List<String>)(finalEnrichmentConfig.get("bro").getThreatIntel().getFieldToTypeMap().get("ip_dst_addr"))).size()
-                       , 2
-                       );
-    Assert.assertTrue( finalEnrichmentConfig.get("bro").toJSON()
-                       , ((List<String>)(finalEnrichmentConfig.get("bro").getThreatIntel().getFieldToTypeMap().get("ip_dst_addr"))).contains("playful")
-                       );
-    Assert.assertTrue( finalEnrichmentConfig.get("bro").toJSON()
-                       , ((List<String>)(finalEnrichmentConfig.get("bro").getThreatIntel().getFieldToTypeMap().get("ip_dst_addr"))).contains("malicious_ip")
-                       );
+                       , finalEnrichmentConfig.get("bro").toJSON());
+    assertEquals(
+        ((List<String>)
+                (finalEnrichmentConfig
+                    .get("bro")
+                    .getThreatIntel()
+                    .getFieldToTypeMap()
+                    .get("ip_src_addr")))
+            .size(),
+        2,
+        finalEnrichmentConfig.get("bro").toJSON());
+    assertTrue(
+        ((List<String>)
+                (finalEnrichmentConfig
+                    .get("bro")
+                    .getThreatIntel()
+                    .getFieldToTypeMap()
+                    .get("ip_src_addr")))
+            .contains("playful"),
+        finalEnrichmentConfig.get("bro").toJSON());
+    assertTrue(
+        ((List<String>)
+                (finalEnrichmentConfig
+                    .get("bro")
+                    .getThreatIntel()
+                    .getFieldToTypeMap()
+                    .get("ip_src_addr")))
+            .contains("malicious_ip"),
+        finalEnrichmentConfig.get("bro").toJSON());
+    assertEquals(
+        ((List<String>)
+                (finalEnrichmentConfig
+                    .get("bro")
+                    .getThreatIntel()
+                    .getFieldToTypeMap()
+                    .get("ip_dst_addr")))
+            .size(),
+        2,
+        finalEnrichmentConfig.get("bro").toJSON());
+    assertTrue(
+        ((List<String>)
+                (finalEnrichmentConfig
+                    .get("bro")
+                    .getThreatIntel()
+                    .getFieldToTypeMap()
+                    .get("ip_dst_addr")))
+            .contains("playful"),
+        finalEnrichmentConfig.get("bro").toJSON());
+    assertTrue(
+        ((List<String>)
+                (finalEnrichmentConfig
+                    .get("bro")
+                    .getThreatIntel()
+                    .getFieldToTypeMap()
+                    .get("ip_dst_addr")))
+            .contains("malicious_ip"),
+        finalEnrichmentConfig.get("bro").toJSON());
   }
 
   /**
@@ -183,41 +233,63 @@
       }
     };
     SensorEnrichmentUpdateConfig.updateSensorConfigs(scHandler, config.getSensorToFieldList());
-    Assert.assertNotNull(outputScs.get("bro"));
-    Assert.assertNotSame(outputScs.get("bro"), broSc);
-    Assert.assertEquals( outputScs.get("bro").toJSON()
-                       , ((List<String>)outputScs.get("bro").getEnrichment().getFieldMap().get(Constants.SIMPLE_HBASE_ENRICHMENT)).size()
-                       , 2
-                       );
-    Assert.assertTrue( outputScs.get("bro").toJSON()
-                       , ((List<String>)outputScs.get("bro").getEnrichment().getFieldMap()
-                                  .get(Constants.SIMPLE_HBASE_ENRICHMENT))
-                                  .contains("ip_src_addr")
-                       );
-    Assert.assertTrue( outputScs.get("bro").toJSON()
-                       , ((List<String>)outputScs.get("bro").getEnrichment().getFieldMap()
-                                  .get(Constants.SIMPLE_HBASE_ENRICHMENT))
-                                  .contains("ip_dst_addr")
-                       );
-    Assert.assertEquals( outputScs.get("bro").toJSON()
-                       , outputScs.get("bro").getEnrichment().getFieldToTypeMap().keySet().size()
-                       , 2
-                       );
-    Assert.assertEquals( outputScs.get("bro").toJSON()
-                       , ((List<String>)(outputScs.get("bro").getEnrichment().getFieldToTypeMap().get("ip_src_addr"))).size()
-                       , 1
-                       );
-    Assert.assertEquals( outputScs.get("bro").toJSON()
-                       , ((List<String>)(outputScs.get("bro").getEnrichment().getFieldToTypeMap().get("ip_src_addr"))).get(0)
-                       , "playful"
-                       );
-    Assert.assertEquals( outputScs.get("bro").toJSON()
-                       , ((List<String>)(outputScs.get("bro").getEnrichment().getFieldToTypeMap().get("ip_dst_addr"))).size()
-                       , 1
-                       );
-    Assert.assertEquals( outputScs.get("bro").toJSON()
-                       , ((List<String>)(outputScs.get("bro").getEnrichment().getFieldToTypeMap().get("ip_dst_addr"))).get(0)
-                       , "playful"
-                       );
+    assertNotNull(outputScs.get("bro"));
+    assertNotSame(outputScs.get("bro"), broSc);
+    assertEquals(
+        ((List<String>)
+                outputScs
+                    .get("bro")
+                    .getEnrichment()
+                    .getFieldMap()
+                    .get(Constants.SIMPLE_HBASE_ENRICHMENT))
+            .size(),
+        2,
+        outputScs.get("bro").toJSON());
+    assertTrue(
+        ((List<String>)
+                outputScs
+                    .get("bro")
+                    .getEnrichment()
+                    .getFieldMap()
+                    .get(Constants.SIMPLE_HBASE_ENRICHMENT))
+            .contains("ip_src_addr"),
+        outputScs.get("bro").toJSON());
+    assertTrue(
+        ((List<String>)
+                outputScs
+                    .get("bro")
+                    .getEnrichment()
+                    .getFieldMap()
+                    .get(Constants.SIMPLE_HBASE_ENRICHMENT))
+            .contains("ip_dst_addr"),
+        outputScs.get("bro").toJSON());
+    assertEquals(
+        outputScs.get("bro").getEnrichment().getFieldToTypeMap().keySet().size(),
+        2,
+        outputScs.get("bro").toJSON());
+    assertEquals(
+        ((List<String>)
+                (outputScs.get("bro").getEnrichment().getFieldToTypeMap().get("ip_src_addr")))
+            .size(),
+        1,
+        outputScs.get("bro").toJSON());
+    assertEquals(
+        ((List<String>)
+                (outputScs.get("bro").getEnrichment().getFieldToTypeMap().get("ip_src_addr")))
+            .get(0),
+        "playful",
+        outputScs.get("bro").toJSON());
+    assertEquals(
+        ((List<String>)
+                (outputScs.get("bro").getEnrichment().getFieldToTypeMap().get("ip_dst_addr")))
+            .size(),
+        1,
+        outputScs.get("bro").toJSON());
+    assertEquals(
+        ((List<String>)
+                (outputScs.get("bro").getEnrichment().getFieldToTypeMap().get("ip_dst_addr")))
+            .get(0),
+        "playful",
+        outputScs.get("bro").toJSON());
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorParserConfigTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorParserConfigTest.java
index ea477fc..59f28bd 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorParserConfigTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/SensorParserConfigTest.java
@@ -17,13 +17,14 @@
  */
 package org.apache.metron.common.configuration;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.commons.io.IOUtils;
 import org.apache.metron.TestConstants;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.*;
+import java.nio.charset.StandardCharsets;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class SensorParserConfigTest {
 
@@ -37,7 +38,7 @@
       }
       SensorParserConfig config2 = SensorParserConfig.fromBytes(config.toJSON().getBytes(
           StandardCharsets.UTF_8));
-      Assert.assertEquals(config2, config);
+      assertEquals(config2, config);
     }
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/StellarEnrichmentConfigTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/StellarEnrichmentConfigTest.java
index 32fb00e..08d8eea 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/StellarEnrichmentConfigTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/StellarEnrichmentConfigTest.java
@@ -26,13 +26,14 @@
 import org.apache.metron.common.configuration.enrichment.handler.Configs;
 import org.apache.metron.common.utils.JSONUtils;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class StellarEnrichmentConfigTest extends StellarEnrichmentTest {
 
   /**
@@ -60,15 +61,15 @@
   public void testSplitter_listWithTemporaryVariables() throws IOException {
     JSONObject message = new JSONObject(ImmutableMap.of("domain_without_subdomains", "yahoo.com"));
     EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(conf, EnrichmentConfig.class);
-    Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+    assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
     ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
     List<JSONObject> splits = Configs.STELLAR.splitByFields(message, null, x -> null, handler );
-    Assert.assertEquals(1, splits.size());
+    assertEquals(1, splits.size());
     Map<String, Object> split = (Map<String, Object>)(splits.get(0)).get("");
-    Assert.assertEquals("yahoo.com", split.get("domain_without_subdomains"));
-    Assert.assertTrue(split.containsKey("dga_result"));
-    Assert.assertTrue(split.containsKey("dga_model_endpoint"));
-    Assert.assertTrue(split.containsKey("dga_result_map"));
+    assertEquals("yahoo.com", split.get("domain_without_subdomains"));
+    assertTrue(split.containsKey("dga_result"));
+    assertTrue(split.containsKey("dga_model_endpoint"));
+    assertTrue(split.containsKey("dga_result_map"));
   }
 
   @Test
@@ -76,15 +77,15 @@
     JSONObject message = getMessage();
     for(String c : DEFAULT_CONFIGS) {
       EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(c, EnrichmentConfig.class);
-      Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+      assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
       ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
       List<JSONObject> splits = Configs.STELLAR.splitByFields(message, null, x -> null, handler );
-      Assert.assertEquals(1, splits.size());
+      assertEquals(1, splits.size());
       Map<String, Object> split = (Map<String, Object>) splits.get(0).get("");
-      Assert.assertEquals(3, split.size());
-      Assert.assertEquals("stellar_test", split.get("source.type"));
-      Assert.assertEquals("foo", split.get("string"));
-      Assert.assertNull(split.get("stmt1"));
+      assertEquals(3, split.size());
+      assertEquals("stellar_test", split.get("source.type"));
+      assertEquals("foo", split.get("string"));
+      assertNull(split.get("stmt1"));
     }
   }
 
@@ -92,11 +93,11 @@
   public void testGetSubgroups_default() throws IOException {
     for(String c : DEFAULT_CONFIGS) {
       EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(c, EnrichmentConfig.class);
-      Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+      assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
       ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
       List<String> subgroups = Configs.STELLAR.getSubgroups(handler);
-      Assert.assertEquals("", subgroups.get(0));
-      Assert.assertEquals(1, subgroups.size());
+      assertEquals("", subgroups.get(0));
+      assertEquals(1, subgroups.size());
     }
   }
 
@@ -105,20 +106,20 @@
     JSONObject message = getMessage();
     for(String c : GROUPED_CONFIGS) {
       EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(c, EnrichmentConfig.class);
-      Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+      assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
       ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
       List<JSONObject> splits = Configs.STELLAR.splitByFields(message, null, x -> null, handler );
-      Assert.assertEquals(2, splits.size());
+      assertEquals(2, splits.size());
       {
         Map<String, Object> split = (Map<String, Object>) splits.get(0).get("group1");
-        Assert.assertEquals(2, split.size());
-        Assert.assertEquals("stellar_test", split.get("source.type"));
-        Assert.assertNull(split.get("stmt1"));
+        assertEquals(2, split.size());
+        assertEquals("stellar_test", split.get("source.type"));
+        assertNull(split.get("stmt1"));
       }
       {
         Map<String, Object> split = (Map<String, Object>) splits.get(1).get("group2");
-        Assert.assertEquals(1, split.size());
-        Assert.assertEquals("foo", split.get("string"));
+        assertEquals(1, split.size());
+        assertEquals("foo", split.get("string"));
       }
     }
   }
@@ -127,12 +128,12 @@
   public void testGetSubgroups_grouped() throws IOException {
     for(String c : GROUPED_CONFIGS) {
       EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(c, EnrichmentConfig.class);
-      Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+      assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
       ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
       List<String> subgroups = Configs.STELLAR.getSubgroups(handler);
-      Assert.assertEquals("group1", subgroups.get(0));
-      Assert.assertEquals("group2", subgroups.get(1));
-      Assert.assertEquals(2, subgroups.size());
+      assertEquals("group1", subgroups.get(0));
+      assertEquals("group2", subgroups.get(1));
+      assertEquals(2, subgroups.size());
     }
   }
 
@@ -142,25 +143,25 @@
     JSONObject message = getMessage();
     for(String c : Iterables.concat(MIXED_CONFIGS, ImmutableList.of(tempVarStellarConfig_list))) {
       EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(c, EnrichmentConfig.class);
-      Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+      assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
       ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
       List<JSONObject> splits = Configs.STELLAR.splitByFields(message, null, x -> null, handler );
-      Assert.assertEquals(3, splits.size());
+      assertEquals(3, splits.size());
       {
         Map<String, Object> split = (Map<String, Object>) splits.get(0).get("group1");
-        Assert.assertEquals(2, split.size());
-        Assert.assertEquals("stellar_test", split.get("source.type"));
-        Assert.assertNull(split.get("stmt1"));
+        assertEquals(2, split.size());
+        assertEquals("stellar_test", split.get("source.type"));
+        assertNull(split.get("stmt1"));
       }
       {
         Map<String, Object> split = (Map<String, Object>) splits.get(1).get("group2");
-        Assert.assertEquals(1, split.size());
-        Assert.assertEquals("foo", split.get("string"));
+        assertEquals(1, split.size());
+        assertEquals("foo", split.get("string"));
       }
       {
         Map<String, Object> split = (Map<String, Object>) splits.get(2).get("");
-        Assert.assertEquals(1, split.size());
-        Assert.assertEquals("stellar_test", split.get("source.type"));
+        assertEquals(1, split.size());
+        assertEquals("stellar_test", split.get("source.type"));
       }
     }
   }
@@ -169,13 +170,13 @@
   public void testGetSubgroups_mixed() throws IOException {
     for(String c : MIXED_CONFIGS) {
       EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(c, EnrichmentConfig.class);
-      Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+      assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
       ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
       List<String> subgroups = Configs.STELLAR.getSubgroups(handler);
-      Assert.assertEquals("group1", subgroups.get(0));
-      Assert.assertEquals("group2", subgroups.get(1));
-      Assert.assertEquals("", subgroups.get(2));
-      Assert.assertEquals(3, subgroups.size());
+      assertEquals("group1", subgroups.get(0));
+      assertEquals("group2", subgroups.get(1));
+      assertEquals("", subgroups.get(2));
+      assertEquals(3, subgroups.size());
     }
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/enrichment/threatintel/ThreatTriageConfigTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/enrichment/threatintel/ThreatTriageConfigTest.java
index 9b54430..26a4e8a 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/enrichment/threatintel/ThreatTriageConfigTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/enrichment/threatintel/ThreatTriageConfigTest.java
@@ -20,13 +20,13 @@
 
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.configuration.enrichment.SensorEnrichmentConfig;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.List;
 
 import static org.apache.metron.common.configuration.ConfigurationType.ENRICHMENT;
-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;
 
 
 public class ThreatTriageConfigTest {
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/profiler/ProfileConfigTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/profiler/ProfileConfigTest.java
index 87dbbc4..17e73f5 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/profiler/ProfileConfigTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/profiler/ProfileConfigTest.java
@@ -21,11 +21,12 @@
 
 import com.fasterxml.jackson.databind.JsonMappingException;
 import org.adrianwalker.multilinestring.Multiline;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 /**
  * Tests the {@link ProfileConfig} class.
@@ -85,9 +86,9 @@
   /**
    * The 'name' of the profile must be defined.
    */
-  @Test(expected = JsonMappingException.class)
-  public void testFromJSONWithNameMissing() throws IOException {
-    ProfileConfig.fromJSON(nameMissing);
+  @Test
+  public void testFromJSONWithNameMissing() {
+    assertThrows(JsonMappingException.class, () -> ProfileConfig.fromJSON(nameMissing));
   }
 
   /**
@@ -103,9 +104,9 @@
   /**
    * The 'foreach' field must be defined.
    */
-  @Test(expected = JsonMappingException.class)
-  public void testFromJSONWithForeachMissing() throws IOException {
-    ProfileConfig.fromJSON(foreachMissing);
+  @Test
+  public void testFromJSONWithForeachMissing() {
+    assertThrows(JsonMappingException.class, () -> ProfileConfig.fromJSON(foreachMissing));
   }
 
   /**
@@ -121,9 +122,9 @@
   /**
    * The 'result' field must be defined.
    */
-  @Test(expected = JsonMappingException.class)
-  public void testFromJSONWithResultMissing() throws IOException {
-    ProfileConfig.fromJSON(resultMissing);
+  @Test
+  public void testFromJSONWithResultMissing() {
+    assertThrows(JsonMappingException.class, () -> ProfileConfig.fromJSON(resultMissing));
   }
 
   /**
@@ -140,9 +141,9 @@
   /**
    * The 'result' field must contain the 'profile' expression used to store the profile measurement.
    */
-  @Test(expected = JsonMappingException.class)
-  public void testFromJSONWithResultMissingProfileExpression() throws IOException {
-    ProfileConfig.fromJSON(resultMissingProfileExpression);
+  @Test
+  public void testFromJSONWithResultMissingProfileExpression() {
+    assertThrows(JsonMappingException.class, () -> ProfileConfig.fromJSON(resultMissingProfileExpression));
   }
 
   /**
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/profiler/ProfilerConfigTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/profiler/ProfilerConfigTest.java
index f3b7c58..5ac5761 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/profiler/ProfilerConfigTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/profiler/ProfilerConfigTest.java
@@ -23,7 +23,7 @@
 import com.esotericsoftware.kryo.io.Input;
 import com.esotericsoftware.kryo.io.Output;
 import org.adrianwalker.multilinestring.Multiline;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -31,10 +31,10 @@
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Tests the {@link ProfilerConfig} class.
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ConfigurationsStrategiesTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ConfigurationsStrategiesTest.java
index fd498ba..6b71755 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ConfigurationsStrategiesTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ConfigurationsStrategiesTest.java
@@ -18,28 +18,21 @@
 
 package org.apache.metron.common.configuration.writer;
 
-import static org.apache.metron.common.configuration.writer.ConfigurationsStrategies.ENRICHMENT;
-import static org.apache.metron.common.configuration.writer.ConfigurationsStrategies.INDEXING;
-import static org.apache.metron.common.configuration.writer.ConfigurationsStrategies.PARSERS;
-import static org.apache.metron.common.configuration.writer.ConfigurationsStrategies.PROFILER;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertThat;
-
 import org.apache.metron.common.configuration.EnrichmentConfigurations;
 import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.configuration.ParserConfigurations;
 import org.apache.metron.common.configuration.profiler.ProfilerConfigurations;
 import org.apache.metron.common.writer.BulkMessageWriter;
-import org.apache.metron.common.zookeeper.configurations.EnrichmentUpdater;
-import org.apache.metron.common.zookeeper.configurations.IndexingUpdater;
-import org.apache.metron.common.zookeeper.configurations.ParserUpdater;
-import org.apache.metron.common.zookeeper.configurations.ProfilerUpdater;
-import org.apache.metron.common.zookeeper.configurations.Reloadable;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.metron.common.zookeeper.configurations.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import static org.apache.metron.common.configuration.writer.ConfigurationsStrategies.*;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
+
 public class ConfigurationsStrategiesTest {
 
   @Mock
@@ -47,7 +40,7 @@
   @Mock
   private Reloadable reloadable;
 
-  @Before
+  @BeforeEach
   public void setup() {
     MockitoAnnotations.initMocks(this);
   }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/EnrichmentWriterConfigurationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/EnrichmentWriterConfigurationTest.java
index 8e9e17b..7875b1b 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/EnrichmentWriterConfigurationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/EnrichmentWriterConfigurationTest.java
@@ -18,15 +18,16 @@
 
 package org.apache.metron.common.configuration.writer;
 
-import static java.util.Arrays.asList;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.common.configuration.EnrichmentConfigurations;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.common.configuration.EnrichmentConfigurations;
-import org.junit.Test;
+
+import static java.util.Arrays.asList;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class EnrichmentWriterConfigurationTest {
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/IndexingWriterConfigurationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/IndexingWriterConfigurationTest.java
index b2b5eca..da4b203 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/IndexingWriterConfigurationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/IndexingWriterConfigurationTest.java
@@ -19,9 +19,7 @@
 package org.apache.metron.common.configuration.writer;
 
 import org.apache.metron.common.configuration.IndexingConfigurations;
-import org.apache.metron.common.configuration.writer.IndexingWriterConfiguration;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
@@ -29,6 +27,7 @@
 
 import static org.apache.metron.test.bolt.BaseEnrichmentBoltTest.sampleSensorIndexingConfigPath;
 import static org.apache.metron.test.bolt.BaseEnrichmentBoltTest.sensorType;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class IndexingWriterConfigurationTest {
   @Test
@@ -36,14 +35,14 @@
     IndexingWriterConfiguration config = new IndexingWriterConfiguration("hdfs",
            new IndexingConfigurations()
     );
-    Assert.assertEquals(1, config.getBatchSize("foo"));
+    assertEquals(1, config.getBatchSize("foo"));
   }
   @Test
   public void testDefaultBatchTimeout() {
     IndexingWriterConfiguration config = new IndexingWriterConfiguration("hdfs",
            new IndexingConfigurations()
     );
-    Assert.assertEquals(0, config.getBatchTimeout("foo"));
+    assertEquals(0, config.getBatchTimeout("foo"));
   }
   @Test
   public void testGetAllConfiguredTimeouts() throws FileNotFoundException, IOException {
@@ -51,20 +50,20 @@
     IndexingWriterConfiguration config = new IndexingWriterConfiguration("hdfs",
             new IndexingConfigurations()
     );
-    Assert.assertEquals(0, config.getAllConfiguredTimeouts().size());
+    assertEquals(0, config.getAllConfiguredTimeouts().size());
     //non-default
     IndexingConfigurations iconfigs = new IndexingConfigurations();
     iconfigs.updateSensorIndexingConfig(
             sensorType, new FileInputStream(sampleSensorIndexingConfigPath));
     config = new IndexingWriterConfiguration("elasticsearch", iconfigs);
-    Assert.assertEquals(1, config.getAllConfiguredTimeouts().size());
-    Assert.assertEquals(7, (long)config.getAllConfiguredTimeouts().get(0));
+    assertEquals(1, config.getAllConfiguredTimeouts().size());
+    assertEquals(7, (long)config.getAllConfiguredTimeouts().get(0));
   }
   @Test
   public void testDefaultIndex() {
     IndexingWriterConfiguration config = new IndexingWriterConfiguration("hdfs",
            new IndexingConfigurations()
     );
-    Assert.assertEquals("foo", config.getIndex("foo"));
+    assertEquals("foo", config.getIndex("foo"));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ParserWriterConfigurationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ParserWriterConfigurationTest.java
index 47fde10..2753e0a 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ParserWriterConfigurationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ParserWriterConfigurationTest.java
@@ -18,28 +18,29 @@
 
 package org.apache.metron.common.configuration.writer;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.common.configuration.ParserConfigurations;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.common.configuration.ParserConfigurations;
-import org.junit.Assert;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class ParserWriterConfigurationTest {
 
   @Test
   public void testDefaultBatchSize() {
     ParserWriterConfiguration config = new ParserWriterConfiguration( new ParserConfigurations() );
-    Assert.assertEquals(1, config.getBatchSize("foo"));
+    assertEquals(1, config.getBatchSize("foo"));
   }
 
   @Test
   public void testDefaultIndex() {
     ParserWriterConfiguration config = new ParserWriterConfiguration( new ParserConfigurations() );
-    Assert.assertEquals("foo", config.getIndex("foo"));
+    assertEquals("foo", config.getIndex("foo"));
   }
 
   /**
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ProfilerWriterConfigurationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ProfilerWriterConfigurationTest.java
index 244cc6f..7066c85 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ProfilerWriterConfigurationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/configuration/writer/ProfilerWriterConfigurationTest.java
@@ -18,15 +18,16 @@
 
 package org.apache.metron.common.configuration.writer;
 
-import static java.util.Arrays.asList;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.common.configuration.profiler.ProfilerConfigurations;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.common.configuration.profiler.ProfilerConfigurations;
-import org.junit.Test;
+
+import static java.util.Arrays.asList;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class ProfilerWriterConfigurationTest {
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/error/MetronErrorTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/error/MetronErrorTest.java
index 2203ff5..c802290 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/error/MetronErrorTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/error/MetronErrorTest.java
@@ -17,9 +17,9 @@
  */
 package org.apache.metron.common.error;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import com.google.common.collect.Sets;
 import java.net.InetAddress;
@@ -33,15 +33,15 @@
 import org.apache.commons.lang3.StringUtils;
 import org.apache.metron.common.Constants;
 import org.json.simple.JSONObject;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public class MetronErrorTest {
 
   private JSONObject message1 = new JSONObject();
   private JSONObject message2 = new JSONObject();
 
-  @Before
+  @BeforeEach
   public void setup() {
     message1.put("value", "message1");
     message2.put("value", "message2");
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/DeDotFieldNameConverterTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/DeDotFieldNameConverterTest.java
index cc1102f..81156d2 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/DeDotFieldNameConverterTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/DeDotFieldNameConverterTest.java
@@ -18,9 +18,9 @@
 
 package org.apache.metron.common.field;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class DeDotFieldNameConverterTest {
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/FieldNameConvertersTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/FieldNameConvertersTest.java
index baf2932..d60e261 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/FieldNameConvertersTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/FieldNameConvertersTest.java
@@ -23,9 +23,9 @@
 import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.configuration.writer.IndexingWriterConfiguration;
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Test the {@link FieldNameConverters} class.
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/FieldTransformationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/FieldTransformationTest.java
index b7557e8..03ebcf1 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/FieldTransformationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/FieldTransformationTest.java
@@ -28,14 +28,15 @@
 import org.apache.metron.common.configuration.SensorParserConfig;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class FieldTransformationTest {
   public static class TestTransformation implements FieldTransformation {
 
@@ -96,16 +97,16 @@
   @Test
   public void testValidSerde_simple() throws IOException {
     SensorParserConfig c = SensorParserConfig.fromBytes(Bytes.toBytes(config));
-    Assert.assertEquals(1, c.getFieldTransformations().size());
-    Assert.assertEquals(IPProtocolTransformation.class, c.getFieldTransformations().get(0).getFieldTransformation().getClass());
-    Assert.assertEquals(ImmutableList.of("protocol"), c.getFieldTransformations().get(0).getInput());
+    assertEquals(1, c.getFieldTransformations().size());
+    assertEquals(IPProtocolTransformation.class, c.getFieldTransformations().get(0).getFieldTransformation().getClass());
+    assertEquals(ImmutableList.of("protocol"), c.getFieldTransformations().get(0).getInput());
   }
 
 
 
-  @Test(expected = IllegalStateException.class)
-  public void testInValidSerde_missingMapping() throws IOException {
-    SensorParserConfig.fromBytes(Bytes.toBytes(badConfigMissingMapping));
+  @Test
+  public void testInValidSerde_missingMapping() {
+    assertThrows(IllegalStateException.class, () -> SensorParserConfig.fromBytes(Bytes.toBytes(badConfigMissingMapping)));
   }
 
   @Test
@@ -113,8 +114,8 @@
     SensorParserConfig c = SensorParserConfig.fromBytes(Bytes.toBytes(complexConfig));
     FieldTransformer handler = Iterables.getFirst(c.getFieldTransformations(), null);
 
-    Assert.assertNotNull(handler);
-    Assert.assertEquals(ImmutableMap.of("output", "field1=value1,field2=value2")
+    assertNotNull(handler);
+    assertEquals(ImmutableMap.of("output", "field1=value1,field2=value2")
                        ,handler.transform(new JSONObject(ImmutableMap.of("field1", "value1"
                                                                   ,"field2", "value2"
                                                                   )
@@ -129,8 +130,8 @@
     SensorParserConfig c = SensorParserConfig.fromBytes(Bytes.toBytes(config));
     FieldTransformer handler = Iterables.getFirst(c.getFieldTransformations(), null);
 
-    Assert.assertNotNull(handler);
-    Assert.assertEquals(ImmutableMap.of("protocol", "TCP")
+    assertNotNull(handler);
+    assertEquals(ImmutableMap.of("protocol", "TCP")
                        ,handler.transform(new JSONObject(ImmutableMap.of("protocol", 6))
                                          , Context.EMPTY_CONTEXT()
                                          , c.getParserConfig()
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RegexSelectTransformationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RegexSelectTransformationTest.java
index 8d9e935..11c4db4 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RegexSelectTransformationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RegexSelectTransformationTest.java
@@ -25,11 +25,13 @@
 import org.apache.metron.common.configuration.SensorParserConfig;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+
 public class RegexSelectTransformationTest {
   /**
    {
@@ -62,18 +64,18 @@
 
   @Test
   public void smoketest() throws Exception{
-    Assert.assertEquals("option_1", transform("foo", routeSingleInSingleOut));
-    Assert.assertNull(transform("bar", routeSingleInSingleOut));
+    assertEquals("option_1", transform("foo", routeSingleInSingleOut));
+    assertNull(transform("bar", routeSingleInSingleOut));
   }
 
   @Test
   public void testListOfRegexes() throws Exception {
-    Assert.assertEquals("option_2", transform("I am mortron", routeSingleInSingleOut));
-    Assert.assertEquals("option_2", transform("metron is for smelling", routeSingleInSingleOut));
+    assertEquals("option_2", transform("I am mortron", routeSingleInSingleOut));
+    assertEquals("option_2", transform("metron is for smelling", routeSingleInSingleOut));
   }
   @Test
   public void testPrecedence() throws Exception {
-    Assert.assertEquals("option_1", transform("metron is for foorensic cybersecurity", routeSingleInSingleOut));
+    assertEquals("option_1", transform("metron is for foorensic cybersecurity", routeSingleInSingleOut));
   }
 
   /**
@@ -95,7 +97,7 @@
 
   @Test
   public void testMissingInput() throws Exception {
-    Assert.assertNull(transform("metron", routeMissingInput));
+    assertNull(transform("metron", routeMissingInput));
   }
 
   /**
@@ -117,7 +119,7 @@
 
   @Test
   public void testMissingOutput() throws Exception {
-    Assert.assertNull(transform("metron", routeMissingOutput));
+    assertNull(transform("metron", routeMissingOutput));
   }
 
   /**
@@ -140,8 +142,8 @@
 
   @Test
   public void testMultiOutput() throws Exception{
-    Assert.assertEquals("option_1", transform("foo", routeMultiOutput));
-    Assert.assertNull(transform("bar", routeMultiOutput));
+    assertEquals("option_1", transform("foo", routeMultiOutput));
+    assertNull(transform("bar", routeMultiOutput));
   }
 
   /**
@@ -164,6 +166,6 @@
 
   @Test
   public void testBadRegex() throws Exception{
-    Assert.assertEquals("option_2", transform("metron", routeBadRegex));
+    assertEquals("option_2", transform("metron", routeBadRegex));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RemoveTransformationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RemoveTransformationTest.java
index a8e6d71..76a9578 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RemoveTransformationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RemoveTransformationTest.java
@@ -25,11 +25,13 @@
 import org.apache.metron.common.configuration.SensorParserConfig;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class RemoveTransformationTest {
   /**
    {
@@ -52,7 +54,7 @@
       put("field1", "foo");
     }});
     handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
-    Assert.assertFalse(input.containsKey("field1"));
+    assertFalse(input.containsKey("field1"));
   }
 
   /**
@@ -80,8 +82,8 @@
       }});
       handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
       //no removal happened because field2 does not exist
-      Assert.assertTrue(input.containsKey("field1"));
-      Assert.assertFalse(input.containsKey("field2"));
+      assertTrue(input.containsKey("field1"));
+      assertFalse(input.containsKey("field2"));
     }
     {
       JSONObject input = new JSONObject(new HashMap<String, Object>() {{
@@ -90,8 +92,8 @@
       }});
       handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
       //no removal happened because field2 != bar
-      Assert.assertTrue(input.containsKey("field1"));
-      Assert.assertTrue(input.containsKey("field2"));
+      assertTrue(input.containsKey("field1"));
+      assertTrue(input.containsKey("field2"));
     }
     {
       JSONObject input = new JSONObject(new HashMap<String, Object>() {{
@@ -100,8 +102,8 @@
       }});
       //removal of field1 happens because field2 exists and is 'bar'
       handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
-      Assert.assertFalse(input.containsKey("field1"));
-      Assert.assertTrue(input.containsKey("field2"));
+      assertFalse(input.containsKey("field1"));
+      assertTrue(input.containsKey("field2"));
     }
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RenameTransformationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RenameTransformationTest.java
index cacc818..f2f7e45 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RenameTransformationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/RenameTransformationTest.java
@@ -24,11 +24,13 @@
 import org.apache.metron.common.configuration.SensorParserConfig;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
 public class RenameTransformationTest {
   /**
    {
@@ -56,14 +58,14 @@
       }
     }});
     handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
-    Assert.assertEquals("f1", input.get("new_field1"));
-    Assert.assertEquals("f2", input.get("new_field2"));
+    assertEquals("f1", input.get("new_field1"));
+    assertEquals("f2", input.get("new_field2"));
     for(int i = 3;i <= 10;++i) {
-      Assert.assertEquals("f" + i, input.get("old_field" + i));
+      assertEquals("f" + i, input.get("old_field" + i));
     }
-    Assert.assertFalse(input.containsKey("old_field1"));
-    Assert.assertFalse(input.containsKey("old_field2"));
-    Assert.assertEquals(10, input.size());
+    assertFalse(input.containsKey("old_field1"));
+    assertFalse(input.containsKey("old_field2"));
+    assertEquals(10, input.size());
   }
 
   /**
@@ -90,10 +92,10 @@
       }
     }});
     handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
-    Assert.assertFalse(input.containsKey("new_field1"));
+    assertFalse(input.containsKey("new_field1"));
     for(int i = 2;i <= 10;++i) {
-      Assert.assertEquals("f" + i, input.get("old_field" + i));
+      assertEquals("f" + i, input.get("old_field" + i));
     }
-    Assert.assertEquals(9, input.size());
+    assertEquals(9, input.size());
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/SelectTransformationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/SelectTransformationTest.java
index 9219c6b..e2f5552 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/SelectTransformationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/SelectTransformationTest.java
@@ -18,17 +18,17 @@
 
 package org.apache.metron.common.field.transformation;
 
-import java.util.HashMap;
-
+import com.google.common.collect.Iterables;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.metron.common.configuration.FieldTransformer;
 import org.apache.metron.common.configuration.SensorParserConfig;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import com.google.common.collect.Iterables;
+import java.util.HashMap;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class SelectTransformationTest {
 	
@@ -48,9 +48,9 @@
 		});
 		handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
 
-		Assert.assertTrue(input.containsKey("field1"));
-		Assert.assertFalse(input.containsKey("field2"));
-		Assert.assertEquals(1, input.size());
+		assertTrue(input.containsKey("field1"));
+		assertFalse(input.containsKey("field2"));
+		assertEquals(1, input.size());
 	}
 
 	@Test
@@ -66,10 +66,10 @@
 		});
 		handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
 
-		Assert.assertTrue(input.containsKey("field1"));
-		Assert.assertTrue(input.containsKey("field2"));
-		Assert.assertFalse(input.containsKey("field3"));
-		Assert.assertEquals(2, input.size());
+		assertTrue(input.containsKey("field1"));
+		assertTrue(input.containsKey("field2"));
+		assertFalse(input.containsKey("field3"));
+		assertEquals(2, input.size());
 	}
 	
 	@Test
@@ -87,12 +87,12 @@
 		});
 		handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
 		
-		Assert.assertTrue(input.containsKey("timestamp"));
-		Assert.assertTrue(input.containsKey("original_string"));
-		Assert.assertTrue(input.containsKey("source.type"));
-		Assert.assertTrue(input.containsKey("field1"));
-		Assert.assertFalse(input.containsKey("field2"));
-		Assert.assertEquals(4, input.size());
+		assertTrue(input.containsKey("timestamp"));
+		assertTrue(input.containsKey("original_string"));
+		assertTrue(input.containsKey("source.type"));
+		assertTrue(input.containsKey("field1"));
+		assertFalse(input.containsKey("field2"));
+		assertEquals(4, input.size());
 	}
 
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/StellarTransformationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/StellarTransformationTest.java
index 3b7c7bb..66f7d3e 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/StellarTransformationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/transformation/StellarTransformationTest.java
@@ -18,49 +18,23 @@
 
 package org.apache.metron.common.field.transformation;
 
-import com.github.benmanes.caffeine.cache.Cache;
-import com.google.common.collect.ImmutableMap;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+
 import com.google.common.collect.Iterables;
+import java.util.HashMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.metron.common.configuration.FieldTransformer;
 import org.apache.metron.common.configuration.SensorParserConfig;
-import org.apache.metron.stellar.common.CachingStellarProcessor;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.Test;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashMap;
-
-@RunWith(Parameterized.class)
 public class StellarTransformationTest {
-  Context context;
-  public StellarTransformationTest(Cache<CachingStellarProcessor.Key, Object> cache) {
-    if(cache == null) {
-      context = Context.EMPTY_CONTEXT();
-    }
-    else {
-      context = new Context.Builder().with(Context.Capabilities.CACHE, () -> cache).build();
-    }
-  }
-
-  @Parameterized.Parameters
-  public static Collection<Object[]> data() {
-    return Arrays.asList(
-            new Object[][] {
-                     { CachingStellarProcessor.createCache(ImmutableMap.of(CachingStellarProcessor.MAX_CACHE_SIZE_PARAM, 10)) }
-                   , { CachingStellarProcessor.createCache(ImmutableMap.of(CachingStellarProcessor.MAX_CACHE_SIZE_PARAM, 1)) }
-                   , { CachingStellarProcessor.createCache(ImmutableMap.of(CachingStellarProcessor.MAX_CACHE_SIZE_PARAM, 0)) }
-                   , { null }
-                           }
-                        );
-  }
-
   /**
    {
     "fieldTransformations" : [
@@ -89,8 +63,8 @@
                                 ]
       }
    */
- @Multiline
- public static String configAll;
+  @Multiline
+  public static String configAll;
 
   @Test
   public void testConfigAll() throws Exception {
@@ -100,9 +74,9 @@
     for (FieldTransformer handler : c.getFieldTransformations()) {
       handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
     }
-    Assert.assertEquals(2, input.size());
-    Assert.assertTrue(input.containsKey("new_field"));
-    Assert.assertEquals("test", input.get("new_field"));
+    assertEquals(2, input.size());
+    assertTrue(input.containsKey("new_field"));
+    assertEquals("test", input.get("new_field"));
   }
 
   /** { "fieldTransformations" : [
@@ -118,39 +92,39 @@
                                 ]
       }
    */
- @Multiline
- public static String configRename;
+  @Multiline
+  public static String configRename;
 
- @Test
- public void testStellarRename() throws Exception {
+  @Test
+  public void testStellarRename() throws Exception {
 
-   SensorParserConfig c = SensorParserConfig.fromBytes(Bytes.toBytes(configRename));
-   {
-     JSONObject input = new JSONObject();
-     input.put("old_field", "val");
-     input.put("old_field2", "val2");
-     for (FieldTransformer handler : c.getFieldTransformations()) {
-       handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
-     }
-     Assert.assertEquals(2, input.size());
-     Assert.assertTrue(input.containsKey("new_field"));
-     Assert.assertEquals("val", input.get("new_field"));
-     Assert.assertEquals("val2", input.get("new_field2"));
-     Assert.assertTrue(!input.containsKey("old_field"));
-     Assert.assertTrue(!input.containsKey("old_field2"));
-   }
-   {
-     JSONObject input = new JSONObject();
-     input.put("old_field", "val");
-     for (FieldTransformer handler : c.getFieldTransformations()) {
-       handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
-     }
+    SensorParserConfig c = SensorParserConfig.fromBytes(Bytes.toBytes(configRename));
+    {
+      JSONObject input = new JSONObject();
+      input.put("old_field", "val");
+      input.put("old_field2", "val2");
+      for (FieldTransformer handler : c.getFieldTransformations()) {
+        handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
+      }
+      assertEquals(2, input.size());
+      assertTrue(input.containsKey("new_field"));
+      assertEquals("val", input.get("new_field"));
+      assertEquals("val2", input.get("new_field2"));
+      assertTrue(!input.containsKey("old_field"));
+      assertTrue(!input.containsKey("old_field2"));
+    }
+    {
+      JSONObject input = new JSONObject();
+      input.put("old_field", "val");
+      for (FieldTransformer handler : c.getFieldTransformations()) {
+        handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
+      }
 
-     Assert.assertEquals(1, input.size());
-     Assert.assertTrue(input.containsKey("new_field"));
-     Assert.assertEquals("val", input.get("new_field"));
-   }
- }
+      assertEquals(1, input.size());
+      assertTrue(input.containsKey("new_field"));
+      assertEquals("val", input.get("new_field"));
+    }
+  }
 
   /** { "fieldTransformations" : [
         { "transformation" : "STELLAR"
@@ -177,27 +151,25 @@
     FieldTransformer handler = Iterables.getFirst(c.getFieldTransformations(), null);
     JSONObject input = new JSONObject();
     handler.transformAndUpdate(input,  Context.EMPTY_CONTEXT());
-    Assert.assertTrue(input.containsKey("full_hostname"));
-    Assert.assertEquals("1234567890123456789012345678901234567890123456789012345678901234567890", input.get("full_hostname"));
-    Assert.assertFalse(input.containsKey("domain_without_subdomains"));
+    assertTrue(input.containsKey("full_hostname"));
+    assertEquals("1234567890123456789012345678901234567890123456789012345678901234567890", input.get("full_hostname"));
+    assertFalse(input.containsKey("domain_without_subdomains"));
 
   }
 
-  @Test(expected=IllegalStateException.class)
+  @Test
   public void testStellarBadConfig() throws Exception {
 
     SensorParserConfig c = SensorParserConfig.fromBytes(Bytes.toBytes(badConfig));
     FieldTransformer handler = Iterables.getFirst(c.getFieldTransformations(), null);
     JSONObject input = new JSONObject();
-    try {
-      handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
-    }
-    catch(IllegalStateException ex) {
-      Assert.assertTrue(ex.getMessage().contains("URL_TO_HOST"));
-      Assert.assertTrue(ex.getMessage().contains("123"));
-      throw ex;
-    }
 
+    IllegalStateException ex =
+        assertThrows(
+            IllegalStateException.class,
+            () -> handler.transformAndUpdate(input, Context.EMPTY_CONTEXT()));
+    assertTrue(ex.getMessage().contains("URL_TO_HOST"));
+    assertTrue(ex.getMessage().contains("123"));
   }
 
   /**
@@ -243,9 +215,9 @@
     }});
     handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
     int expected = 3;
-    Assert.assertEquals(expected, input.get("final_value"));
-    Assert.assertFalse(input.containsKey("value1"));
-    Assert.assertFalse(input.containsKey("value2"));
+    assertEquals(expected, input.get("final_value"));
+    assertFalse(input.containsKey("value1"));
+    assertFalse(input.containsKey("value2"));
   }
 
   /**
@@ -276,9 +248,9 @@
     }});
     handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
     long expected = 1452013350000L;
-    Assert.assertEquals(expected, input.get("utc_timestamp"));
-    Assert.assertTrue(input.containsKey("timestamp"));
-    Assert.assertTrue(input.containsKey("newStellarField"));
+    assertEquals(expected, input.get("utc_timestamp"));
+    assertTrue(input.containsKey("timestamp"));
+    assertTrue(input.containsKey("newStellarField"));
   }
 
   /**
@@ -295,8 +267,8 @@
     }});
     handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
     long expected = 1452013350000L;
-    Assert.assertEquals(expected, input.get("utc_timestamp"));
-    Assert.assertTrue(input.containsKey("timestamp"));
+    assertEquals(expected, input.get("utc_timestamp"));
+    assertTrue(input.containsKey("timestamp"));
   }
 
   /**
@@ -313,8 +285,8 @@
     JSONObject input = new JSONObject(new HashMap<String, Object>() {{
     }});
     handler.transformAndUpdate(input,  Context.EMPTY_CONTEXT());
-    Assert.assertFalse(input.containsKey("utc_timestamp"));
-    Assert.assertTrue(input.isEmpty());
+    assertFalse(input.containsKey("utc_timestamp"));
+    assertTrue(input.isEmpty());
   }
 
   /**
@@ -365,11 +337,11 @@
       }});
       handler.transformAndUpdate(input, Context.EMPTY_CONTEXT());
       long expected = 1452013350000L;
-      Assert.assertEquals(expected, input.get("utc_timestamp"));
-      Assert.assertEquals("caseystella.com", input.get("url_host"));
-      Assert.assertEquals("https", input.get("url_protocol"));
-      Assert.assertTrue(input.containsKey("timestamp"));
-      Assert.assertTrue(input.containsKey("url"));
+      assertEquals(expected, input.get("utc_timestamp"));
+      assertEquals("caseystella.com", input.get("url_host"));
+      assertEquals("https", input.get("url_protocol"));
+      assertTrue(input.containsKey("timestamp"));
+      assertTrue(input.containsKey("url"));
     }
     {
       //now we see what happens when we change the data center to london, which is in the map
@@ -380,11 +352,11 @@
       }});
       handler.transformAndUpdate(input, Context.EMPTY_CONTEXT(), c.getParserConfig());
       long expected = 1452013350000L;
-      Assert.assertEquals(expected, input.get("utc_timestamp"));
-      Assert.assertEquals("caseystella.com", input.get("url_host"));
-      Assert.assertEquals("https", input.get("url_protocol"));
-      Assert.assertTrue(input.containsKey("timestamp"));
-      Assert.assertTrue(input.containsKey("url"));
+      assertEquals(expected, input.get("utc_timestamp"));
+      assertEquals("caseystella.com", input.get("url_host"));
+      assertEquals("https", input.get("url_protocol"));
+      assertTrue(input.containsKey("timestamp"));
+      assertTrue(input.containsKey("url"));
     }
     //now we ensure that because we don't have a data center field at all, it's defaulted to UTC.
     {
@@ -394,11 +366,11 @@
       }});
       handler.transformAndUpdate(input, Context.EMPTY_CONTEXT(), c.getParserConfig());
       long expected = 1452013350000L;
-      Assert.assertEquals(expected, input.get("utc_timestamp"));
-      Assert.assertEquals("caseystella.com", input.get("url_host"));
-      Assert.assertEquals("https", input.get("url_protocol"));
-      Assert.assertTrue(input.containsKey("timestamp"));
-      Assert.assertTrue(input.containsKey("url"));
+      assertEquals(expected, input.get("utc_timestamp"));
+      assertEquals("caseystella.com", input.get("url_host"));
+      assertEquals("https", input.get("url_protocol"));
+      assertTrue(input.containsKey("timestamp"));
+      assertTrue(input.containsKey("url"));
     }
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/QueryValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/QueryValidationTest.java
index c47c182..619136f 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/QueryValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/QueryValidationTest.java
@@ -20,15 +20,12 @@
 
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.metron.common.configuration.Configurations;
-import org.apache.metron.common.configuration.FieldValidator;
-import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 
 public class QueryValidationTest extends BaseValidationTest{
   /**
@@ -94,31 +91,31 @@
 
   @Test
   public void testPositive() throws IOException {
-    Assert.assertTrue(execute(validQueryConfig, ImmutableMap.of("field1", "foo")));
+    assertTrue(execute(validQueryConfig, ImmutableMap.of("field1", "foo")));
   }
 
   @Test
   public void testPositive_map() throws IOException {
-    Assert.assertTrue(execute(validQueryConfig_map, ImmutableMap.of("dc", "la")));
+    assertTrue(execute(validQueryConfig_map, ImmutableMap.of("dc", "la")));
   }
   @Test
   public void testNegative_map() throws IOException {
-    Assert.assertFalse(execute(validQueryConfig_map, ImmutableMap.of("dc", "nyc")));
-    Assert.assertFalse(execute(validQueryConfig_map, ImmutableMap.of("foo", "nyc")));
+    assertFalse(execute(validQueryConfig_map, ImmutableMap.of("dc", "nyc")));
+    assertFalse(execute(validQueryConfig_map, ImmutableMap.of("foo", "nyc")));
   }
   @Test
   public void testNegative() throws IOException {
-    Assert.assertFalse(execute(validQueryConfig, ImmutableMap.of("field2", "foo")));
+    assertFalse(execute(validQueryConfig, ImmutableMap.of("field2", "foo")));
   }
 
-  @Test(expected=IllegalStateException.class)
-  public void testInvalidConfig_missingConfig() throws IOException {
-    getConfiguration(invalidQueryConfig1);
+  @Test
+  public void testInvalidConfig_missingConfig() {
+    assertThrows(IllegalStateException.class, () -> getConfiguration(invalidQueryConfig1));
   }
 
-  @Test(expected=IllegalStateException.class)
-  public void testInvalidConfig_invalidQuery() throws IOException {
-    getConfiguration(invalidQueryConfig2);
+  @Test
+  public void testInvalidConfig_invalidQuery() {
+    assertThrows(IllegalStateException.class, () -> getConfiguration(invalidQueryConfig2));
   }
 
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/ValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/ValidationTest.java
index da2e6aa..2b0df36 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/ValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/ValidationTest.java
@@ -20,14 +20,13 @@
 
 import com.google.common.collect.ImmutableList;
 import org.adrianwalker.multilinestring.Multiline;
-import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.metron.common.configuration.Configurations;
-import org.apache.metron.common.configuration.FieldValidator;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class ValidationTest extends BaseValidationTest{
   /**
    {
@@ -69,21 +68,21 @@
   public void testValidConfiguration() throws IOException {
     {
       Configurations configurations = getConfiguration(validValidationConfigWithStringInput);
-      Assert.assertNotNull(configurations.getFieldValidations());
-      Assert.assertEquals(1, configurations.getFieldValidations().size());
-      Assert.assertEquals(ImmutableList.of("field1"), configurations.getFieldValidations().get(0).getInput());
+      assertNotNull(configurations.getFieldValidations());
+      assertEquals(1, configurations.getFieldValidations().size());
+      assertEquals(ImmutableList.of("field1"), configurations.getFieldValidations().get(0).getInput());
     }
     {
       Configurations configurations = getConfiguration(validValidationConfigWithListInput);
-      Assert.assertNotNull(configurations.getFieldValidations());
-      Assert.assertEquals(1, configurations.getFieldValidations().size());
-      Assert.assertEquals(ImmutableList.of("field1", "field2"), configurations.getFieldValidations().get(0).getInput());
+      assertNotNull(configurations.getFieldValidations());
+      assertEquals(1, configurations.getFieldValidations().size());
+      assertEquals(ImmutableList.of("field1", "field2"), configurations.getFieldValidations().get(0).getInput());
     }
   }
 
-  @Test(expected = IllegalStateException.class)
-  public void testInvalidConfiguration() throws IOException {
-    getConfiguration(invalidValidationConfig);
+  @Test
+  public void testInvalidConfiguration() {
+    assertThrows(IllegalStateException.class, () -> getConfiguration(invalidValidationConfig));
   }
 
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/DomainValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/DomainValidationTest.java
index 5277c3f..939c692 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/DomainValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/DomainValidationTest.java
@@ -21,13 +21,14 @@
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.field.validation.BaseValidationTest;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.Collections;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class DomainValidationTest extends BaseValidationTest{
   /**
@@ -60,38 +61,38 @@
 
   @Test
   public void positiveTest_single() throws IOException {
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "caseystella.com")));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "caseystella.com")));
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "www.hotmail.co.uk")));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "www.hotmail.co.uk")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "caseystella.com")));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "caseystella.com")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "www.hotmail.co.uk")));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "www.hotmail.co.uk")));
   }
 
   @Test
   public void negativeTest_empty() throws IOException {
-    Assert.assertFalse(runPredicate("IS_DOMAIN()", Collections.emptyMap()));
-    Assert.assertFalse(runPredicate("IS_DOMAIN('')", Collections.emptyMap()));
+    assertFalse(runPredicate("IS_DOMAIN()", Collections.emptyMap()));
+    assertFalse(runPredicate("IS_DOMAIN('')", Collections.emptyMap()));
   }
 
   @Test
   public void negativeTest_single() throws IOException {
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "foo")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "caseystella.turtle")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "caseystella.turtle")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.7f)));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.7f)));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "foo")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "caseystella.turtle")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "caseystella.turtle")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.7f)));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.7f)));
   }
   @Test
   public void positiveTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "www.gmail.com", "field2", "www.hotmail.com")));
-    Assert.assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "www.gmail.com", "field2", "www.hotmail.com")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "www.gmail.com", "field2", "www.hotmail.com")));
+    assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "www.gmail.com", "field2", "www.hotmail.com")));
   }
 
   @Test
   public void negativeTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field2", "hotmail.edu")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "hotmail.edu")));
-    Assert.assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", "", "field2", "gmail.com")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "", "field2", "gmail.com")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field2", "hotmail.edu")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "hotmail.edu")));
+    assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", "", "field2", "gmail.com")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "", "field2", "gmail.com")));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/EmailValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/EmailValidationTest.java
index 6360ac1..1741354 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/EmailValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/EmailValidationTest.java
@@ -21,13 +21,14 @@
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.field.validation.BaseValidationTest;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.Collections;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class EmailValidationTest extends BaseValidationTest {
   /**
@@ -60,38 +61,38 @@
 
   @Test
   public void positiveTest_single() throws IOException {
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "me@caseystella.com")));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "me@caseystella.com")));
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "me@www.hotmail.co.uk")));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "me@www.hotmail.co.uk")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "me@caseystella.com")));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "me@caseystella.com")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "me@www.hotmail.co.uk")));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "me@www.hotmail.co.uk")));
   }
   @Test
   public void negativeTest_single() throws IOException {
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "me@foo")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "me@foo")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "caseystella.turtle")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "caseystella.turtle")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "caseystella.com")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "caseystella.com")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.7f)));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.7f)));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "me@foo")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "me@foo")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "caseystella.turtle")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "caseystella.turtle")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "caseystella.com")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "caseystella.com")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.7f)));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.7f)));
   }
   @Test
   public void negativeTest_empty() throws IOException {
-    Assert.assertFalse(runPredicate("IS_EMAIL()", Collections.emptyMap()));
-    Assert.assertFalse(runPredicate("IS_EMAIL('')", Collections.emptyMap()));
+    assertFalse(runPredicate("IS_EMAIL()", Collections.emptyMap()));
+    assertFalse(runPredicate("IS_EMAIL('')", Collections.emptyMap()));
   }
   @Test
   public void positiveTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "me@www.gmail.com", "field2", "me@www.hotmail.com")));
-    Assert.assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "me@www.gmail.com", "field2", "me@www.hotmail.com")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "me@www.gmail.com", "field2", "me@www.hotmail.com")));
+    assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "me@www.gmail.com", "field2", "me@www.hotmail.com")));
   }
 
   @Test
   public void negativeTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field2", "me@hotmail.edu")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "me@hotmail.edu")));
-    Assert.assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", "", "field2", "me@gmail.com")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "", "field2", "me@gmail.com")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field2", "me@hotmail.edu")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "me@hotmail.edu")));
+    assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", "", "field2", "me@gmail.com")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "", "field2", "me@gmail.com")));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/IPValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/IPValidationTest.java
index de2a1c4..c79ebe3 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/IPValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/IPValidationTest.java
@@ -21,12 +21,13 @@
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.field.validation.BaseValidationTest;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class IPValidationTest extends BaseValidationTest {
   /**
@@ -80,37 +81,37 @@
 
   @Test
   public void positiveTest_single() throws IOException {
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "127.0.0.1")));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "127.0.0.1")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "127.0.0.1")));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "127.0.0.1")));
   }
   @Test
   public void negativeTest_single() throws IOException {
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "2014/05/01")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014/05/01")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.3f)));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.3f)));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "2014/05/01")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014/05/01")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.3f)));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.3f)));
   }
   @Test
   public void positiveTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "192.168.0.1", "field2", "127.0.0.2")));
-    Assert.assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "192.168.0.1", "field2", "127.0.0.2")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "192.168.0.1", "field2", "127.0.0.2")));
+    assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "192.168.0.1", "field2", "127.0.0.2")));
   }
 
   @Test
   public void negativeTest_multiple() throws IOException {
-    Assert.assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", 1, "field2", "192.168.1")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", 1, "field2", "192.168.1")));
+    assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", 1, "field2", "192.168.1")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", 1, "field2", "192.168.1")));
   }
 
   @Test
   public void positiveTest_multiplex2() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFieldsMultipleTypes, ImmutableMap.of("field1", "192.168.0.1", "field2", "127.0.0.2")));
-    Assert.assertTrue(runPredicate(validWithMultipleFieldsMultipleTypes_MQL, ImmutableMap.of("field1", "192.168.0.1", "field2", "127.0.0.2")));
+    assertTrue(execute(validWithMultipleFieldsMultipleTypes, ImmutableMap.of("field1", "192.168.0.1", "field2", "127.0.0.2")));
+    assertTrue(runPredicate(validWithMultipleFieldsMultipleTypes_MQL, ImmutableMap.of("field1", "192.168.0.1", "field2", "127.0.0.2")));
   }
 
   @Test
   public void negativeTest_multiplex2() throws IOException {
-    Assert.assertFalse(execute(validWithMultipleFieldsMultipleTypes, ImmutableMap.of("field1", 1, "field2", "192.168.1")));
-    Assert.assertFalse(runPredicate(validWithMultipleFieldsMultipleTypes_MQL, ImmutableMap.of("field1", 1, "field2", "192.168.1")));
+    assertFalse(execute(validWithMultipleFieldsMultipleTypes, ImmutableMap.of("field1", 1, "field2", "192.168.1")));
+    assertFalse(runPredicate(validWithMultipleFieldsMultipleTypes_MQL, ImmutableMap.of("field1", 1, "field2", "192.168.1")));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/URLValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/URLValidationTest.java
index 6a4ec38..3379367 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/URLValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/network/URLValidationTest.java
@@ -21,13 +21,14 @@
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.field.validation.BaseValidationTest;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.Collections;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class URLValidationTest  extends BaseValidationTest {
   /**
@@ -60,36 +61,36 @@
 
   @Test
   public void positiveTest_single() throws IOException {
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "http://caseystella.com/foo")));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "http://caseystella.com/foo")));
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "https://www.hotmail.co.uk")));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "https://www.hotmail.co.uk")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "http://caseystella.com/foo")));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "http://caseystella.com/foo")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "https://www.hotmail.co.uk")));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "https://www.hotmail.co.uk")));
   }
   @Test
   public void negativeTest_empty() throws IOException {
-    Assert.assertFalse(runPredicate("IS_URL()", Collections.emptyMap()));
-    Assert.assertFalse(runPredicate("IS_URL('')", Collections.emptyMap()));
+    assertFalse(runPredicate("IS_URL()", Collections.emptyMap()));
+    assertFalse(runPredicate("IS_URL('')", Collections.emptyMap()));
   }
   @Test
   public void negativeTest_single() throws IOException {
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "foo")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "http://caseystella.turtle")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "http://caseystella.turtle")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.7f)));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.7f)));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "foo")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "http://caseystella.turtle")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "http://caseystella.turtle")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.7f)));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.7f)));
   }
   @Test
   public void positiveTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "ftp://www.gmail.com", "field2", "http://www.hotmail.com")));
-    Assert.assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "ftp://www.gmail.com", "field2", "http://www.hotmail.com")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "ftp://www.gmail.com", "field2", "http://www.hotmail.com")));
+    assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "ftp://www.gmail.com", "field2", "http://www.hotmail.com")));
   }
 
   @Test
   public void negativeTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field2", "http://hotmail.edu")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "http://hotmail.edu")));
-    Assert.assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", "", "field2", "http://gmail.com")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "", "field2", "http://gmail.com")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field2", "http://hotmail.edu")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "http://hotmail.edu")));
+    assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", "", "field2", "http://gmail.com")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "", "field2", "http://gmail.com")));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/DateValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/DateValidationTest.java
index c2339a3..7355473 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/DateValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/DateValidationTest.java
@@ -21,12 +21,13 @@
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.field.validation.BaseValidationTest;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class DateValidationTest extends BaseValidationTest{
   /**
@@ -66,34 +67,34 @@
 
   @Test
   public void positiveTest_single() throws IOException {
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "2014-05-01")));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014-05-01")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "2014-05-01")));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014-05-01")));
   }
   @Test
   public void negativeTest_single() throws IOException {
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.3f)));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "2014/05/01")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014/05/01")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.3f)));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.3f)));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "2014/05/01")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014/05/01")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.3f)));
     //invalid month
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014-25-01")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014-25-01")));
     //invalid date
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014-05-32")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "2014-05-32")));
   }
   @Test
   public void positiveTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "2014-06-01", "field2", "2014-06-02")));
-    Assert.assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "2014-06-01", "field2", "2014-06-02")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "2014-06-01", "field2", "2014-06-02")));
+    assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "2014-06-01", "field2", "2014-06-02")));
   }
 
   @Test
   public void negativeTest_multiple() throws IOException {
 
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field2", "2014-06-02")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "2014-06-02")));
-    Assert.assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", 1, "field2", "2014-06-02")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", 1, "field2", "2014-06-02")));
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field3", "2014-06-02")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field3", "2014-06-02")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field2", "2014-06-02")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "2014-06-02")));
+    assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", 1, "field2", "2014-06-02")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", 1, "field2", "2014-06-02")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field3", "2014-06-02")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field3", "2014-06-02")));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/IntegerValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/IntegerValidationTest.java
index a6e717d..5ee99d6 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/IntegerValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/IntegerValidationTest.java
@@ -21,13 +21,14 @@
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.field.validation.BaseValidationTest;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.Collections;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class IntegerValidationTest extends BaseValidationTest{
   /**
@@ -60,37 +61,37 @@
 
   @Test
   public void positiveTest_single() throws IOException {
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", 1)));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 1)));
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "1")));
-    Assert.assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "1")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", 1)));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 1)));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "1")));
+    assertTrue(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "1")));
   }
   @Test
   public void negativeTest_empty() throws IOException {
-    Assert.assertFalse(runPredicate("IS_INTEGER()", Collections.emptyMap()));
-    Assert.assertFalse(runPredicate("IS_INTEGER('')", Collections.emptyMap()));
+    assertFalse(runPredicate("IS_INTEGER()", Collections.emptyMap()));
+    assertFalse(runPredicate("IS_INTEGER('')", Collections.emptyMap()));
   }
   @Test
   public void negativeTest_single() throws IOException {
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "foo")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.3f)));
-    Assert.assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.3f)));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", "foo")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.3f)));
+    assertFalse(runPredicate(validWithSingleField_MQL, ImmutableMap.of("field1", 2.3f)));
   }
   @Test
   public void positiveTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", 1, "field2", "2")));
-    Assert.assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", 1, "field2", "2")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", 1, "field2", "2")));
+    assertTrue(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", 1, "field2", "2")));
   }
 
   @Test
   public void negativeTest_multiple() throws IOException {
 
-    Assert.assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field2", "foo")));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "foo")));
-    Assert.assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", "", "field2", 1)));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "", "field2", 1)));
-    Assert.assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", " ", "field2", 2)));
-    Assert.assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", " ", "field2", 2)));
+    assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field2", "foo")));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field2", "foo")));
+    assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", "", "field2", 1)));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", "", "field2", 1)));
+    assertFalse(execute(validWithMultipleFields, ImmutableMap.of("field1", " ", "field2", 2)));
+    assertFalse(runPredicate(validWithMultipleFields_MQL, ImmutableMap.of("field1", " ", "field2", 2)));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/NotEmptyValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/NotEmptyValidationTest.java
index cbb469e..ba2640e 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/NotEmptyValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/NotEmptyValidationTest.java
@@ -20,15 +20,14 @@
 
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.common.configuration.Configurations;
-import org.apache.metron.common.configuration.FieldValidator;
 import org.apache.metron.common.field.validation.BaseValidationTest;
-import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 
 public class NotEmptyValidationTest extends BaseValidationTest {
 
@@ -60,24 +59,24 @@
 
   @Test
   public void positiveTest_single() throws IOException {
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
   }
   @Test
   public void negativeTest_single() throws IOException {
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field2", "foo")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", " ")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field2", "foo")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", " ")));
   }
   @Test
   public void positiveTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "foo", "field2", "bar")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "foo", "field2", "bar")));
   }
 
   @Test
   public void negativeTest_multiple() throws IOException {
 
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field2", "foo")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "", "field2", "bar")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", " ", "field2", "bar")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field2", "foo")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "", "field2", "bar")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", " ", "field2", "bar")));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/RegexValidationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/RegexValidationTest.java
index 8b602e9..8e7382a 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/RegexValidationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/field/validation/primitive/RegexValidationTest.java
@@ -21,11 +21,13 @@
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.field.validation.BaseValidationTest;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class RegexValidationTest extends BaseValidationTest {
   /**
    {
@@ -62,26 +64,26 @@
 
   @Test
   public void positiveTest_single() throws IOException {
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "fop")));
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "fo")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "foo")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "fop")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field1", "fo")));
   }
   @Test
   public void negativeTest_single() throws IOException {
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "flo")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.3f)));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", "flo")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 2.3f)));
   }
   @Test
   public void positiveTest_multiple() throws IOException {
-    Assert.assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "fooo", "field2", "foll")));
+    assertTrue(execute(validWithMultipleFields, ImmutableMap.of("field1", "fooo", "field2", "foll")));
   }
 
   @Test
   public void negativeTest_multiple() throws IOException {
 
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field2", "foo")));
-    Assert.assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 1, "field2", "foo")));
-    Assert.assertTrue(execute(validWithSingleField, ImmutableMap.of("field3", "foo")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field2", "foo")));
+    assertFalse(execute(validWithSingleField, ImmutableMap.of("field1", 1, "field2", "foo")));
+    assertTrue(execute(validWithSingleField, ImmutableMap.of("field3", "foo")));
   }
 }
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/performance/PerformanceLoggerTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/performance/PerformanceLoggerTest.java
index 88f54e7..6488c48 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/performance/PerformanceLoggerTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/performance/PerformanceLoggerTest.java
@@ -19,21 +19,22 @@
 package org.apache.metron.common.performance;
 
 import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Matchers.anyObject;
-import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.eq;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.anyString;
+import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+
 import com.google.common.collect.ImmutableMap;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.Supplier;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.slf4j.Logger;
@@ -50,7 +51,7 @@
   private Logger logger;
   private PerformanceLogger perfLogger;
 
-  @Before
+  @BeforeEach
   public void setup() {
     MockitoAnnotations.initMocks(this);
     configSupplier = () -> ImmutableMap.of("performance.logging.percent.records", thresholdPercent);
@@ -62,29 +63,29 @@
   }
 
   @Test
-  public void logs_on_threshold() throws Exception {
+  public void logs_on_threshold() {
     when(timing.getElapsed("t1")).thenReturn(111L).thenReturn(222L).thenReturn(333L);
     perfLogger.mark("t1");
     perfLogger.log("t1");
     perfLogger.log("t1");
     perfLogger.log("t1");
     verify(timing).mark("t1");
-    verify(logger, times(1)).debug(anyString(), anyObject(), eq(111L), eq(""));
+    verify(logger, times(1)).debug(anyString(), any(), eq(111L), eq(""));
   }
 
   @Test
-  public void logs_on_threshold_with_message() throws Exception {
+  public void logs_on_threshold_with_message() {
     when(timing.getElapsed("t1")).thenReturn(111L).thenReturn(222L).thenReturn(333L);
     perfLogger.mark("t1");
     perfLogger.log("t1", "my message");
     perfLogger.log("t1", "my message");
     perfLogger.log("t1", "my message");
     verify(timing).mark("t1");
-    verify(logger, times(1)).debug(anyString(), anyObject(), eq(111L), eq("my message"));
+    verify(logger, times(1)).debug(anyString(), any(), eq(111L), eq("my message"));
   }
 
   @Test
-  public void warns_when_logging_nonexisting_marks() throws Exception {
+  public void warns_when_logging_nonexisting_marks() {
     when(thresholdCalc.isPast(thresholdPercent)).thenReturn(true);
     when(timing.getElapsed("t1")).thenReturn(111L);
     when(timing.getElapsed("t2")).thenReturn(222L);
@@ -99,7 +100,7 @@
     verify(timing).mark("t1");
     verify(timing, never()).mark("t2");
     verify(timing, never()).mark("t3");
-    verify(logger).debug(anyString(), anyObject(), eq(111L), eq("my message"));
+    verify(logger).debug(anyString(), any(), eq(111L), eq("my message"));
     verify(logger)
         .debug(anyString(), eq("WARNING - MARK NOT SET"), eq(222L), eq("my message"));
     verify(logger)
@@ -107,7 +108,7 @@
   }
 
   @Test
-  public void logs_with_multiple_markers() throws Exception {
+  public void logs_with_multiple_markers() {
     when(thresholdCalc.isPast(thresholdPercent)).thenReturn(true);
     when(timing.getElapsed("t1")).thenReturn(111L);
     when(timing.getElapsed("t2")).thenReturn(222L);
@@ -117,12 +118,12 @@
     perfLogger.log("t1", "my message 1");
     verify(timing).mark("t1");
     verify(timing).mark("t2");
-    verify(logger).debug(anyString(), anyObject(), eq(111L), eq("my message 1"));
-    verify(logger).debug(anyString(), anyObject(), eq(222L), eq("my message 2"));
+    verify(logger).debug(anyString(), any(), eq(111L), eq("my message 1"));
+    verify(logger).debug(anyString(), any(), eq(222L), eq("my message 2"));
   }
 
   @Test
-  public void defaults_to_1_percent_threshold() throws Exception {
+  public void defaults_to_1_percent_threshold() {
     configSupplier = () -> new HashMap<>();
     when(thresholdCalc.isPast(1)).thenReturn(false).thenReturn(false)
         .thenReturn(true);
@@ -132,11 +133,11 @@
     perfLogger.log("t1", "my message");
     perfLogger.log("t1", "my message");
     verify(timing).mark("t1");
-    verify(logger, times(1)).debug(anyString(), anyObject(), eq(111L), eq("my message"));
+    verify(logger, times(1)).debug(anyString(), any(), eq(111L), eq("my message"));
   }
 
   @Test
-  public void does_not_log_when_debugging_disabled() throws Exception {
+  public void does_not_log_when_debugging_disabled() {
     when(logger.isDebugEnabled()).thenReturn(false);
     when(timing.getElapsed("t1")).thenReturn(111L).thenReturn(222L).thenReturn(333L);
     perfLogger.mark("t1");
@@ -144,11 +145,11 @@
     perfLogger.log("t1", "my message");
     perfLogger.log("t1", "my message");
     verify(timing).mark("t1");
-    verify(logger, times(0)).debug(anyString(), anyObject(), eq(111L), eq("my message"));
+    verify(logger, times(0)).debug(anyString(), any(), eq(111L), eq("my message"));
   }
 
   @Test
-  public void logs_formatted_message_provided_format_args() throws Exception {
+  public void logs_formatted_message_provided_format_args() {
     when(thresholdCalc.isPast(thresholdPercent)).thenReturn(true);
     when(timing.getElapsed("t1")).thenReturn(111L).thenReturn(222L).thenReturn(333L)
         .thenReturn(444L);
@@ -158,10 +159,10 @@
     perfLogger.log("t1", "my {} message {} {}", "1", "2", "3");
     perfLogger.log("t1", "my {} message {} {} {}", "1", "2", "3", "4");
     verify(timing).mark("t1");
-    verify(logger, times(1)).debug(anyString(), anyObject(), eq(111L), eq("my 1 message"));
-    verify(logger, times(1)).debug(anyString(), anyObject(), eq(222L), eq("my 1 message 2"));
-    verify(logger, times(1)).debug(anyString(), anyObject(), eq(333L), eq("my 1 message 2 3"));
-    verify(logger, times(1)).debug(anyString(), anyObject(), eq(444L), eq("my 1 message 2 3 4"));
+    verify(logger, times(1)).debug(anyString(), any(), eq(111L), eq("my 1 message"));
+    verify(logger, times(1)).debug(anyString(), any(), eq(222L), eq("my 1 message 2"));
+    verify(logger, times(1)).debug(anyString(), any(), eq(333L), eq("my 1 message 2 3"));
+    verify(logger, times(1)).debug(anyString(), any(), eq(444L), eq("my 1 message 2 3 4"));
   }
 
   @Test
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/performance/TimingTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/performance/TimingTest.java
index e7ccb79..2f3c4c2 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/performance/TimingTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/performance/TimingTest.java
@@ -18,17 +18,17 @@
 
 package org.apache.metron.common.performance;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import org.junit.Before;
-import org.junit.Test;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class TimingTest {
 
   private Timing timing;
 
-  @Before
+  @BeforeEach
   public void setup() {
     timing = new Timing();
   }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/system/ClockTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/system/ClockTest.java
index d552255..3f64017 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/system/ClockTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/system/ClockTest.java
@@ -17,14 +17,15 @@
  */
 package org.apache.metron.common.system;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mockito;
 
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.TimeZone;
-import org.junit.Test;
-import org.mockito.Mockito;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class ClockTest {
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/typosquat/TyposquattingStrategiesTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/typosquat/TyposquattingStrategiesTest.java
index 8cea42a..bd3a0f2 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/typosquat/TyposquattingStrategiesTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/typosquat/TyposquattingStrategiesTest.java
@@ -22,22 +22,20 @@
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Sets;
-import java.io.FileInputStream;
-import java.nio.charset.StandardCharsets;
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.io.BufferedReader;
-import java.io.FileReader;
-import java.io.InputStream;
+import java.io.FileInputStream;
 import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 
-@RunWith(Parameterized.class)
+import static org.junit.jupiter.api.Assertions.*;
+
 public class TyposquattingStrategiesTest {
 
   /*
@@ -55,7 +53,7 @@
     put("github", new EnumMap<>(TyposquattingStrategies.class));
   }};
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() throws Exception {
     for(Map.Entry<String, EnumMap<TyposquattingStrategies, Set<String>>> kv : expected.entrySet()) {
       try(BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("src/test/resources/typosquat/" + kv.getKey() + ".csv"), StandardCharsets.UTF_8) ) )
@@ -73,7 +71,7 @@
             continue;
           }
           TyposquattingStrategies strategy = TyposquattingStrategies.byName(name);
-          Assert.assertNotNull("Couldn't find " + name, strategy);
+          assertNotNull(strategy, "Couldn't find " + name);
           Set<String> s = expectedValues.get(strategy);
           if(s == null) {
             s = new HashSet<>();
@@ -85,33 +83,24 @@
     }
   }
 
-  @Parameterized.Parameters
-  public static Collection<Object[]> strategies() {
-    List<Object[]> ret = new ArrayList<>();
-    for(TyposquattingStrategies strategy : TyposquattingStrategies.values()) {
-      ret.add(new Object[] { strategy });
-    }
-    return ret;
-  }
-
-  TyposquattingStrategies strategy;
-  public TyposquattingStrategiesTest(TyposquattingStrategies strategy) {
-    this.strategy = strategy;
-  }
-
   public void assertExpected(String domain, TyposquattingStrategies strategy) {
     Set<String> expectedValues = expected.get(domain).get(strategy);
     Set<String> actualValues = strategy.generateCandidates(domain);
-    Assert.assertFalse(actualValues.contains(domain));
+    assertFalse(actualValues.contains(domain));
     {
       Sets.SetView<String> vals = Sets.difference(expectedValues, actualValues);
       String diff = Joiner.on(",").join(vals);
-      Assert.assertTrue(strategy.name() + ": Found values expected but not generated: " + diff, vals.isEmpty());
+      assertTrue(vals.isEmpty(), strategy.name() + ": Found values expected but not generated: " + diff);
     }
   }
 
-  @Test
-  public void test() {
+  public static TyposquattingStrategies[] strategies() {
+    return TyposquattingStrategies.values();
+  }
+
+  @ParameterizedTest
+  @MethodSource("strategies")
+  public void test(TyposquattingStrategies strategy) {
     for(String domain : expected.keySet()) {
       assertExpected(domain, strategy);
     }
@@ -122,7 +111,7 @@
     for(String domain : expected.keySet()) {
       Set<String> expectedAll = TyposquattingStrategies.generateAllCandidates(domain);
       Set<String> generatedAll = (Set<String>) StellarProcessorUtils.run("DOMAIN_TYPOSQUAT(domain)", ImmutableMap.of("domain", domain));
-      Assert.assertTrue(Sets.symmetricDifference(expectedAll, generatedAll).isEmpty());
+      assertTrue(Sets.symmetricDifference(expectedAll, generatedAll).isEmpty());
     }
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/CompressionUtilsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/CompressionUtilsTest.java
index 50d83e9..f41ca2e 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/CompressionUtilsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/CompressionUtilsTest.java
@@ -18,14 +18,15 @@
 
 package org.apache.metron.common.utils;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.apache.metron.integration.utils.TestUtils;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.io.IOException;
-import org.apache.metron.integration.utils.TestUtils;
-import org.junit.Before;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class CompressionUtilsTest {
 
@@ -33,7 +34,7 @@
   private File tempDir;
   private File textFile;
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     tempDir = TestUtils.createTempDir(this.getClass().getName());
     textFile = new File(tempDir, "test-text-file.txt");
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/HDFSUtilsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/HDFSUtilsTest.java
index a572e24..1497fff 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/HDFSUtilsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/HDFSUtilsTest.java
@@ -18,17 +18,20 @@
 
 package org.apache.metron.common.utils;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
-import java.io.File;
-import java.nio.charset.StandardCharsets;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.metron.integration.utils.TestUtils;
 import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
 import org.junit.rules.TemporaryFolder;
 
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+@EnableRuleMigrationSupport
 public class HDFSUtilsTest {
 
   @Rule
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/HashUtilsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/HashUtilsTest.java
index 3037341..06ef635 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/HashUtilsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/HashUtilsTest.java
@@ -18,13 +18,13 @@
 package org.apache.metron.common.utils;
 
 import org.json.simple.JSONObject;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.Collection;
 
 import static java.nio.charset.StandardCharsets.UTF_8;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 @SuppressWarnings({"unchecked"})
 public class HashUtilsTest {
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/JSONUtilsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/JSONUtilsTest.java
index fed333b..13a9a7b 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/JSONUtilsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/JSONUtilsTest.java
@@ -18,19 +18,19 @@
 
 package org.apache.metron.common.utils;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.test.utils.UnitTestHelper;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
-import com.fasterxml.jackson.databind.JsonNode;
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.test.utils.UnitTestHelper;
-import org.junit.BeforeClass;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class JSONUtilsTest {
 
@@ -43,7 +43,7 @@
   private static String config;
   private static File configFile;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUp() throws Exception {
     tmpDir = UnitTestHelper.createTempDir(new File("target/jsonutilstest"));
     configFile = UnitTestHelper.write(new File(tmpDir, "config.json"), config);
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/KafkaUtilsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/KafkaUtilsTest.java
index 2c4a5d5..277daee 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/KafkaUtilsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/KafkaUtilsTest.java
@@ -18,29 +18,25 @@
 
 package org.apache.metron.common.utils;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.when;
-
-import java.net.URISyntaxException;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.api.GetChildrenBuilder;
 import org.apache.curator.framework.api.GetDataBuilder;
-import org.junit.Test;
-import org.junit.experimental.runners.Enclosed;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
 
-@RunWith(Enclosed.class)
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Stream;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.when;
+
 public class KafkaUtilsTest {
-  @RunWith(MockitoJUnitRunner.class)
   public static class ZkMockedUtils {
     @Mock
     CuratorFramework client;
@@ -128,38 +124,26 @@
     }
   }
 
-  @RunWith(Parameterized.class)
-  public static class ParameterizedEndPointParsing {
-    static String[] hostnames = new String[]{"node1", "localhost", "192.168.0.1", "my.domain.com"};
-    static String[] schemes = new String[]{"SSL", "PLAINTEXTSASL", "PLAINTEXT", "SASL_PLAINTEXT"};
-    static String[] ports = new String[]{"6667", "9091", null};
-
-    private String endpoint;
-    private String expected;
-
-    public ParameterizedEndPointParsing(String endpoint, String expected) {
-      this.endpoint = endpoint;
-      this.expected = expected;
-    }
-
-    @Parameters(name = "{index}:endpoint({0}={1})")
-    public static Collection<Object[]> data() {
-      List<Object[]> ret = new ArrayList<>();
-      for (String scheme : schemes) {
-        for (String hostname : hostnames) {
-          for (String port : ports) {
-            port = port != null ? (":" + port) : "";
-            String expected = hostname + port;
-            ret.add(new Object[]{scheme + "://" + expected, expected});
-          }
+  public static List<Object[]> data() {
+    String[] hostnames = new String[]{"node1", "localhost", "192.168.0.1", "my.domain.com"};
+    String[] schemes = new String[]{"SSL", "PLAINTEXTSASL", "PLAINTEXT", "SASL_PLAINTEXT"};
+    String[] ports = new String[]{"6667", "9091", null};
+    List<Object[]> ret = new ArrayList<>();
+    for (String scheme : schemes) {
+      for (String hostname : hostnames) {
+        for (String port : ports) {
+          port = port != null ? (":" + port) : "";
+          String expected = hostname + port;
+          ret.add(new Object[]{scheme + "://" + expected, expected});
         }
       }
-      return ret;
     }
+    return ret;
+  }
 
-    @Test
-    public void testEndpointParsing() throws URISyntaxException {
-      assertEquals(expected, KafkaUtils.INSTANCE.fromEndpoint(endpoint).get(0));
-    }
+  @ParameterizedTest
+  @MethodSource("data")
+  public void testEndpointParsing(String endpoint, String expected) {
+    assertEquals(expected, KafkaUtils.INSTANCE.fromEndpoint(endpoint).get(0));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/LazyLoggerImplTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/LazyLoggerImplTest.java
index 7402c85..b0e3dc4 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/LazyLoggerImplTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/LazyLoggerImplTest.java
@@ -18,11 +18,8 @@
 
 package org.apache.metron.common.utils;
 
-import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
-import org.mockito.junit.MockitoJUnit;
-import org.mockito.junit.MockitoRule;
 import org.slf4j.Logger;
 import org.slf4j.Marker;
 
@@ -93,9 +90,6 @@
   // Stub Exception
   private static final Exception exception = new Exception();
 
-  @Rule
-  public MockitoRule mockitoRule = MockitoJUnit.rule();
-
   private List<UUID> getGuids(int numGuids) {
     return IntStream.range(0,numGuids)
             .mapToObj( x ->  UUID.randomUUID())
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/LazzyLoggerImplPerfTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/LazzyLoggerImplPerfTest.java
index 53c8f99..5aa53ea 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/LazzyLoggerImplPerfTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/LazzyLoggerImplPerfTest.java
@@ -17,15 +17,17 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-import java.lang.invoke.MethodHandles;
-import java.util.HashMap;
-import java.util.Map;
+
 import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.commons.math3.stat.descriptive.DescriptiveStatistics;
 import org.apache.commons.math3.stat.descriptive.StatisticalSummary;
 import org.json.simple.JSONObject;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import java.lang.invoke.MethodHandles;
+import java.util.HashMap;
+import java.util.Map;
 
 /**
  * Performance test for lazy logging.
@@ -42,7 +44,7 @@
   }
 
   @Test
-  @Ignore
+  @Disabled
   public void calcTimes() {
     Map<String, Object> smallMap = new HashMap<>();
     for (int i = 0; i < 10; i++) {
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/RuntimeErrorsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/RuntimeErrorsTest.java
index 9bc8929..196b764 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/RuntimeErrorsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/RuntimeErrorsTest.java
@@ -18,49 +18,58 @@
 
 package org.apache.metron.common.utils;
 
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
 import static org.hamcrest.CoreMatchers.nullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class RuntimeErrorsTest {
-
-  @Rule
-  public ExpectedException exception = ExpectedException.none();
-
   @Test
-  public void illegal_arg_throws_exception_with_reason() throws Exception {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("illegal arg happened");
-    exception.expectCause(nullValue(Throwable.class));
-    RuntimeErrors.ILLEGAL_ARG.throwRuntime("illegal arg happened");
+  public void illegal_arg_throws_exception_with_reason() {
+    IllegalArgumentException e =
+        assertThrows(
+            IllegalArgumentException.class,
+            () -> RuntimeErrors.ILLEGAL_ARG.throwRuntime("illegal arg happened"));
+    assertTrue(e.getMessage().contains("illegal arg happened"));
+    assertThat(e.getCause(), nullValue(Throwable.class));
   }
 
   @Test
-  public void illegal_arg_throws_exception_with_reason_and_cause() throws Exception {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("illegal arg happened");
-    exception.expectCause(instanceOf(IOException.class));
-    RuntimeErrors.ILLEGAL_ARG.throwRuntime("illegal arg happened", new IOException("bad io"));
+  public void illegal_arg_throws_exception_with_reason_and_cause() {
+    IllegalArgumentException e =
+        assertThrows(
+            IllegalArgumentException.class,
+            () ->
+                RuntimeErrors.ILLEGAL_ARG.throwRuntime(
+                    "illegal arg happened", new IOException("bad io")));
+    assertTrue(e.getMessage().contains("illegal arg happened"));
+    assertThat(e.getCause(), instanceOf(IOException.class));
   }
 
   @Test
-  public void illegal_state_throws_exception_with_reason() throws Exception {
-    exception.expect(IllegalStateException.class);
-    exception.expectMessage("illegal state happened");
-    exception.expectCause(nullValue(Throwable.class));
-    RuntimeErrors.ILLEGAL_STATE.throwRuntime("illegal state happened");
+  public void illegal_state_throws_exception_with_reason() {
+    IllegalStateException e =
+        assertThrows(
+            IllegalStateException.class,
+            () -> RuntimeErrors.ILLEGAL_STATE.throwRuntime("illegal state happened"));
+    assertTrue(e.getMessage().contains("illegal state happened"));
+    assertThat(e.getCause(), nullValue(Throwable.class));
   }
 
   @Test
-  public void illegal_state_throws_exception_with_reason_and_cause() throws Exception {
-    exception.expect(IllegalStateException.class);
-    exception.expectMessage("illegal state happened");
-    exception.expectCause(instanceOf(IOException.class));
-    RuntimeErrors.ILLEGAL_STATE.throwRuntime("illegal state happened", new IOException("bad io"));
+  public void illegal_state_throws_exception_with_reason_and_cause() {
+    IllegalStateException e =
+        assertThrows(
+            IllegalStateException.class,
+            () ->
+                RuntimeErrors.ILLEGAL_STATE.throwRuntime(
+                    "illegal state happened", new IOException("bad io")));
+    assertTrue(e.getMessage().contains("illegal state happened"));
+    assertThat(e.getCause(), instanceOf(IOException.class));
   }
 }
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/SerDeUtilsTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/SerDeUtilsTest.java
index 8ccc2f4..0ae2259 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/SerDeUtilsTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/SerDeUtilsTest.java
@@ -22,15 +22,14 @@
 
 import com.google.common.collect.ImmutableList;
 import org.apache.metron.stellar.common.utils.BloomFilter;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the Serializer.
@@ -129,8 +128,8 @@
     expected.add("bar");
     byte[] raw = SerDeUtils.toBytes(expected);
     BloomFilter<Object> actual = (BloomFilter) SerDeUtils.fromBytes(raw, Object.class);
-    Assert.assertTrue(actual.mightContain("foo"));
-    Assert.assertFalse(actual.mightContain("timothy"));
+    assertTrue(actual.mightContain("foo"));
+    assertFalse(actual.mightContain("timothy"));
     assertEquals(expected, actual);
   }
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/file/ReaderSpliteratorTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/file/ReaderSpliteratorTest.java
index 48ab168..5e264f3 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/file/ReaderSpliteratorTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/utils/file/ReaderSpliteratorTest.java
@@ -17,35 +17,27 @@
  */
 package org.apache.metron.common.utils.file;
 
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import java.io.*;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
-import java.nio.file.OpenOption;
 import java.nio.file.StandardOpenOption;
 import java.util.Map;
 import java.util.Spliterator;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.ForkJoinPool;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 import java.util.stream.StreamSupport;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
 
 public class ReaderSpliteratorTest {
   /**
@@ -63,7 +55,7 @@
   public static String data;
   public static final File dataFile = new File("target/readerspliteratortest.data");
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() throws IOException {
     if(dataFile.exists()) {
       dataFile.delete();
@@ -81,11 +73,11 @@
   }
 
   private static void validateMapCount(Map<String, Integer> count) {
-    Assert.assertEquals(5, count.size());
-    Assert.assertEquals(3, (int)count.get("foo"));
-    Assert.assertEquals(2, (int)count.get("bar"));
-    Assert.assertEquals(1, (int)count.get("and"));
-    Assert.assertEquals(1, (int)count.get("the"));
+    assertEquals(5, count.size());
+    assertEquals(3, (int)count.get("foo"));
+    assertEquals(2, (int)count.get("bar"));
+    assertEquals(1, (int)count.get("and"));
+    assertEquals(1, (int)count.get("the"));
   }
 
   @Test
@@ -139,7 +131,7 @@
                     Map<String, Integer> threads =
                       stream.parallel().map(s -> Thread.currentThread().getName())
                               .collect(Collectors.toMap(s -> s, s -> 1, Integer::sum));
-                    Assert.assertTrue(threads.size() > 0);
+                    assertTrue(threads.size() > 0);
             }
     ).get();
     return numSplits.get();
@@ -149,7 +141,7 @@
   public void testSmallBatch() throws ExecutionException, InterruptedException, IOException {
     //With 9 elements and a batch of 1, we should have ceil(9/1) = 9 batches
     try(BufferedReader reader = getReader()) {
-      Assert.assertEquals(9, getNumberOfBatches(new ReaderSpliterator(reader, 1)));
+      assertEquals(9, getNumberOfBatches(new ReaderSpliterator(reader, 1)));
     }
   }
 
@@ -157,7 +149,7 @@
   public void testMediumBatch() throws ExecutionException, InterruptedException, IOException {
     //With 9 elements and a batch of 2, we should have ceil(9/2) = 5 batches
     try(BufferedReader reader = getReader()) {
-      Assert.assertEquals(5, getNumberOfBatches(new ReaderSpliterator(reader, 2)));
+      assertEquals(5, getNumberOfBatches(new ReaderSpliterator(reader, 2)));
     }
   }
 
@@ -165,7 +157,7 @@
   public void testOneBigBatch() throws ExecutionException, InterruptedException, IOException {
     //With 9 elements and a batch of 10, we should only have one batch
     try(BufferedReader reader = getReader()) {
-      Assert.assertEquals(1, getNumberOfBatches(new ReaderSpliterator(reader, 10)));
+      assertEquals(1, getNumberOfBatches(new ReaderSpliterator(reader, 10)));
     }
   }
 
diff --git a/metron-platform/metron-common/src/test/java/org/apache/metron/common/zookeeper/ZKConfigurationsCacheIntegrationTest.java b/metron-platform/metron-common/src/test/java/org/apache/metron/common/zookeeper/ZKConfigurationsCacheIntegrationTest.java
index 9deaab0..95c5170 100644
--- a/metron-platform/metron-common/src/test/java/org/apache/metron/common/zookeeper/ZKConfigurationsCacheIntegrationTest.java
+++ b/metron-platform/metron-common/src/test/java/org/apache/metron/common/zookeeper/ZKConfigurationsCacheIntegrationTest.java
@@ -17,7 +17,6 @@
  */
 package org.apache.metron.common.zookeeper;
 
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.io.IOUtils;
 import org.apache.curator.framework.CuratorFramework;
@@ -28,13 +27,18 @@
 import org.apache.metron.common.configuration.profiler.ProfilerConfigurations;
 import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.integration.components.ZKServerComponent;
-import org.junit.*;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.io.FileInputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Map;
 
 import static org.apache.metron.integration.utils.TestUtils.assertEventually;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class ZKConfigurationsCacheIntegrationTest {
   private CuratorFramework client;
@@ -124,7 +128,7 @@
 
   public ZKServerComponent zkComponent;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     zkComponent = new ZKServerComponent();
     zkComponent.start();
@@ -164,7 +168,7 @@
     }
   }
 
-  @After
+  @AfterEach
   public void teardown() throws Exception {
     if(cache != null) {
       cache.close();
@@ -188,31 +192,31 @@
     //global
     {
       IndexingConfigurations config = cache.get( IndexingConfigurations.class);
-      assertEventually(() -> Assert.assertNull(config.getGlobalConfig(false)));
+      assertEventually(() -> assertNull(config.getGlobalConfig(false)));
     }
     //indexing
     {
       IndexingConfigurations config = cache.get( IndexingConfigurations.class);
-      assertEventually(() -> Assert.assertNull(config.getSensorIndexingConfig("test", false)));
-      assertEventually(() -> Assert.assertNull(config.getGlobalConfig(false)));
+      assertEventually(() -> assertNull(config.getSensorIndexingConfig("test", false)));
+      assertEventually(() -> assertNull(config.getGlobalConfig(false)));
     }
     //enrichment
     {
       EnrichmentConfigurations config = cache.get( EnrichmentConfigurations.class);
-      assertEventually(() -> Assert.assertNull(config.getSensorEnrichmentConfig("test")));
-      assertEventually(()-> Assert.assertNull(config.getGlobalConfig(false)));
+      assertEventually(() -> assertNull(config.getSensorEnrichmentConfig("test")));
+      assertEventually(()-> assertNull(config.getGlobalConfig(false)));
     }
     //parser
     {
       ParserConfigurations config = cache.get( ParserConfigurations.class);
-      assertEventually(() -> Assert.assertNull(config.getSensorParserConfig("bro")));
-      assertEventually(() -> Assert.assertNull(config.getGlobalConfig(false)));
+      assertEventually(() -> assertNull(config.getSensorParserConfig("bro")));
+      assertEventually(() -> assertNull(config.getGlobalConfig(false)));
     }
     //profiler
     {
       ProfilerConfigurations config = cache.get( ProfilerConfigurations.class);
-      assertEventually(() -> Assert.assertNull(config.getProfilerConfig()));
-      assertEventually(() -> Assert.assertNull(config.getGlobalConfig(false)));
+      assertEventually(() -> assertNull(config.getProfilerConfig()));
+      assertEventually(() -> assertNull(config.getGlobalConfig(false)));
     }
   }
 
@@ -231,27 +235,27 @@
     {
       Map<String, Object> expectedConfig = JSONUtils.INSTANCE.load(testIndexingConfig, JSONUtils.MAP_SUPPLIER);
       IndexingConfigurations config = cache.get( IndexingConfigurations.class);
-      assertEventually(() -> Assert.assertEquals(expectedConfig, config.getSensorIndexingConfig("test")));
+      assertEventually(() -> assertEquals(expectedConfig, config.getSensorIndexingConfig("test")));
     }
     //enrichment
     {
       SensorEnrichmentConfig expectedConfig = JSONUtils.INSTANCE.load(testEnrichmentConfig, SensorEnrichmentConfig.class);
       Map<String, Object> expectedGlobalConfig = JSONUtils.INSTANCE.load(globalConfig, JSONUtils.MAP_SUPPLIER);
       EnrichmentConfigurations config = cache.get( EnrichmentConfigurations.class);
-      assertEventually(() -> Assert.assertEquals(expectedConfig, config.getSensorEnrichmentConfig("test")));
-      assertEventually(() -> Assert.assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
+      assertEventually(() -> assertEquals(expectedConfig, config.getSensorEnrichmentConfig("test")));
+      assertEventually(() -> assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
     }
     //parsers
     {
       SensorParserConfig expectedConfig = JSONUtils.INSTANCE.load(testParserConfig, SensorParserConfig.class);
       ParserConfigurations config = cache.get( ParserConfigurations.class);
-      assertEventually(() -> Assert.assertEquals(expectedConfig, config.getSensorParserConfig("bro")));
+      assertEventually(() -> assertEquals(expectedConfig, config.getSensorParserConfig("bro")));
     }
     //profiler
     {
       ProfilerConfig expectedConfig = JSONUtils.INSTANCE.load(profilerConfig, ProfilerConfig.class);
       ProfilerConfigurations config = cache.get( ProfilerConfigurations.class);
-      assertEventually(() -> Assert.assertEquals(expectedConfig, config.getProfilerConfig()));
+      assertEventually(() -> assertEquals(expectedConfig, config.getProfilerConfig()));
     }
   }
 
@@ -264,35 +268,35 @@
       File inFile = new File(TestConstants.SAMPLE_CONFIG_PATH + "/indexing/test.json");
       Map<String, Object> expectedConfig = JSONUtils.INSTANCE.load(inFile, JSONUtils.MAP_SUPPLIER);
       IndexingConfigurations config = cache.get( IndexingConfigurations.class);
-      assertEventually(() -> Assert.assertEquals(expectedConfig, config.getSensorIndexingConfig("test")));
-      assertEventually(() -> Assert.assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
-      assertEventually(() -> Assert.assertNull(config.getSensorIndexingConfig("notthere", false)));
+      assertEventually(() -> assertEquals(expectedConfig, config.getSensorIndexingConfig("test")));
+      assertEventually(() -> assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
+      assertEventually(() -> assertNull(config.getSensorIndexingConfig("notthere", false)));
     }
     //enrichment
     {
       File inFile = new File(TestConstants.SAMPLE_CONFIG_PATH + "/enrichments/test.json");
       SensorEnrichmentConfig expectedConfig = JSONUtils.INSTANCE.load(inFile, SensorEnrichmentConfig.class);
       EnrichmentConfigurations config = cache.get( EnrichmentConfigurations.class);
-      assertEventually(() -> Assert.assertEquals(expectedConfig, config.getSensorEnrichmentConfig("test")));
-      assertEventually(() -> Assert.assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
-      assertEventually(() -> Assert.assertNull(config.getSensorEnrichmentConfig("notthere")));
+      assertEventually(() -> assertEquals(expectedConfig, config.getSensorEnrichmentConfig("test")));
+      assertEventually(() -> assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
+      assertEventually(() -> assertNull(config.getSensorEnrichmentConfig("notthere")));
     }
     //parsers
     {
       File inFile = new File(TestConstants.PARSER_CONFIGS_PATH + "/parsers/bro.json");
       SensorParserConfig expectedConfig = JSONUtils.INSTANCE.load(inFile, SensorParserConfig.class);
       ParserConfigurations config = cache.get( ParserConfigurations.class);
-      assertEventually(() -> Assert.assertEquals(expectedConfig, config.getSensorParserConfig("bro")));
-      assertEventually(() -> Assert.assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
-      assertEventually(() -> Assert.assertNull(config.getSensorParserConfig("notthere")));
+      assertEventually(() -> assertEquals(expectedConfig, config.getSensorParserConfig("bro")));
+      assertEventually(() -> assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
+      assertEventually(() -> assertNull(config.getSensorParserConfig("notthere")));
     }
     //profiler
     {
       File inFile = new File("src/test/resources/profiler/profiler.json");
       ProfilerConfig expectedConfig = JSONUtils.INSTANCE.load(inFile, ProfilerConfig.class);
       ProfilerConfigurations config = cache.get( ProfilerConfigurations.class);
-      assertEventually(() -> Assert.assertEquals(expectedConfig, config.getProfilerConfig()));
-      assertEventually(() -> Assert.assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
+      assertEventually(() -> assertEquals(expectedConfig, config.getProfilerConfig()));
+      assertEventually(() -> assertEquals(expectedGlobalConfig, config.getGlobalConfig()));
     }
   }
 }
diff --git a/metron-platform/metron-data-management/pom.xml b/metron-platform/metron-data-management/pom.xml
index ef822a9..7710fe6 100644
--- a/metron-platform/metron-data-management/pom.xml
+++ b/metron-platform/metron-data-management/pom.xml
@@ -234,8 +234,8 @@
         </dependency>
         <dependency>
             <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest-all</artifactId>
-            <version>1.3</version>
+            <artifactId>hamcrest-core</artifactId>
+            <version>${global_hamcrest_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -319,33 +319,21 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <version>1.6.2</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${global_junit_jupiter_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito</artifactId>
-            <version>1.6.2</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${global_junit_jupiter_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-easymock</artifactId>
-            <version>1.6.2</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-            <version>3.4</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${global_junit_version}</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-migrationsupport</artifactId>
+            <version>${global_junit_jupiter_version}</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/bulk/HDFSDataPrunerTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/bulk/HDFSDataPrunerTest.java
index 1e8a09e..9b886e9 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/bulk/HDFSDataPrunerTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/bulk/HDFSDataPrunerTest.java
@@ -17,14 +17,14 @@
  */
 package org.apache.metron.dataloads.bulk;
 
-import org.apache.hadoop.fs.FileSystem;
-import org.apache.hadoop.fs.Path;
-import org.apache.log4j.Level;
-import org.apache.metron.test.utils.UnitTestHelper;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 
 import java.io.File;
 import java.io.IOException;
@@ -32,11 +32,13 @@
 import java.util.Calendar;
 import java.util.Date;
 import java.util.concurrent.TimeUnit;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.*;
+import org.apache.hadoop.fs.FileSystem;
+import org.apache.hadoop.fs.Path;
+import org.apache.log4j.Level;
+import org.apache.metron.test.utils.UnitTestHelper;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 
 public class HDFSDataPrunerTest {
@@ -48,8 +50,8 @@
     private Date yesterday = new Date();
 
 
-    @BeforeClass
-    public static void beforeClass() throws Exception {
+    @BeforeAll
+    public static void beforeClass() {
 
         if (dataPath.isDirectory()) {
             dataPath.delete();
@@ -64,8 +66,8 @@
     }
 
 
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    public void setUp() {
 
         Calendar today = Calendar.getInstance();
         today.clear(Calendar.HOUR);
@@ -76,11 +78,11 @@
 
     }
 
-    @Test(expected = StartDateException.class)
-    public void testFailsOnTodaysDate() throws Exception {
-
-        HDFSDataPruner pruner = new HDFSDataPruner(todaysDate, 30, "file:///", dataPath.getAbsolutePath() + "/file-*");
-
+    @Test
+    public void testFailsOnTodaysDate() {
+        assertThrows(
+            StartDateException.class,
+            () -> new HDFSDataPruner(todaysDate, 30, "file:///", dataPath.getAbsolutePath() + "/file-*"));
     }
 
     @Test
@@ -90,8 +92,8 @@
 
         HDFSDataPruner pruner = new HDFSDataPruner(yesterday, 30, "file:///", dataPath.getAbsolutePath() + "/file-*");
 
-        Long prunedCount = pruner.prune();
-        assertTrue("Should have pruned 45 files- pruned: " + prunedCount, 45 == prunedCount);
+        long prunedCount = pruner.prune();
+        assertEquals(45, prunedCount, "Should have pruned 45 files- pruned: " + prunedCount);
 
         File[] filesLeft = dataPath.listFiles();
         File[] filesList = new File[filesLeft.length];
@@ -100,7 +102,7 @@
         }
 
         Arrays.sort(filesLeft);
-        assertArrayEquals("First four files should have been left behind", filesLeft, filesList);
+        assertArrayEquals(filesLeft, filesList, "First four files should have been left behind");
 
 
     }
@@ -115,13 +117,7 @@
         pruner.fileSystem = testFS;
         HDFSDataPruner.DateFileFilter filter = new HDFSDataPruner.DateFileFilter(pruner, true);
         UnitTestHelper.setLog4jLevel(HDFSDataPruner.class, Level.FATAL);
-        try {
-            filter.accept(new Path("foo"));
-            Assert.fail("Expected Runtime exception, but did not receive one.");
-        }
-        catch(RuntimeException e) {
-
-        }
+        assertThrows(RuntimeException.class, () -> filter.accept(new Path("foo")));
         UnitTestHelper.setLog4jLevel(HDFSDataPruner.class, Level.ERROR);
     }
 
@@ -134,7 +130,7 @@
         HDFSDataPruner pruner = new HDFSDataPruner(yesterday, 30, "file:///", dataPath.getAbsolutePath() + "/file-*");
         pruner.fileSystem = testFS;
         HDFSDataPruner.DateFileFilter filter = new HDFSDataPruner.DateFileFilter(pruner, false);
-        assertFalse("Should ignore directories",filter.accept(new Path("/tmp")));
+        assertFalse(filter.accept(new Path("/tmp")), "Should ignore directories");
 
     }
 
@@ -150,12 +146,7 @@
         pruner.fileSystem = testFS;
         HDFSDataPruner.DateFileFilter filter = new HDFSDataPruner.DateFileFilter(pruner, true);
         UnitTestHelper.setLog4jLevel(HDFSDataPruner.class, Level.FATAL);
-        try {
-            filter.accept(new Path("foo"));
-            Assert.fail("Expected Runtime exception, but did not receive one.");
-        }
-        catch(RuntimeException e) {
-        }
+        assertThrows(RuntimeException.class, () -> filter.accept(new Path("foo")));
         UnitTestHelper.setLog4jLevel(HDFSDataPruner.class, Level.ERROR);
     }
 
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/ExtractorDecoratorTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/ExtractorDecoratorTest.java
index 93c8098..fe162bc 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/ExtractorDecoratorTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/ExtractorDecoratorTest.java
@@ -17,9 +17,8 @@
  */
 package org.apache.metron.dataloads.extractor;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
@@ -27,8 +26,9 @@
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.hamcrest.Matchers.notNullValue;
-import static org.mockito.Matchers.isA;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.ArgumentMatchers.isA;
 import static org.mockito.Mockito.verify;
 
 public class ExtractorDecoratorTest {
@@ -36,7 +36,7 @@
   @Mock
   Extractor extractor;
 
-  @Before
+  @BeforeEach
   public void before() {
     MockitoAnnotations.initMocks(this);
   }
@@ -44,7 +44,7 @@
   @Test
   public void sets_member_variables() {
     ExtractorDecorator decorator = new ExtractorDecorator(extractor);
-    Assert.assertThat(decorator.decoratedExtractor, notNullValue());
+    assertThat(decorator.decoratedExtractor, notNullValue());
   }
 
   @Test
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/ExtractorTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/ExtractorTest.java
index 9703cc2..9352113 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/ExtractorTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/ExtractorTest.java
@@ -21,8 +21,7 @@
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.converter.EnrichmentValue;
 import org.apache.metron.enrichment.lookup.LookupKV;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
@@ -30,12 +29,14 @@
 import java.util.HashMap;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class ExtractorTest {
     public static class DummyExtractor implements Extractor
     {
 
         @Override
-        public Iterable<LookupKV> extract(String line) throws IOException {
+        public Iterable<LookupKV> extract(String line) {
             EnrichmentKey key = new EnrichmentKey();
             key.indicator = "dummy";
             key.type = "type";
@@ -55,9 +56,9 @@
         LookupKV results = Iterables.getFirst(extractor.extract(null), null);
         EnrichmentKey key = (EnrichmentKey) results.getKey();
         EnrichmentValue value = (EnrichmentValue) results.getValue();
-        Assert.assertEquals("dummy", key.indicator);
-        Assert.assertEquals("type", key.type);
-        Assert.assertEquals("dummy", value.getMetadata().get("indicator"));
+        assertEquals("dummy", key.indicator);
+        assertEquals("type", key.type);
+        assertEquals("dummy", value.getMetadata().get("indicator"));
     }
 
     @Test
@@ -77,8 +78,8 @@
         LookupKV results = Iterables.getFirst(handler.getExtractor().extract(null), null);
         EnrichmentKey key = (EnrichmentKey) results.getKey();
         EnrichmentValue value = (EnrichmentValue) results.getValue();
-        Assert.assertEquals("dummy", key.indicator);
-        Assert.assertEquals("type", key.type);
-        Assert.assertEquals("dummy", value.getMetadata().get("indicator"));
+        assertEquals("dummy", key.indicator);
+        assertEquals("type", key.type);
+        assertEquals("dummy", value.getMetadata().get("indicator"));
     }
 }
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/TransformFilterExtractorDecoratorTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/TransformFilterExtractorDecoratorTest.java
index 61443c2..2f9419f 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/TransformFilterExtractorDecoratorTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/TransformFilterExtractorDecoratorTest.java
@@ -24,11 +24,8 @@
 import org.apache.metron.enrichment.converter.EnrichmentValue;
 import org.apache.metron.enrichment.lookup.LookupKV;
 import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
@@ -36,6 +33,9 @@
 import java.io.IOException;
 import java.util.*;
 
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 public class TransformFilterExtractorDecoratorTest {
 
   @Mock
@@ -45,7 +45,7 @@
   LinkedHashMap<String, Object> config1;
   TransformFilterExtractorDecorator decorator;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     MockitoAnnotations.initMocks(this);
     config1 = new ObjectMapper().readValue(config1Contents, LinkedHashMap.class);
@@ -107,7 +107,7 @@
     LookupKV expectedLkv = new LookupKV<>(expectedLookupKey, expectedLookupValue);
     List<LookupKV> expectedLkvs = new ArrayList<>();
     expectedLkvs.add(expectedLkv);
-    Assert.assertThat(extracted, CoreMatchers.equalTo(expectedLkvs));
+    assertThat(extracted, CoreMatchers.equalTo(expectedLkvs));
   }
 
   @Test
@@ -124,7 +124,7 @@
     extractedLkvs.add(lkv);
     Mockito.when(extractor.extract("val1,val2,")).thenReturn(extractedLkvs);
     Iterable<LookupKV> extracted = decorator.extract("val1,val2,");
-    Assert.assertThat(extracted, CoreMatchers.equalTo(new ArrayList<>()));
+    assertThat(extracted, CoreMatchers.equalTo(new ArrayList<>()));
   }
 
   @Test
@@ -140,50 +140,43 @@
     extractedLkvs.add(lkv);
     Mockito.when(extractor.extract("val1,,val3")).thenReturn(extractedLkvs);
     Iterable<LookupKV> extracted = decorator.extract("val1,,val3");
-    Assert.assertThat(extracted, CoreMatchers.equalTo(new ArrayList<>()));
+    assertThat(extracted, CoreMatchers.equalTo(new ArrayList<>()));
   }
 
-  @Rule
-  public ExpectedException exception = ExpectedException.none();
-
   @Test
-  public void bad_value_transform_causes_exception() throws Exception {
+  public void bad_value_transform_causes_exception() {
     final int badValue = 5;
-    exception.expect(ClassCastException.class);
     config1.put(TransformFilterExtractorDecorator.ExtractorOptions.VALUE_TRANSFORM.toString(), badValue);
     decorator = new TransformFilterExtractorDecorator(extractor);
     decorator.setZkClient(Optional.of(zkClient));
-    decorator.initialize(config1);
+    assertThrows(ClassCastException.class, () -> decorator.initialize(config1));
   }
 
   @Test
-  public void bad_value_filter_causes_exception() throws Exception {
+  public void bad_value_filter_causes_exception() {
     final int badValue = 5;
-    exception.expect(ClassCastException.class);
     config1.put(TransformFilterExtractorDecorator.ExtractorOptions.VALUE_FILTER.toString(), badValue);
     decorator = new TransformFilterExtractorDecorator(extractor);
     decorator.setZkClient(Optional.of(zkClient));
-    decorator.initialize(config1);
+    assertThrows(ClassCastException.class, () -> decorator.initialize(config1));
   }
 
   @Test
-  public void bad_indicator_transform_causes_exception() throws Exception {
+  public void bad_indicator_transform_causes_exception() {
     final int badValue = 5;
-    exception.expect(ClassCastException.class);
     config1.put(TransformFilterExtractorDecorator.ExtractorOptions.INDICATOR_TRANSFORM.toString(), badValue);
     decorator = new TransformFilterExtractorDecorator(extractor);
     decorator.setZkClient(Optional.of(zkClient));
-    decorator.initialize(config1);
+    assertThrows(ClassCastException.class, () -> decorator.initialize(config1));
   }
 
   @Test
-  public void bad_indicator_filter_causes_exception() throws Exception {
+  public void bad_indicator_filter_causes_exception() {
     final int badValue = 5;
-    exception.expect(ClassCastException.class);
     config1.put(TransformFilterExtractorDecorator.ExtractorOptions.INDICATOR_FILTER.toString(), badValue);
     decorator = new TransformFilterExtractorDecorator(extractor);
     decorator.setZkClient(Optional.of(zkClient));
-    decorator.initialize(config1);
+    assertThrows(ClassCastException.class, () -> decorator.initialize(config1));
   }
 
 }
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/csv/CSVExtractorTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/csv/CSVExtractorTest.java
index fee504f..c180d77 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/csv/CSVExtractorTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/csv/CSVExtractorTest.java
@@ -23,11 +23,12 @@
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.converter.EnrichmentValue;
 import org.apache.metron.enrichment.lookup.LookupKV;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class CSVExtractorTest {
 
   /**
@@ -54,12 +55,12 @@
     ExtractorHandler handler = ExtractorHandler.load(testCSVConfig);
     ex.initialize(handler.getConfig());
 
-    Assert.assertEquals(0, (int)ex.getColumnMap().get("host") );
-    Assert.assertEquals(2, (int)ex.getColumnMap().get("meta") );
-    Assert.assertEquals(0, ex.getTypeColumnIndex() );
-    Assert.assertEquals(0, ex.getIndicatorColumn());
-    Assert.assertEquals("threat", ex.getType() );
-    Assert.assertEquals(',', ex.getParser().getSeparator());
+    assertEquals(0, (int)ex.getColumnMap().get("host") );
+    assertEquals(2, (int)ex.getColumnMap().get("meta") );
+    assertEquals(0, ex.getTypeColumnIndex() );
+    assertEquals(0, ex.getIndicatorColumn());
+    assertEquals("threat", ex.getType() );
+    assertEquals(',', ex.getParser().getSeparator());
 
   }
 
@@ -75,27 +76,27 @@
       LookupKV results = Iterables.getFirst(handler.getExtractor().extract("google.com,1.0,foo"), null);
       EnrichmentKey key = (EnrichmentKey) results.getKey();
       EnrichmentValue value = (EnrichmentValue) results.getValue();
-      Assert.assertEquals("google.com", key.indicator);
-      Assert.assertEquals("threat", key.type);
-      Assert.assertEquals("google.com", value.getMetadata().get("host"));
-      Assert.assertEquals("foo", value.getMetadata().get("meta"));
-      Assert.assertEquals(2, value.getMetadata().size());
+      assertEquals("google.com", key.indicator);
+      assertEquals("threat", key.type);
+      assertEquals("google.com", value.getMetadata().get("host"));
+      assertEquals("foo", value.getMetadata().get("meta"));
+      assertEquals(2, value.getMetadata().size());
     }
     {
       Iterable<LookupKV> results = handler.getExtractor().extract("#google.com,1.0,foo");
-      Assert.assertEquals(0, Iterables.size(results));
+      assertEquals(0, Iterables.size(results));
     }
     {
       Iterable<LookupKV> results = handler.getExtractor().extract("");
-      Assert.assertEquals(0, Iterables.size(results));
+      assertEquals(0, Iterables.size(results));
     }
     {
       Iterable<LookupKV> results = handler.getExtractor().extract(" ");
-      Assert.assertEquals(0, Iterables.size(results));
+      assertEquals(0, Iterables.size(results));
     }
     {
       Iterable<LookupKV> results = handler.getExtractor().extract(null);
-      Assert.assertEquals(0, Iterables.size(results));
+      assertEquals(0, Iterables.size(results));
     }
   }
 }
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/stix/StixExtractorTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/stix/StixExtractorTest.java
index 68855a6..17b2b46 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/stix/StixExtractorTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/stix/StixExtractorTest.java
@@ -19,26 +19,29 @@
 
 import com.google.common.base.Joiner;
 import com.google.common.collect.Iterables;
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
-import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
 import org.apache.metron.dataloads.extractor.Extractor;
 import org.apache.metron.dataloads.extractor.ExtractorHandler;
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.lookup.LookupKV;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import java.io.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class StixExtractorTest {
   private String stixDoc;
 
   private String stixDocWithoutCondition;
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     stixDoc = Joiner.on("\n").join(IOUtils.readLines(new InputStreamReader(new FileInputStream(new File("src/test/resources/stix_example.xml")),
         StandardCharsets.UTF_8)));
@@ -93,10 +96,10 @@
         Extractor extractor = handler.getExtractor();
         Iterable<LookupKV> results = extractor.extract(stixDoc);
 
-        Assert.assertEquals(3, Iterables.size(results));
-        Assert.assertEquals("10.0.0.0", ((EnrichmentKey) (Iterables.get(results, 0).getKey())).indicator);
-        Assert.assertEquals("10.0.0.1", ((EnrichmentKey) (Iterables.get(results, 1).getKey())).indicator);
-        Assert.assertEquals("10.0.0.2", ((EnrichmentKey) (Iterables.get(results, 2).getKey())).indicator);
+        assertEquals(3, Iterables.size(results));
+        assertEquals("10.0.0.0", ((EnrichmentKey) (Iterables.get(results, 0).getKey())).indicator);
+        assertEquals("10.0.0.1", ((EnrichmentKey) (Iterables.get(results, 1).getKey())).indicator);
+        assertEquals("10.0.0.2", ((EnrichmentKey) (Iterables.get(results, 2).getKey())).indicator);
       }
       catch(Exception ex) {
         throw new RuntimeException(ex.getMessage(), ex);
@@ -108,10 +111,10 @@
         ExtractorHandler handler = ExtractorHandler.load(stixConfig);
         Extractor extractor = handler.getExtractor();
         Iterable<LookupKV> results = extractor.extract(stixDoc);
-        Assert.assertEquals(3, Iterables.size(results));
-        Assert.assertEquals("10.0.0.0", ((EnrichmentKey) (Iterables.get(results, 0).getKey())).indicator);
-        Assert.assertEquals("10.0.0.1", ((EnrichmentKey) (Iterables.get(results, 1).getKey())).indicator);
-        Assert.assertEquals("10.0.0.2", ((EnrichmentKey) (Iterables.get(results, 2).getKey())).indicator);
+        assertEquals(3, Iterables.size(results));
+        assertEquals("10.0.0.0", ((EnrichmentKey) (Iterables.get(results, 0).getKey())).indicator);
+        assertEquals("10.0.0.1", ((EnrichmentKey) (Iterables.get(results, 1).getKey())).indicator);
+        assertEquals("10.0.0.2", ((EnrichmentKey) (Iterables.get(results, 2).getKey())).indicator);
       }
       catch(Exception ex) {
         throw new RuntimeException(ex.getMessage(), ex);
@@ -123,7 +126,7 @@
         ExtractorHandler handler = ExtractorHandler.load(stixConfigOnlyIPV6);
         Extractor extractor = handler.getExtractor();
         Iterable<LookupKV> results = extractor.extract(stixDoc);
-        Assert.assertEquals(0, Iterables.size(results));
+        assertEquals(0, Iterables.size(results));
       }
       catch(Exception ex) {
         throw new RuntimeException(ex.getMessage(), ex);
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/stix/URIHandlerTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/stix/URIHandlerTest.java
index ff41152..e00ffdf 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/stix/URIHandlerTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/extractor/stix/URIHandlerTest.java
@@ -19,15 +19,13 @@
 
 import com.google.common.collect.Iterables;
 import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.dataloads.extractor.stix.types.URIHandler;
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.lookup.LookupKV;
-import org.junit.Assert;
-import org.junit.Test;
-import org.mitre.cybox.objects.URIObjectType;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
-import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class URIHandlerTest {
 
@@ -88,10 +86,10 @@
     StixExtractor extractor = new StixExtractor();
     extractor.initialize(new HashMap<>());
     Iterable<LookupKV> kvs = extractor.extract(uriHandlerObject);
-    Assert.assertEquals(1, Iterables.size(kvs));
+    assertEquals(1, Iterables.size(kvs));
     LookupKV kv = Iterables.getFirst(kvs, null);
     EnrichmentKey key = (EnrichmentKey) kv.getKey();
-    Assert.assertEquals("http://www.kotimi.com/alpha/gtex/", key.getIndicator());
-    Assert.assertEquals("uriobjecttype", key.type);
+    assertEquals("http://www.kotimi.com/alpha/gtex/", key.getIndicator());
+    assertEquals("uriobjecttype", key.type);
   }
 }
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/HBaseEnrichmentConverterTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/HBaseEnrichmentConverterTest.java
index fff1d9b..460d95e 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/HBaseEnrichmentConverterTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/HBaseEnrichmentConverterTest.java
@@ -21,17 +21,19 @@
 import org.apache.hadoop.hbase.client.Get;
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.hadoop.hbase.client.Result;
-import org.apache.metron.enrichment.converter.HbaseConverter;
 import org.apache.metron.enrichment.converter.EnrichmentConverter;
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.converter.EnrichmentValue;
+import org.apache.metron.enrichment.converter.HbaseConverter;
 import org.apache.metron.enrichment.lookup.LookupKV;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.HashMap;
 
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 
 public class HBaseEnrichmentConverterTest {
     public static byte[] keyBytes = new byte[] {
@@ -60,7 +62,7 @@
     @Test
     public void testKeySerializationRemainsConstant() {
         byte[] raw = key.toBytes();
-        Assert.assertArrayEquals(raw, keyBytes);
+        assertArrayEquals(raw, keyBytes);
     }
     @Test
     public void testKeySerialization() {
@@ -68,7 +70,7 @@
 
         EnrichmentKey deserialized = new EnrichmentKey();
         deserialized.fromBytes(serialized);
-        Assert.assertEquals(key, deserialized);
+        assertEquals(key, deserialized);
     }
 
     @Test
@@ -76,20 +78,20 @@
         HbaseConverter<EnrichmentKey, EnrichmentValue> converter = new EnrichmentConverter();
         Put put = converter.toPut("cf", key, value);
         LookupKV<EnrichmentKey, EnrichmentValue> converted= converter.fromPut(put, "cf");
-        Assert.assertEquals(results, converted);
+        assertEquals(results, converted);
     }
     @Test
     public void testResult() throws IOException {
         HbaseConverter<EnrichmentKey, EnrichmentValue> converter = new EnrichmentConverter();
         Result r = converter.toResult("cf", key, value);
         LookupKV<EnrichmentKey, EnrichmentValue> converted= converter.fromResult(r, "cf");
-        Assert.assertEquals(results, converted);
+        assertEquals(results, converted);
     }
 
     @Test
-    public void testGet() throws Exception {
+    public void testGet() {
         HbaseConverter<EnrichmentKey, EnrichmentValue> converter = new EnrichmentConverter();
         Get get = converter.toGet("cf", key);
-        Assert.assertArrayEquals(key.toBytes(), get.getRow());
+        assertArrayEquals(key.toBytes(), get.getRow());
     }
 }
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/mr/BulkLoadMapperTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/mr/BulkLoadMapperTest.java
index 82233cf..678cd15 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/mr/BulkLoadMapperTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/mr/BulkLoadMapperTest.java
@@ -26,13 +26,15 @@
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.converter.EnrichmentValue;
 import org.apache.metron.enrichment.lookup.LookupKV;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 public class BulkLoadMapperTest {
     /**
          {
@@ -68,23 +70,23 @@
         }});
         {
             mapper.map(null, new Text("#google.com,1,foo"), null);
-            Assert.assertTrue(puts.size() == 0);
+            assertEquals(0, puts.size());
         }
         {
             mapper.map(null, new Text("google.com,1,foo"), null);
-            Assert.assertTrue(puts.size() == 1);
+            assertEquals(1, puts.size());
             EnrichmentKey expectedKey = new EnrichmentKey() {{
                 indicator = "google.com";
                 type = "threat";
             }};
             EnrichmentConverter converter = new EnrichmentConverter();
             Put put = puts.get(new ImmutableBytesWritable(expectedKey.toBytes()));
-            Assert.assertNotNull(puts);
+            assertNotNull(puts);
             LookupKV<EnrichmentKey, EnrichmentValue> results = converter.fromPut(put, "cf");
-            Assert.assertEquals(results.getKey().indicator, "google.com");
-            Assert.assertEquals(results.getValue().getMetadata().size(), 2);
-            Assert.assertEquals(results.getValue().getMetadata().get("meta"), "foo");
-            Assert.assertEquals(results.getValue().getMetadata().get("host"), "google.com");
+            assertEquals(results.getKey().indicator, "google.com");
+            assertEquals(results.getValue().getMetadata().size(), 2);
+            assertEquals(results.getValue().getMetadata().get("meta"), "foo");
+            assertEquals(results.getValue().getMetadata().get("host"), "google.com");
         }
 
     }
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/mr/LeastRecentlyUsedPrunerIntegrationTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/mr/LeastRecentlyUsedPrunerIntegrationTest.java
index 947a5f4..612bdac 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/mr/LeastRecentlyUsedPrunerIntegrationTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/hbase/mr/LeastRecentlyUsedPrunerIntegrationTest.java
@@ -18,11 +18,6 @@
 package org.apache.metron.dataloads.hbase.mr;
 
 import com.google.common.collect.Iterables;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.PosixParser;
 import org.apache.hadoop.conf.Configuration;
@@ -41,10 +36,17 @@
 import org.apache.metron.enrichment.lookup.accesstracker.BloomAccessTracker;
 import org.apache.metron.enrichment.lookup.accesstracker.PersistentAccessTracker;
 import org.apache.metron.test.utils.UnitTestHelper;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class LeastRecentlyUsedPrunerIntegrationTest {
     /** The test util. */
@@ -61,7 +63,7 @@
     private static final String timeFormat = "georgia";
     private static Configuration config = null;
 
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws Exception {
         UnitTestHelper.setJavaLoggingLevel(Level.SEVERE);
         Map.Entry<HBaseTestingUtility, Configuration> kv = HBaseUtil.INSTANCE.create(true);
@@ -71,7 +73,7 @@
         atTable = testUtil.createTable(Bytes.toBytes(atTableName), Bytes.toBytes(atCF));
     }
 
-    @AfterClass
+    @AfterAll
     public static void teardown() throws Exception {
         HBaseUtil.INSTANCE.teardown(testUtil);
     }
@@ -92,12 +94,12 @@
         String[] otherArgs = new GenericOptionsParser(conf, argv).getRemainingArgs();
 
         CommandLine cli = LeastRecentlyUsedPruner.BulkLoadOptions.parse(new PosixParser(), otherArgs);
-        Assert.assertEquals(cf, LeastRecentlyUsedPruner.BulkLoadOptions.COLUMN_FAMILY.get(cli).trim());
-        Assert.assertEquals(tableName,LeastRecentlyUsedPruner.BulkLoadOptions.TABLE.get(cli).trim());
-        Assert.assertEquals(atTableName,LeastRecentlyUsedPruner.BulkLoadOptions.ACCESS_TABLE.get(cli).trim());
-        Assert.assertEquals(atCF,LeastRecentlyUsedPruner.BulkLoadOptions.ACCESS_COLUMN_FAMILY.get(cli).trim());
-        Assert.assertEquals(beginTime, LeastRecentlyUsedPruner.BulkLoadOptions.AS_OF_TIME.get(cli).trim());
-        Assert.assertEquals(timeFormat, LeastRecentlyUsedPruner.BulkLoadOptions.AS_OF_TIME_FORMAT.get(cli).trim());
+        assertEquals(cf, LeastRecentlyUsedPruner.BulkLoadOptions.COLUMN_FAMILY.get(cli).trim());
+        assertEquals(tableName,LeastRecentlyUsedPruner.BulkLoadOptions.TABLE.get(cli).trim());
+        assertEquals(atTableName,LeastRecentlyUsedPruner.BulkLoadOptions.ACCESS_TABLE.get(cli).trim());
+        assertEquals(atCF,LeastRecentlyUsedPruner.BulkLoadOptions.ACCESS_COLUMN_FAMILY.get(cli).trim());
+        assertEquals(beginTime, LeastRecentlyUsedPruner.BulkLoadOptions.AS_OF_TIME.get(cli).trim());
+        assertEquals(timeFormat, LeastRecentlyUsedPruner.BulkLoadOptions.AS_OF_TIME_FORMAT.get(cli).trim());
     }
 
     @Test
@@ -120,7 +122,7 @@
                                                   )
                                           )
                          );
-            Assert.assertTrue(lookup.exists((EnrichmentKey)k, new EnrichmentLookup.HBaseContext(testTable, cf), true));
+            assertTrue(lookup.exists((EnrichmentKey)k, new EnrichmentLookup.HBaseContext(testTable, cf), true));
         }
         pat.persist(true);
         for(LookupKey k : goodKeysOtherHalf) {
@@ -131,12 +133,12 @@
                                                                   )
                                          )
                          );
-            Assert.assertTrue(lookup.exists((EnrichmentKey)k, new EnrichmentLookup.HBaseContext(testTable, cf), true));
+            assertTrue(lookup.exists((EnrichmentKey)k, new EnrichmentLookup.HBaseContext(testTable, cf), true));
         }
         testUtil.flush();
-        Assert.assertFalse(lookup.getAccessTracker().hasSeen(goodKeysHalf.get(0)));
+        assertFalse(lookup.getAccessTracker().hasSeen(goodKeysHalf.get(0)));
         for(LookupKey k : goodKeysOtherHalf) {
-            Assert.assertTrue(lookup.getAccessTracker().hasSeen(k));
+            assertTrue(lookup.getAccessTracker().hasSeen(k));
         }
         pat.persist(true);
         {
@@ -149,16 +151,16 @@
             );
         }
         testUtil.flush();
-        Assert.assertFalse(lookup.getAccessTracker().hasSeen(badKey.get(0)));
+        assertFalse(lookup.getAccessTracker().hasSeen(badKey.get(0)));
 
 
         Job job = LeastRecentlyUsedPruner.createJob(config, tableName, cf, atTableName, atCF, ts);
-        Assert.assertTrue(job.waitForCompletion(true));
+        assertTrue(job.waitForCompletion(true));
         for(LookupKey k : goodKeys) {
-            Assert.assertTrue(lookup.exists((EnrichmentKey)k, new EnrichmentLookup.HBaseContext(testTable, cf), true));
+            assertTrue(lookup.exists((EnrichmentKey)k, new EnrichmentLookup.HBaseContext(testTable, cf), true));
         }
         for(LookupKey k : badKey) {
-            Assert.assertFalse(lookup.exists((EnrichmentKey)k, new EnrichmentLookup.HBaseContext(testTable, cf), true));
+            assertFalse(lookup.exists((EnrichmentKey)k, new EnrichmentLookup.HBaseContext(testTable, cf), true));
         }
 
     }
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/flatfile/SimpleEnrichmentFlatFileLoaderIntegrationTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/flatfile/SimpleEnrichmentFlatFileLoaderIntegrationTest.java
index 274989a..27649b6 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/flatfile/SimpleEnrichmentFlatFileLoaderIntegrationTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/flatfile/SimpleEnrichmentFlatFileLoaderIntegrationTest.java
@@ -17,23 +17,6 @@
  */
 package org.apache.metron.dataloads.nonbulk.flatfile;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.startsWith;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.StandardOpenOption;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.logging.Level;
-import java.util.zip.GZIPOutputStream;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.PosixParser;
@@ -57,10 +40,30 @@
 import org.apache.metron.enrichment.converter.EnrichmentValue;
 import org.apache.metron.enrichment.lookup.LookupKV;
 import org.apache.metron.test.utils.UnitTestHelper;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.OutputStreamWriter;
+import java.io.PrintWriter;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.StandardOpenOption;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.zip.GZIPOutputStream;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipOutputStream;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.startsWith;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class SimpleEnrichmentFlatFileLoaderIntegrationTest {
 
@@ -185,7 +188,7 @@
   @Multiline
   private static String customLineByLineExtractorConfig;
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() throws Exception {
     UnitTestHelper.setJavaLoggingLevel(Level.SEVERE);
     Map.Entry<HBaseTestingUtility, Configuration> kv = HBaseUtil.INSTANCE.create(true);
@@ -289,7 +292,7 @@
     ConfigurationsUtils.writeGlobalConfigToZookeeper(globalConfig.getBytes(StandardCharsets.UTF_8), zookeeperUrl);
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() throws Exception {
     HBaseUtil.INSTANCE.teardown(testUtil);
     file1.delete();
@@ -315,14 +318,14 @@
     String[] otherArgs = new GenericOptionsParser(config, argv).getRemainingArgs();
 
     CommandLine cli = LoadOptions.parse(new PosixParser(), otherArgs);
-    Assert.assertEquals(extractorJson, LoadOptions.EXTRACTOR_CONFIG.get(cli).trim());
-    Assert.assertEquals(cf, LoadOptions.HBASE_CF.get(cli).trim());
-    Assert.assertEquals(tableName, LoadOptions.HBASE_TABLE.get(cli).trim());
-    Assert.assertEquals(enrichmentJson, LoadOptions.ENRICHMENT_CONFIG.get(cli).trim());
-    Assert.assertEquals(csvFile, LoadOptions.INPUT.get(cli).trim());
-    Assert.assertEquals(log4jProperty, LoadOptions.LOG4J_PROPERTIES.get(cli).trim());
-    Assert.assertEquals("2", LoadOptions.NUM_THREADS.get(cli).trim());
-    Assert.assertEquals("128", LoadOptions.BATCH_SIZE.get(cli).trim());
+    assertEquals(extractorJson, LoadOptions.EXTRACTOR_CONFIG.get(cli).trim());
+    assertEquals(cf, LoadOptions.HBASE_CF.get(cli).trim());
+    assertEquals(tableName, LoadOptions.HBASE_TABLE.get(cli).trim());
+    assertEquals(enrichmentJson, LoadOptions.ENRICHMENT_CONFIG.get(cli).trim());
+    assertEquals(csvFile, LoadOptions.INPUT.get(cli).trim());
+    assertEquals(log4jProperty, LoadOptions.LOG4J_PROPERTIES.get(cli).trim());
+    assertEquals("2", LoadOptions.NUM_THREADS.get(cli).trim());
+    assertEquals("128", LoadOptions.BATCH_SIZE.get(cli).trim());
   }
 
   @Test
@@ -340,12 +343,12 @@
       results.add(converter.fromResult(r, cf));
       testTable.delete(new Delete(r.getRow()));
     }
-    Assert.assertEquals(NUM_LINES, results.size());
-    Assert.assertTrue(results.get(0).getKey().indicator.startsWith("google"));
-    Assert.assertEquals(results.get(0).getKey().type, "enrichment");
-    Assert.assertEquals(results.get(0).getValue().getMetadata().size(), 2);
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith("google"));
+    assertEquals(NUM_LINES, results.size());
+    assertTrue(results.get(0).getKey().indicator.startsWith("google"));
+    assertEquals(results.get(0).getKey().type, "enrichment");
+    assertEquals(results.get(0).getValue().getMetadata().size(), 2);
+    assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
+    assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith("google"));
   }
 
   @Test
@@ -363,12 +366,12 @@
       results.add(converter.fromResult(r, cf));
       testTable.delete(new Delete(r.getRow()));
     }
-    Assert.assertEquals(NUM_LINES, results.size());
-    Assert.assertTrue(results.get(0).getKey().indicator.startsWith("google"));
-    Assert.assertEquals(results.get(0).getKey().type, "enrichment");
-    Assert.assertEquals(results.get(0).getValue().getMetadata().size(), 2);
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith("google"));
+    assertEquals(NUM_LINES, results.size());
+    assertTrue(results.get(0).getKey().indicator.startsWith("google"));
+    assertEquals(results.get(0).getKey().type, "enrichment");
+    assertEquals(results.get(0).getValue().getMetadata().size(), 2);
+    assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
+    assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith("google"));
 
   }
 
@@ -387,12 +390,12 @@
       results.add(converter.fromResult(r, cf));
       testTable.delete(new Delete(r.getRow()));
     }
-    Assert.assertEquals(NUM_LINES, results.size());
-    Assert.assertTrue(results.get(0).getKey().indicator.startsWith("google"));
-    Assert.assertEquals(results.get(0).getKey().type, "enrichment");
-    Assert.assertEquals(results.get(0).getValue().getMetadata().size(), 2);
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith("google"));
+    assertEquals(NUM_LINES, results.size());
+    assertTrue(results.get(0).getKey().indicator.startsWith("google"));
+    assertEquals(results.get(0).getKey().type, "enrichment");
+    assertEquals(results.get(0).getValue().getMetadata().size(), 2);
+    assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
+    assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith("google"));
 
   }
 
@@ -411,12 +414,12 @@
       results.add(converter.fromResult(r, cf));
       testTable.delete(new Delete(r.getRow()));
     }
-    Assert.assertEquals(2, results.size());
-    Assert.assertTrue(results.get(0).getKey().indicator.startsWith("google"));
-    Assert.assertEquals(results.get(0).getKey().type, "enrichment");
-    Assert.assertEquals(results.get(0).getValue().getMetadata().size(), 2);
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith( "google"));
+    assertEquals(2, results.size());
+    assertTrue(results.get(0).getKey().indicator.startsWith("google"));
+    assertEquals(results.get(0).getKey().type, "enrichment");
+    assertEquals(results.get(0).getValue().getMetadata().size(), 2);
+    assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
+    assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith( "google"));
 
   }
 
@@ -439,12 +442,12 @@
       results.add(converter.fromResult(r, cf));
       testTable.delete(new Delete(r.getRow()));
     }
-    Assert.assertEquals(NUM_LINES, results.size());
-    Assert.assertTrue(results.get(0).getKey().indicator.startsWith("google"));
-    Assert.assertEquals(results.get(0).getKey().type, "enrichment");
-    Assert.assertEquals(results.get(0).getValue().getMetadata().size(), 2);
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
-    Assert.assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith("google"));
+    assertEquals(NUM_LINES, results.size());
+    assertTrue(results.get(0).getKey().indicator.startsWith("google"));
+    assertEquals(results.get(0).getKey().type, "enrichment");
+    assertEquals(results.get(0).getValue().getMetadata().size(), 2);
+    assertTrue(results.get(0).getValue().getMetadata().get("meta").toString().startsWith("foo"));
+    assertTrue(results.get(0).getValue().getMetadata().get("host").toString().startsWith("google"));
   }
 
   @Test
@@ -462,13 +465,13 @@
       results.add(converter.fromResult(r, cf));
       testTable.delete(new Delete(r.getRow()));
     }
-    Assert.assertEquals(NUM_LINES, results.size());
-    Assert.assertThat(results.get(0).getKey().getIndicator(), startsWith("GOOGLE"));
-    Assert.assertThat(results.get(0).getKey().type, equalTo("enrichment"));
-    Assert.assertThat(results.get(0).getValue().getMetadata().size(), equalTo(3));
-    Assert.assertThat(results.get(0).getValue().getMetadata().get("meta").toString(), startsWith("foo"));
-    Assert.assertThat(results.get(0).getValue().getMetadata().get("empty").toString(), startsWith("valfromglobalconfig"));
-    Assert.assertThat(results.get(0).getValue().getMetadata().get("host").toString(), startsWith("GOOGLE"));
+    assertEquals(NUM_LINES, results.size());
+    assertThat(results.get(0).getKey().getIndicator(), startsWith("GOOGLE"));
+    assertThat(results.get(0).getKey().type, equalTo("enrichment"));
+    assertThat(results.get(0).getValue().getMetadata().size(), equalTo(3));
+    assertThat(results.get(0).getValue().getMetadata().get("meta").toString(), startsWith("foo"));
+    assertThat(results.get(0).getValue().getMetadata().get("empty").toString(), startsWith("valfromglobalconfig"));
+    assertThat(results.get(0).getValue().getMetadata().get("host").toString(), startsWith("GOOGLE"));
   }
 
   @Test
@@ -486,12 +489,12 @@
       results.add(converter.fromResult(r, cf));
       testTable.delete(new Delete(r.getRow()));
     }
-    Assert.assertEquals(NUM_LINES, results.size());
-    Assert.assertThat(results.get(0).getKey().getIndicator(), startsWith("GOOGLE"));
-    Assert.assertThat(results.get(0).getKey().type, equalTo("enrichment"));
-    Assert.assertThat(results.get(0).getValue().getMetadata().size(), equalTo(2));
-    Assert.assertThat(results.get(0).getValue().getMetadata().get("meta").toString(), startsWith("foo"));
-    Assert.assertThat(results.get(0).getValue().getMetadata().get("host").toString(), startsWith("GOOGLE"));
+    assertEquals(NUM_LINES, results.size());
+    assertThat(results.get(0).getKey().getIndicator(), startsWith("GOOGLE"));
+    assertThat(results.get(0).getKey().type, equalTo("enrichment"));
+    assertThat(results.get(0).getValue().getMetadata().size(), equalTo(2));
+    assertThat(results.get(0).getValue().getMetadata().get("meta").toString(), startsWith("foo"));
+    assertThat(results.get(0).getValue().getMetadata().get("host").toString(), startsWith("GOOGLE"));
   }
 
 }
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/flatfile/SimpleFlatFileSummarizerTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/flatfile/SimpleFlatFileSummarizerTest.java
index 2b6f8e4..6aca912 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/flatfile/SimpleFlatFileSummarizerTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/flatfile/SimpleFlatFileSummarizerTest.java
@@ -20,7 +20,6 @@
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.PosixParser;
@@ -34,15 +33,18 @@
 import org.apache.metron.dataloads.nonbulk.flatfile.writer.InvalidWriterOutput;
 import org.apache.metron.dataloads.nonbulk.flatfile.writer.Writer;
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.*;
 import java.util.concurrent.atomic.AtomicReference;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class SimpleFlatFileSummarizerTest {
   /**
    {
@@ -138,11 +140,11 @@
     String[] otherArgs = new GenericOptionsParser(config, argv).getRemainingArgs();
 
     CommandLine cli = SummarizeOptions.parse(new PosixParser(), otherArgs);
-    Assert.assertEquals("extractor.json", SummarizeOptions.EXTRACTOR_CONFIG.get(cli).trim());
-    Assert.assertEquals("input.csv", SummarizeOptions.INPUT.get(cli).trim());
-    Assert.assertEquals("log4j", SummarizeOptions.LOG4J_PROPERTIES.get(cli).trim());
-    Assert.assertEquals("2", SummarizeOptions.NUM_THREADS.get(cli).trim());
-    Assert.assertEquals("128", SummarizeOptions.BATCH_SIZE.get(cli).trim());
+    assertEquals("extractor.json", SummarizeOptions.EXTRACTOR_CONFIG.get(cli).trim());
+    assertEquals("input.csv", SummarizeOptions.INPUT.get(cli).trim());
+    assertEquals("log4j", SummarizeOptions.LOG4J_PROPERTIES.get(cli).trim());
+    assertEquals("2", SummarizeOptions.NUM_THREADS.get(cli).trim());
+    assertEquals("128", SummarizeOptions.BATCH_SIZE.get(cli).trim());
   }
 
   public static class InMemoryLocation implements RawLocation {
@@ -255,7 +257,7 @@
     String expr = "MAP_GET(DOMAIN_REMOVE_TLD(domain), s) > 0";
     for(String domain : domains) {
       Boolean b = (Boolean)StellarProcessorUtils.run(expr, ImmutableMap.of("s", finalObj.get(), "domain", domain));
-      Assert.assertTrue("Can't find " + domain, b);
+      assertTrue(b, "Can't find " + domain);
     }
   }
 
@@ -287,7 +289,7 @@
     String expr = "MAP_GET(DOMAIN_REMOVE_TLD(domain), s) > 0";
     for(String domain : domains) {
       Boolean b = (Boolean)StellarProcessorUtils.run(expr, ImmutableMap.of("s", finalObj.get(), "domain", domain));
-      Assert.assertTrue("Can't find " + domain, b);
+      assertTrue(b, "Can't find " + domain);
     }
   }
 
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/geo/MaxmindDbEnrichmentLoaderTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/geo/MaxmindDbEnrichmentLoaderTest.java
index 126b28b..b3232e3 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/geo/MaxmindDbEnrichmentLoaderTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/geo/MaxmindDbEnrichmentLoaderTest.java
@@ -17,9 +17,6 @@
  */
 package org.apache.metron.dataloads.nonbulk.geo;
 
-import static org.junit.Assert.assertTrue;
-
-import java.io.File;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.PosixParser;
 import org.apache.hadoop.conf.Configuration;
@@ -28,13 +25,17 @@
 import org.apache.hadoop.util.GenericOptionsParser;
 import org.apache.metron.common.utils.CompressionStrategies;
 import org.apache.metron.integration.utils.TestUtils;
-import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
 import org.junit.rules.TemporaryFolder;
 
+import java.io.File;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+@EnableRuleMigrationSupport
 public class MaxmindDbEnrichmentLoaderTest {
   private class MockMaxmindDbEnrichmentLoader extends MaxmindDbEnrichmentLoader {
     @Override
@@ -48,7 +49,7 @@
   private File remoteDir;
   private File tmpDir;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
       testFolder.create();
       remoteDir = testFolder.newFolder("remoteDir");
@@ -68,12 +69,12 @@
     String[] otherArgs = new GenericOptionsParser(argv).getRemainingArgs();
 
     CommandLine cli = MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.parse(new PosixParser(), otherArgs);
-    Assert.assertEquals("testGeoUrl", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.GEO_URL.get(cli).trim());
-    Assert.assertEquals("testAsnUrl", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.ASN_URL.get(cli).trim());
-    Assert.assertEquals("/test/remoteDirGeo", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.REMOTE_GEO_DIR.get(cli).trim());
-    Assert.assertEquals("/test/remoteDirAsn", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.REMOTE_ASN_DIR.get(cli).trim());
-    Assert.assertEquals("/test/tmpDir", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.TMP_DIR.get(cli).trim());
-    Assert.assertEquals("test:2181", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.ZK_QUORUM.get(cli).trim());
+    assertEquals("testGeoUrl", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.GEO_URL.get(cli).trim());
+    assertEquals("testAsnUrl", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.ASN_URL.get(cli).trim());
+    assertEquals("/test/remoteDirGeo", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.REMOTE_GEO_DIR.get(cli).trim());
+    assertEquals("/test/remoteDirAsn", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.REMOTE_ASN_DIR.get(cli).trim());
+    assertEquals("/test/tmpDir", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.TMP_DIR.get(cli).trim());
+    assertEquals("test:2181", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.ZK_QUORUM.get(cli).trim());
   }
 
   @Test
@@ -88,10 +89,10 @@
     String[] otherArgs = new GenericOptionsParser(argv).getRemainingArgs();
 
     CommandLine cli = MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.parse(new PosixParser(), otherArgs);
-    Assert.assertEquals("testGeoUrl", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.GEO_URL.get(cli).trim());
-    Assert.assertEquals("/test/remoteDir", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.REMOTE_GEO_DIR.get(cli).trim());
-    Assert.assertEquals("/test/tmpDir", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.TMP_DIR.get(cli).trim());
-    Assert.assertEquals("test:2181", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.ZK_QUORUM.get(cli).trim());
+    assertEquals("testGeoUrl", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.GEO_URL.get(cli).trim());
+    assertEquals("/test/remoteDir", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.REMOTE_GEO_DIR.get(cli).trim());
+    assertEquals("/test/tmpDir", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.TMP_DIR.get(cli).trim());
+    assertEquals("test:2181", MaxmindDbEnrichmentLoader.GeoEnrichmentOptions.ZK_QUORUM.get(cli).trim());
   }
 
   @Test
@@ -117,9 +118,6 @@
     assertTrue(fs.exists(new Path(remoteDir + "/" + dbFile.getName())));
   }
 
-  @Rule
-  public ExpectedException exception = ExpectedException.none();
-
   @Test
   public void loader_throws_exception_on_bad_gzip_file() throws Exception {
     File dbFile = new File(remoteDir.getAbsolutePath() + "/MaxmindDbEnrichmentLoaderTest.mmdb");
@@ -127,10 +125,9 @@
 
     String geoUrl = "file://" + dbFile.getAbsolutePath();
     int numRetries = 2;
-    exception.expect(IllegalStateException.class);
-    exception.expectMessage("Unable to download geo enrichment database.");
     MaxmindDbEnrichmentLoader loader = new MockMaxmindDbEnrichmentLoader();
-    loader.downloadGeoFile(geoUrl, tmpDir.getAbsolutePath(), numRetries);
+    IllegalStateException e = assertThrows(IllegalStateException.class, () -> loader.downloadGeoFile(geoUrl, tmpDir.getAbsolutePath(), numRetries));
+    assertEquals("Unable to download geo enrichment database.", e.getMessage());
   }
 
 }
diff --git a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/taxii/TaxiiIntegrationTest.java b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/taxii/TaxiiIntegrationTest.java
index 6cb94d3..0af4f5d 100644
--- a/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/taxii/TaxiiIntegrationTest.java
+++ b/metron-platform/metron-data-management/src/test/java/org/apache/metron/dataloads/nonbulk/taxii/TaxiiIntegrationTest.java
@@ -24,8 +24,8 @@
 import org.apache.commons.cli.PosixParser;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.hbase.client.Put;
+import org.apache.hadoop.hbase.client.Table;
 import org.apache.hadoop.util.GenericOptionsParser;
 import org.apache.metron.dataloads.extractor.Extractor;
 import org.apache.metron.dataloads.extractor.TransformFilterExtractorDecorator;
@@ -34,22 +34,27 @@
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.converter.EnrichmentValue;
 import org.apache.metron.enrichment.lookup.LookupKV;
-import org.apache.metron.hbase.mock.MockHTable;
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
-import org.junit.*;
+import org.apache.metron.hbase.mock.MockHTable;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.HashSet;
 import java.util.Set;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class TaxiiIntegrationTest {
 
-    @BeforeClass
+    @BeforeAll
     public static void setup() throws IOException {
         MockTaxiiService.start(8282);
     }
 
-    @AfterClass
+    @AfterAll
     public static void teardown() {
         MockTaxiiService.shutdown();
         MockHBaseTableProvider.clear();
@@ -83,12 +88,12 @@
         String[] otherArgs = new GenericOptionsParser(conf, argv).getRemainingArgs();
 
         CommandLine cli = TaxiiLoader.TaxiiOptions.parse(new PosixParser(), otherArgs);
-        Assert.assertEquals(extractorJson,TaxiiLoader.TaxiiOptions.EXTRACTOR_CONFIG.get(cli).trim());
-        Assert.assertEquals(connectionConfig, TaxiiLoader.TaxiiOptions.CONNECTION_CONFIG.get(cli).trim());
-        Assert.assertEquals(beginTime,TaxiiLoader.TaxiiOptions.BEGIN_TIME.get(cli).trim());
-        Assert.assertEquals(enrichmentJson,TaxiiLoader.TaxiiOptions.ENRICHMENT_CONFIG.get(cli).trim());
-        Assert.assertEquals(timeInteval,TaxiiLoader.TaxiiOptions.TIME_BETWEEN_POLLS.get(cli).trim());
-        Assert.assertEquals(log4jProperty, TaxiiLoader.TaxiiOptions.LOG4J_PROPERTIES.get(cli).trim());
+        assertEquals(extractorJson,TaxiiLoader.TaxiiOptions.EXTRACTOR_CONFIG.get(cli).trim());
+        assertEquals(connectionConfig, TaxiiLoader.TaxiiOptions.CONNECTION_CONFIG.get(cli).trim());
+        assertEquals(beginTime,TaxiiLoader.TaxiiOptions.BEGIN_TIME.get(cli).trim());
+        assertEquals(enrichmentJson,TaxiiLoader.TaxiiOptions.ENRICHMENT_CONFIG.get(cli).trim());
+        assertEquals(timeInteval,TaxiiLoader.TaxiiOptions.TIME_BETWEEN_POLLS.get(cli).trim());
+        assertEquals(log4jProperty, TaxiiLoader.TaxiiOptions.LOG4J_PROPERTIES.get(cli).trim());
     }
 
     @Test
@@ -110,15 +115,15 @@
             MockHTable table = (MockHTable) provider.getTable(config, "threat_intel");
             maliciousDomains = getIndicators("domainname:FQDN", table.getPutLog(), "cf");
         }
-        Assert.assertTrue(maliciousDomains.contains("www.office-112.com"));
-        Assert.assertEquals(numStringsMatch(MockTaxiiService.pollMsg, "DomainNameObj:Value condition=\"Equals\""), maliciousDomains.size());
+        assertTrue(maliciousDomains.contains("www.office-112.com"));
+        assertEquals(numStringsMatch(MockTaxiiService.pollMsg, "DomainNameObj:Value condition=\"Equals\""), maliciousDomains.size());
         Set<String> maliciousAddresses;
         {
             MockHTable table = (MockHTable) provider.getTable(config, "threat_intel");
             maliciousAddresses= getIndicators("address:IPV_4_ADDR", table.getPutLog(), "cf");
         }
-        Assert.assertTrue(maliciousAddresses.contains("94.102.53.142"));
-        Assert.assertEquals(numStringsMatch(MockTaxiiService.pollMsg, "AddressObj:Address_Value condition=\"Equal\""), maliciousAddresses.size());
+        assertTrue(maliciousAddresses.contains("94.102.53.142"));
+        assertEquals(numStringsMatch(MockTaxiiService.pollMsg, "AddressObj:Address_Value condition=\"Equal\""), maliciousAddresses.size());
         MockHBaseTableProvider.clear();
 
         // Ensure that the handler can be run multiple times without connection issues.
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/pom.xml b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/pom.xml
index 15df035..0a99f25 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/pom.xml
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/pom.xml
@@ -204,13 +204,12 @@
         <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>hamcrest-core</artifactId>
-            <version>1.3</version>
+            <version>${global_hamcrest_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
-            <version>${global_mockito_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -238,6 +237,12 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/main/java/org/apache/metron/elasticsearch/writer/ElasticsearchWriter.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/main/java/org/apache/metron/elasticsearch/writer/ElasticsearchWriter.java
index ef6577f..3fd20cb 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/main/java/org/apache/metron/elasticsearch/writer/ElasticsearchWriter.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/main/java/org/apache/metron/elasticsearch/writer/ElasticsearchWriter.java
@@ -76,7 +76,7 @@
   @Override
   public void init(Map stormConf, WriterConfiguration configurations) {
     Map<String, Object> globalConfiguration = configurations.getGlobalConfig();
-    dateFormat = ElasticsearchUtils.getIndexFormat(globalConfiguration);
+    dateFormat = getIndexFormat(globalConfiguration);
 
     // only create the document writer, if one does not already exist. useful for testing.
     if(documentWriter == null) {
@@ -85,6 +85,11 @@
     }
   }
 
+  // Used for testing
+  protected SimpleDateFormat getIndexFormat(Map<String, Object> globalConfiguration) {
+    return ElasticsearchUtils.getIndexFormat(globalConfiguration);
+  }
+
   @Override
   public BulkWriterResponse write(String sensorType,
                                   WriterConfiguration configurations,
@@ -93,7 +98,7 @@
     // fetch the field name converter for this sensor type
     FieldNameConverter fieldNameConverter = FieldNameConverters.create(sensorType, configurations);
     String indexPostfix = dateFormat.format(new Date());
-    String indexName = ElasticsearchUtils.getIndexName(sensorType, indexPostfix, configurations);
+    String indexName = getIndexName(sensorType, indexPostfix, configurations);
 
     // create a document from each message
     for(BulkMessage<JSONObject> bulkWriterMessage: messages) {
@@ -115,6 +120,11 @@
     return response;
   }
 
+  // Used for testing
+  protected String getIndexName(String sensorType, String indexPostfix, WriterConfiguration configurations) {
+    return ElasticsearchUtils.getIndexName(sensorType, indexPostfix, configurations);
+  }
+
   private MessageIdBasedDocument createDocument(BulkMessage<JSONObject> bulkWriterMessage,
                                                 String sensorType,
                                                 FieldNameConverter fieldNameConverter,
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/bulk/ElasticsearchBulkDocumentWriterTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/bulk/ElasticsearchBulkDocumentWriterTest.java
index c6389d7..2f82032 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/bulk/ElasticsearchBulkDocumentWriterTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/bulk/ElasticsearchBulkDocumentWriterTest.java
@@ -26,17 +26,17 @@
 import org.elasticsearch.action.bulk.BulkResponse;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.json.simple.JSONObject;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.Collections;
 import java.util.List;
 import java.util.UUID;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Matchers.any;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -46,7 +46,7 @@
     ElasticsearchClient client;
     RestHighLevelClient highLevelClient;
 
-    @Before
+    @BeforeEach
     public void setup() {
         // mock Elasticsearch
         highLevelClient = mock(RestHighLevelClient.class);
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/bulk/ElasticsearchImportExportTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/bulk/ElasticsearchImportExportTest.java
index ddec27c..e1517d9 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/bulk/ElasticsearchImportExportTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/bulk/ElasticsearchImportExportTest.java
@@ -18,16 +18,17 @@
 
 package org.apache.metron.elasticsearch.bulk;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.adrianwalker.multilinestring.Multiline;
+import org.apache.metron.integration.utils.TestUtils;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import org.adrianwalker.multilinestring.Multiline;
-import org.apache.metron.integration.utils.TestUtils;
-import org.junit.Before;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class ElasticsearchImportExportTest {
 
@@ -49,7 +50,7 @@
   private static String expected;
   private File tempDir;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     tempDir = TestUtils.createTempDir(this.getClass().getName());
   }
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchColumnMetadataDaoTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchColumnMetadataDaoTest.java
index c9389c0..e5b3c81 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchColumnMetadataDaoTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchColumnMetadataDaoTest.java
@@ -22,17 +22,12 @@
 import org.apache.metron.elasticsearch.utils.FieldMapping;
 import org.elasticsearch.client.RestClient;
 import org.elasticsearch.client.RestHighLevelClient;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.mockito.Matchers.any;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
 import static org.mockito.Mockito.mock;
 
 /**
@@ -58,12 +53,12 @@
           Map<String, FieldMapping> mappings) {
     ElasticsearchClient client = new ElasticsearchClient(mock(RestClient.class), mock(RestHighLevelClient.class)) {
       @Override
-      public String[] getIndices() throws IOException {
+      public String[] getIndices() {
         return indices;
       }
 
       @Override
-      public Map<String, FieldMapping> getMappingByIndex(String[] indices) throws IOException {
+      public Map<String, FieldMapping> getMappingByIndex(String[] indices) {
         return mappings;
       }
     };
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchDaoTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchDaoTest.java
index 6dc01a4..9bd1bc7 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchDaoTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchDaoTest.java
@@ -17,28 +17,10 @@
  */
 package org.apache.metron.elasticsearch.dao;
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
 import org.apache.metron.elasticsearch.client.ElasticsearchClient;
 import org.apache.metron.elasticsearch.utils.ElasticsearchUtils;
 import org.apache.metron.indexing.dao.AccessConfig;
-import org.apache.metron.indexing.dao.search.FieldType;
-import org.apache.metron.indexing.dao.search.InvalidSearchException;
-import org.apache.metron.indexing.dao.search.SearchRequest;
-import org.apache.metron.indexing.dao.search.SearchResponse;
-import org.apache.metron.indexing.dao.search.SortField;
-import org.apache.metron.indexing.dao.search.SortOrder;
+import org.apache.metron.indexing.dao.search.*;
 import org.elasticsearch.client.RestClient;
 import org.elasticsearch.client.RestHighLevelClient;
 import org.elasticsearch.rest.RestStatus;
@@ -47,9 +29,17 @@
 import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentCaptor;
 
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
 public class ElasticsearchDaoTest {
 
   private ElasticsearchDao dao;
@@ -234,7 +224,7 @@
   }
 
 
-  @Test(expected = InvalidSearchException.class)
+  @Test
   public void searchShouldThrowExceptionWhenMaxResultsAreExceeded() throws Exception {
 
     int maxSearchResults = 20;
@@ -243,7 +233,7 @@
     SearchRequest searchRequest = new SearchRequest();
     searchRequest.setSize(maxSearchResults + 1);
     searchRequest.setQuery("");
-    dao.search(searchRequest);
+    assertThrows(InvalidSearchException.class, () -> dao.search(searchRequest));
     // exception expected - size > max
   }
 
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchMetaAlertDaoTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchMetaAlertDaoTest.java
index cabb992..9ae0471 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchMetaAlertDaoTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchMetaAlertDaoTest.java
@@ -18,39 +18,27 @@
 
 package org.apache.metron.elasticsearch.dao;
 
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
 import org.apache.metron.indexing.dao.AccessConfig;
 import org.apache.metron.indexing.dao.HBaseDao;
 import org.apache.metron.indexing.dao.IndexDao;
 import org.apache.metron.indexing.dao.MultiIndexDao;
 import org.apache.metron.indexing.dao.metaalert.MetaAlertConfig;
 import org.apache.metron.indexing.dao.metaalert.MetaAlertCreateRequest;
-import org.apache.metron.indexing.dao.search.FieldType;
-import org.apache.metron.indexing.dao.search.GetRequest;
-import org.apache.metron.indexing.dao.search.GroupRequest;
-import org.apache.metron.indexing.dao.search.GroupResponse;
-import org.apache.metron.indexing.dao.search.InvalidCreateException;
-import org.apache.metron.indexing.dao.search.SearchRequest;
-import org.apache.metron.indexing.dao.search.SearchResponse;
+import org.apache.metron.indexing.dao.search.*;
 import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
 import org.apache.metron.indexing.dao.update.Document;
 import org.elasticsearch.index.IndexNotFoundException;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
 
 public class ElasticsearchMetaAlertDaoTest {
 
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testInvalidInit() {
     IndexDao dao = new IndexDao() {
       @Override
@@ -114,28 +102,28 @@
       }
     };
     ElasticsearchMetaAlertDao metaAlertDao = new ElasticsearchMetaAlertDao();
-    metaAlertDao.init(dao);
+    assertThrows(IllegalArgumentException.class, () -> metaAlertDao.init(dao));
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testInitInvalidDao() {
     HBaseDao dao = new HBaseDao();
     ElasticsearchMetaAlertDao esDao = new ElasticsearchMetaAlertDao();
-    esDao.init(dao, Optional.empty());
+    assertThrows(IllegalArgumentException.class, () -> esDao.init(dao, Optional.empty()));
   }
 
-  @Test(expected = InvalidCreateException.class)
-  public void testCreateMetaAlertEmptyGuids() throws InvalidCreateException, IOException {
+  @Test
+  public void testCreateMetaAlertEmptyGuids() {
     ElasticsearchDao esDao = new ElasticsearchDao();
     ElasticsearchMetaAlertDao emaDao = new ElasticsearchMetaAlertDao();
     emaDao.init(esDao);
 
     MetaAlertCreateRequest createRequest = new MetaAlertCreateRequest();
-    emaDao.createMetaAlert(createRequest);
+    assertThrows(InvalidCreateException.class, () -> emaDao.createMetaAlert(createRequest));
   }
 
-  @Test(expected = InvalidCreateException.class)
-  public void testCreateMetaAlertEmptyGroups() throws InvalidCreateException, IOException {
+  @Test
+  public void testCreateMetaAlertEmptyGroups() {
     ElasticsearchDao esDao = new ElasticsearchDao();
     MultiIndexDao miDao = new MultiIndexDao(esDao);
     ElasticsearchMetaAlertDao emaDao = new ElasticsearchMetaAlertDao();
@@ -143,7 +131,7 @@
 
     MetaAlertCreateRequest createRequest = new MetaAlertCreateRequest();
     createRequest.setAlerts(Collections.singletonList(new GetRequest("don't", "care")));
-    emaDao.createMetaAlert(createRequest);
+    assertThrows(InvalidCreateException.class, () -> emaDao.createMetaAlert(createRequest));
   }
 
   @Test
@@ -164,7 +152,7 @@
     verify(elasticsearchDao).batchUpdate(expectedUpdate);
   }
 
-  @Test(expected = IndexNotFoundException.class)
+  @Test
   public void testUpdateShouldThrowExceptionOnMissingSensorIndex() throws Exception {
     ElasticsearchDao elasticsearchDao = mock(ElasticsearchDao.class);
     ElasticsearchMetaAlertRetrieveLatestDao elasticsearchMetaAlertRetrieveLatestDao = mock(ElasticsearchMetaAlertRetrieveLatestDao.class);
@@ -174,6 +162,6 @@
     doThrow(new IndexNotFoundException("bro")).when(emauDao).getMetaAlertsForAlert("alert_one");
 
     Document update = new Document(new HashMap<>(), "alert_one", "", 0L);
-    emauDao.update(update, Optional.empty());
+    assertThrows(IndexNotFoundException.class, () -> emauDao.update(update, Optional.empty()));
   }
 }
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchRequestSubmitterTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchRequestSubmitterTest.java
index 917df4d..97dca94 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchRequestSubmitterTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchRequestSubmitterTest.java
@@ -29,12 +29,13 @@
 import org.elasticsearch.rest.RestStatus;
 import org.elasticsearch.search.SearchHits;
 import org.elasticsearch.search.SearchShardTarget;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Matchers.any;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -76,8 +77,8 @@
     assertNotNull(actual);
   }
 
-  @Test(expected = InvalidSearchException.class)
-  public void searchShouldFailWhenNotOK() throws InvalidSearchException, IOException {
+  @Test
+  public void searchShouldFailWhenNotOK() throws IOException {
 
     // mocks
     SearchResponse response = mock(SearchResponse.class);
@@ -90,7 +91,7 @@
 
     // search should succeed
     ElasticsearchRequestSubmitter submitter = setup(response);
-    submitter.submitSearch(request);
+    assertThrows(InvalidSearchException.class, () -> submitter.submitSearch(request));
   }
 
   @Test
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchUpdateDaoTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchUpdateDaoTest.java
index 3b7f132..5f17387 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchUpdateDaoTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/dao/ElasticsearchUpdateDaoTest.java
@@ -26,7 +26,7 @@
 import org.apache.metron.indexing.dao.update.UpdateDao;
 import org.elasticsearch.client.RestClient;
 import org.elasticsearch.client.RestHighLevelClient;
-import org.junit.Before;
+import org.junit.jupiter.api.BeforeEach;
 
 /**
  * This class returns the ElasticsearchUpdateDao implementation to be used in UpdateDaoTest.  UpdateDaoTest contains a
@@ -38,7 +38,7 @@
   private ElasticsearchRetrieveLatestDao retrieveLatestDao;
   private ElasticsearchUpdateDao updateDao;
 
-  @Before
+  @BeforeEach
   public void setup() {
     accessConfig = new AccessConfig();
     retrieveLatestDao = mock(ElasticsearchRetrieveLatestDao.class);
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchBulkDocumentWriterIntegrationTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchBulkDocumentWriterIntegrationTest.java
index 9074c7d..f72cd79 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchBulkDocumentWriterIntegrationTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchBulkDocumentWriterIntegrationTest.java
@@ -33,60 +33,48 @@
 import org.elasticsearch.client.Response;
 import org.hamcrest.CoreMatchers;
 import org.json.simple.JSONObject;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.ClassRule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import org.junit.jupiter.api.*;
+import org.junit.jupiter.api.io.TempDir;
 
 import java.io.File;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ElasticsearchBulkDocumentWriterIntegrationTest {
 
-    @ClassRule
-    public static TemporaryFolder indexDir = new TemporaryFolder();
+    @TempDir
+    static File indexDir;
+
     private static String broTemplatePath = "../../../metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/package/files/bro_index.template";
     private static ElasticSearchComponent elasticsearch;
     private ElasticsearchClient client;
     private ElasticsearchBulkDocumentWriter<Document> writer;
     private ElasticsearchRetrieveLatestDao retrieveDao;
 
-    @BeforeClass
+    @BeforeAll
     public static void setupElasticsearch() throws Exception {
         AccessConfig accessConfig = new AccessConfig();
         accessConfig.setGlobalConfigSupplier(() -> globals());
 
         elasticsearch = new ElasticSearchComponent.Builder()
                 .withHttpPort(9211)
-                .withIndexDir(indexDir.getRoot())
+                .withIndexDir(indexDir)
                 .withAccessConfig(accessConfig)
                 .build();
         elasticsearch.start();
     }
 
-    @AfterClass
+    @AfterAll
     public static void tearDownElasticsearch() {
         if(elasticsearch != null) {
             elasticsearch.stop();
         }
     }
 
-    @Before
+    @BeforeEach
     public void setup() throws Exception {
         client = ElasticsearchClientFactory.create(globals());
         retrieveDao = new ElasticsearchRetrieveLatestDao(client);
@@ -103,7 +91,7 @@
         assertThat(response.getStatusLine().getStatusCode(), CoreMatchers.equalTo(200));
     }
 
-    @After
+    @AfterEach
     public void tearDown() throws IOException {
         if(client != null) {
             client.close();
@@ -128,7 +116,7 @@
         // ensure the documents were written
         for(Document expected: documents) {
             Document actual = retrieveDao.getLatest(expected.getGuid(), expected.getSensorType());
-            assertNotNull("No document found", actual);
+            assertNotNull(actual, "No document found");
             assertEquals(expected.getGuid(), actual.getGuid());
             assertEquals(expected.getSensorType(), actual.getSensorType());
             assertEquals(expected.getDocument(), actual.getDocument());
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchMetaAlertIntegrationTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchMetaAlertIntegrationTest.java
index eb821a8..0bf83ab 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchMetaAlertIntegrationTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchMetaAlertIntegrationTest.java
@@ -36,37 +36,24 @@
 import org.apache.metron.indexing.dao.search.SearchResponse;
 import org.apache.metron.indexing.dao.search.SortField;
 import org.json.simple.parser.ParseException;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.io.File;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.function.Function;
 import java.util.stream.Collectors;
 
 import static org.apache.metron.elasticsearch.dao.ElasticsearchMetaAlertDao.METAALERTS_INDEX;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.ALERT_FIELD;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.METAALERT_DOC;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.METAALERT_FIELD;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.METAALERT_TYPE;
+import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-@RunWith(Parameterized.class)
 public class ElasticsearchMetaAlertIntegrationTest extends MetaAlertIntegrationTest {
 
   private static IndexDao esDao;
@@ -77,10 +64,8 @@
   private static String POSTFIX= new SimpleDateFormat(DATE_FORMAT).format(new Date());
   private static final String INDEX_RAW = SENSOR_NAME + POSTFIX;
   protected static final String INDEX = INDEX_RAW + "_index";
-  protected List<String> queryIndices = null;
 
-  @Parameterized.Parameters
-  public static Collection<Object[]> data() {
+  public static List<Object[]> data() {
     Function<List<String>, List<String>> asteriskTransform = x -> ImmutableList.of("*");
     Function<List<String>, List<String>> explicitTransform =
             allIndices -> allIndices.stream().map(x -> x.replace("_index", ""))
@@ -92,11 +77,6 @@
     );
   }
 
-  public ElasticsearchMetaAlertIntegrationTest(Function<List<String>, List<String>> queryIndices) {
-    this.queryIndices = queryIndices.apply(allIndices);
-  }
-
-
   /**
    {
      "properties": {
@@ -124,7 +104,7 @@
   @Multiline
   public static String template;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupBefore() throws Exception {
     // Ensure ES can retry as needed.
     MAX_RETRIES = 10;
@@ -152,7 +132,7 @@
     es.start();
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     es.createIndexWithMapping(METAALERTS_INDEX, METAALERT_DOC, template.replace("%MAPPING_NAME%", METAALERT_TYPE));
     es.createIndexWithMapping(INDEX, "test_doc", template.replace("%MAPPING_NAME%", "test"));
@@ -165,21 +145,25 @@
     metaDao = elasticsearchMetaDao;
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() {
     if (es != null) {
       es.stop();
     }
   }
 
-  @After
+  @AfterEach
   public void reset() {
     es.reset();
   }
 
-  @Test
-  @Override
-  public void shouldSearchByNestedAlert() throws Exception {
+  public void shouldSearchByNestedAlert() {
+     // Do nothing. ES has multiple index patterns, so this will be ignored in favor of a parameterized test.
+  };
+
+  @ParameterizedTest
+  @MethodSource("data")
+  public void shouldSearchByNestedAlert(Function<List<String>, List<String>> indexTransform) throws Exception {
     // Load alerts
     List<Map<String, Object>> alerts = buildAlerts(4);
     alerts.get(0).put(METAALERT_FIELD, Collections.singletonList("meta_active"));
@@ -231,7 +215,7 @@
       }
     });
     // Should not have results because nested alerts shouldn't be flattened
-    Assert.assertEquals(0, searchResponse.getTotal());
+    assertEquals(0, searchResponse.getTotal());
 
     // Query against all indices. Only the single active meta alert should be returned.
     // The child alerts should be hidden.
@@ -240,7 +224,7 @@
         setQuery(
                 "(ip_src_addr:192.168.1.1 AND ip_src_port:8010)"
                         + " OR (metron_alert.ip_src_addr:192.168.1.1 AND metron_alert.ip_src_port:8010)");
-        setIndices(queryIndices);
+        setIndices(indexTransform.apply(allIndices));
         setFrom(0);
         setSize(5);
         setSort(Collections.singletonList(new SortField() {
@@ -252,9 +236,8 @@
     });
 
     // Nested query should match a nested alert
-    Assert.assertEquals(1, searchResponse.getTotal());
-    Assert.assertEquals("meta_active",
-            searchResponse.getResults().get(0).getSource().get("guid"));
+    assertEquals(1, searchResponse.getTotal());
+    assertEquals("meta_active", searchResponse.getResults().get(0).getSource().get("guid"));
 
     // Query against all indices. The child alert has no actual attached meta alerts, and should
     // be returned on its own.
@@ -275,9 +258,8 @@
     });
 
     // Nested query should match a plain alert
-    Assert.assertEquals(1, searchResponse.getTotal());
-    Assert.assertEquals("message_2",
-            searchResponse.getResults().get(0).getSource().get("guid"));
+    assertEquals(1, searchResponse.getTotal());
+    assertEquals("message_2", searchResponse.getResults().get(0).getSource().get("guid"));
   }
 
   @Override
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java
index 7da94e9..bd66a3b 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchSearchIntegrationTest.java
@@ -30,12 +30,7 @@
 import org.apache.metron.indexing.dao.AccessConfig;
 import org.apache.metron.indexing.dao.IndexDao;
 import org.apache.metron.indexing.dao.SearchIntegrationTest;
-import org.apache.metron.indexing.dao.search.FieldType;
-import org.apache.metron.indexing.dao.search.GroupRequest;
-import org.apache.metron.indexing.dao.search.InvalidSearchException;
-import org.apache.metron.indexing.dao.search.SearchRequest;
-import org.apache.metron.indexing.dao.search.SearchResponse;
-import org.apache.metron.indexing.dao.search.SearchResult;
+import org.apache.metron.indexing.dao.search.*;
 import org.apache.metron.integration.InMemoryComponent;
 import org.elasticsearch.client.Response;
 import org.elasticsearch.client.RestClient;
@@ -43,23 +38,18 @@
 import org.json.simple.JSONArray;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.lang.invoke.MethodHandles;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ElasticsearchSearchIntegrationTest extends SearchIntegrationTest {
 
@@ -76,7 +66,7 @@
   protected static RestHighLevelClient highLevelClient;
   protected static IndexDao dao;
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() throws Exception {
     globalConfig =  new HashMap<String, Object>() {{
       put("es.clustername", "metron");
@@ -184,10 +174,9 @@
 
   @Test
   public void bad_facet_query_throws_exception() throws Exception {
-    thrown.expect(InvalidSearchException.class);
-    thrown.expectMessage("Failed to execute search");
     SearchRequest request = JSONUtils.INSTANCE.load(badFacetQuery, SearchRequest.class);
-    dao.search(request);
+    InvalidSearchException e = assertThrows(InvalidSearchException.class, () -> dao.search(request));
+    assertTrue(e.getMessage().contains("Failed to execute search"));
   }
 
   @Override
@@ -195,89 +184,88 @@
     // getColumnMetadata with only bro
     {
       Map<String, FieldType> fieldTypes = dao.getColumnMetadata(Collections.singletonList("bro"));
-      Assert.assertEquals(262, fieldTypes.size());
-      Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("method"));
-      Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("ttl"));
-      Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("guid"));
-      Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("source:type"));
-      Assert.assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
-      Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
-      Assert.assertEquals(FieldType.LONG, fieldTypes.get("long_field"));
-      Assert.assertEquals(FieldType.DATE, fieldTypes.get("timestamp"));
-      Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("latitude"));
-      Assert.assertEquals(FieldType.DOUBLE, fieldTypes.get("score"));
-      Assert.assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("location_point"));
-      Assert.assertEquals(FieldType.OTHER, fieldTypes.get("metron_alert"));
+      assertEquals(262, fieldTypes.size());
+      assertEquals(FieldType.KEYWORD, fieldTypes.get("method"));
+      assertEquals(FieldType.KEYWORD, fieldTypes.get("ttl"));
+      assertEquals(FieldType.KEYWORD, fieldTypes.get("guid"));
+      assertEquals(FieldType.KEYWORD, fieldTypes.get("source:type"));
+      assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
+      assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
+      assertEquals(FieldType.LONG, fieldTypes.get("long_field"));
+      assertEquals(FieldType.DATE, fieldTypes.get("timestamp"));
+      assertEquals(FieldType.FLOAT, fieldTypes.get("latitude"));
+      assertEquals(FieldType.DOUBLE, fieldTypes.get("score"));
+      assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("location_point"));
+      assertEquals(FieldType.OTHER, fieldTypes.get("metron_alert"));
     }
     // getColumnMetadata with only snort
     {
       Map<String, FieldType> fieldTypes = dao.getColumnMetadata(Collections.singletonList("snort"));
-      Assert.assertEquals(32, fieldTypes.size());
-      Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("sig_generator"));
-      Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ttl"));
-      Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("guid"));
-      Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("source:type"));
-      Assert.assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
-      Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
-      Assert.assertEquals(FieldType.LONG, fieldTypes.get("long_field"));
-      Assert.assertEquals(FieldType.DATE, fieldTypes.get("timestamp"));
-      Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("latitude"));
-      Assert.assertEquals(FieldType.DOUBLE, fieldTypes.get("score"));
-      Assert.assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("location_point"));
-      Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ttl"));
-      Assert.assertEquals(FieldType.OTHER, fieldTypes.get("metron_alert"));
+      assertEquals(32, fieldTypes.size());
+      assertEquals(FieldType.KEYWORD, fieldTypes.get("sig_generator"));
+      assertEquals(FieldType.INTEGER, fieldTypes.get("ttl"));
+      assertEquals(FieldType.KEYWORD, fieldTypes.get("guid"));
+      assertEquals(FieldType.KEYWORD, fieldTypes.get("source:type"));
+      assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
+      assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
+      assertEquals(FieldType.LONG, fieldTypes.get("long_field"));
+      assertEquals(FieldType.DATE, fieldTypes.get("timestamp"));
+      assertEquals(FieldType.FLOAT, fieldTypes.get("latitude"));
+      assertEquals(FieldType.DOUBLE, fieldTypes.get("score"));
+      assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("location_point"));
+      assertEquals(FieldType.INTEGER, fieldTypes.get("ttl"));
+      assertEquals(FieldType.OTHER, fieldTypes.get("metron_alert"));
     }
   }
 
   @Override
   public void returns_column_data_for_multiple_indices() throws Exception {
     Map<String, FieldType> fieldTypes = dao.getColumnMetadata(Arrays.asList("bro", "snort"));
-    Assert.assertEquals(277, fieldTypes.size());
+    assertEquals(277, fieldTypes.size());
 
     // Ensure internal Metron fields are properly defined
-    Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("guid"));
-    Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("source:type"));
-    Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("threat:triage:score"));
-    Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("alert_status"));
-    Assert.assertEquals(FieldType.OTHER, fieldTypes.get("metron_alert"));
+    assertEquals(FieldType.KEYWORD, fieldTypes.get("guid"));
+    assertEquals(FieldType.KEYWORD, fieldTypes.get("source:type"));
+    assertEquals(FieldType.FLOAT, fieldTypes.get("threat:triage:score"));
+    assertEquals(FieldType.KEYWORD, fieldTypes.get("alert_status"));
+    assertEquals(FieldType.OTHER, fieldTypes.get("metron_alert"));
 
-    Assert.assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
-    Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
-    Assert.assertEquals(FieldType.LONG, fieldTypes.get("long_field"));
-    Assert.assertEquals(FieldType.DATE, fieldTypes.get("timestamp"));
-    Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("latitude"));
-    Assert.assertEquals(FieldType.DOUBLE, fieldTypes.get("score"));
-    Assert.assertEquals(FieldType.DOUBLE, fieldTypes.get("suppress_for"));
-    Assert.assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
+    assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
+    assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
+    assertEquals(FieldType.LONG, fieldTypes.get("long_field"));
+    assertEquals(FieldType.DATE, fieldTypes.get("timestamp"));
+    assertEquals(FieldType.FLOAT, fieldTypes.get("latitude"));
+    assertEquals(FieldType.DOUBLE, fieldTypes.get("score"));
+    assertEquals(FieldType.DOUBLE, fieldTypes.get("suppress_for"));
+    assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
 
     // Ensure a field defined only in bro is included
-    Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("method"));
+    assertEquals(FieldType.KEYWORD, fieldTypes.get("method"));
     // Ensure a field defined only in snort is included
-    Assert.assertEquals(FieldType.KEYWORD, fieldTypes.get("sig_generator"));
+    assertEquals(FieldType.KEYWORD, fieldTypes.get("sig_generator"));
     // Ensure fields in both bro and snort have type OTHER because they have different types
-    Assert.assertEquals(FieldType.OTHER, fieldTypes.get("ttl"));
-    Assert.assertEquals(FieldType.OTHER, fieldTypes.get("msg"));
+    assertEquals(FieldType.OTHER, fieldTypes.get("ttl"));
+    assertEquals(FieldType.OTHER, fieldTypes.get("msg"));
   }
 
   @Test
   public void throws_exception_on_aggregation_queries_on_non_string_non_numeric_fields()
       throws Exception {
-    thrown.expect(InvalidSearchException.class);
-    thrown.expectMessage("Failed to execute search");
     GroupRequest request = JSONUtils.INSTANCE.load(badGroupQuery, GroupRequest.class);
-    dao.group(request);
+    InvalidSearchException e = assertThrows(InvalidSearchException.class, () -> dao.group(request));
+    assertTrue(e.getMessage().contains("Failed to execute search"));
   }
 
   @Test
   public void different_type_filter_query() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(differentTypeFilterQuery, SearchRequest.class);
     SearchResponse response = dao.search(request);
-    Assert.assertEquals(1, response.getTotal());
+    assertEquals(1, response.getTotal());
     List<SearchResult> results = response.getResults();
-    Assert.assertEquals("bro", results.get(0).getSource().get("source:type"));
-    Assert.assertEquals("data 1", results.get(0).getSource().get("ttl"));
+    assertEquals("bro", results.get(0).getSource().get("source:type"));
+    assertEquals("data 1", results.get(0).getSource().get("ttl"));
   }
 
   @Override
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java
index 97afd41..b2b5d3d 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/integration/ElasticsearchUpdateIntegrationTest.java
@@ -40,20 +40,17 @@
 import org.elasticsearch.action.support.WriteRequest;
 import org.elasticsearch.client.Response;
 import org.hamcrest.CoreMatchers;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
 
 import java.io.File;
 import java.io.IOException;
 import java.text.SimpleDateFormat;
-import java.util.Collections;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class ElasticsearchUpdateIntegrationTest extends UpdateIntegrationTest {
   private static final String SENSOR_NAME= "test";
@@ -91,7 +88,7 @@
     return SENSOR_NAME + "_index_" + new SimpleDateFormat(dateFormat).format(new Date());
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setupBeforeClass() throws UnableToStartException, IOException {
     Configuration config = HBaseConfiguration.create();
     MockHBaseTableProvider tableProvider = new MockHBaseTableProvider();
@@ -120,7 +117,7 @@
     installIndexTemplate();
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     elasticsearchDao = new ElasticsearchDao()
             .withRefreshPolicy(WriteRequest.RefreshPolicy.WAIT_UNTIL);
@@ -128,13 +125,13 @@
     setDao(elasticsearchDao);
   }
 
-  @After
+  @AfterEach
   public void reset() {
     es.reset();
     table.clear();
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() {
     es.stop();
   }
@@ -173,6 +170,6 @@
     Response response = client
             .getLowLevelClient()
             .performRequest("PUT", "/_template/test_template", Collections.emptyMap(), broEntity);
-    Assert.assertThat(response.getStatusLine().getStatusCode(), CoreMatchers.equalTo(200));
+    assertThat(response.getStatusLine().getStatusCode(), CoreMatchers.equalTo(200));
   }
 }
diff --git a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/writer/ElasticsearchWriterTest.java b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/writer/ElasticsearchWriterTest.java
index 2d5fd2a..179fa1f 100644
--- a/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/writer/ElasticsearchWriterTest.java
+++ b/metron-platform/metron-elasticsearch/metron-elasticsearch-common/src/test/java/org/apache/metron/elasticsearch/writer/ElasticsearchWriterTest.java
@@ -25,42 +25,22 @@
 import org.apache.metron.common.writer.MessageId;
 import org.apache.metron.elasticsearch.bulk.BulkDocumentWriter;
 import org.apache.metron.elasticsearch.bulk.BulkDocumentWriterResults;
-import org.apache.metron.elasticsearch.utils.ElasticsearchUtils;
 import org.json.simple.JSONObject;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.text.SimpleDateFormat;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
+import java.util.*;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ElasticsearchWriter.class, ElasticsearchUtils.class})
 public class ElasticsearchWriterTest {
 
     Map stormConf;
     WriterConfiguration writerConfiguration;
 
-    @Before
+    @BeforeEach
     public void setup() {
         writerConfiguration = mock(WriterConfiguration.class);
         when(writerConfiguration.getGlobalConfig()).thenReturn(globals());
@@ -260,10 +240,6 @@
         when(writerConfiguration.isSetDocumentId("bro")).thenReturn(true);
         when(writerConfiguration.getFieldNameConverter("bro")).thenReturn("NOOP");
 
-        mockStatic(ElasticsearchUtils.class);
-        when(ElasticsearchUtils.getIndexFormat(globals())).thenReturn(new SimpleDateFormat());
-        when(ElasticsearchUtils.getIndexName(eq("bro"), any(), eq(writerConfiguration))).thenReturn("bro_index");
-
         // create a few message ids and the messages associated with the ids
         List<BulkMessage<JSONObject>> messages = createMessages(3);
 
@@ -286,7 +262,9 @@
         when(docWriter.write()).thenReturn(results);
 
         // attempt to write
-        ElasticsearchWriter esWriter = new ElasticsearchWriter();
+        ElasticsearchWriter esWriter = spy(ElasticsearchWriter.class);
+        doReturn(new SimpleDateFormat()).when(esWriter).getIndexFormat(globals());
+        doReturn("bro_index").when(esWriter).getIndexName(eq("bro"), any(), eq(writerConfiguration));
         esWriter.setDocumentWriter(docWriter);
         esWriter.init(stormConf, writerConfiguration);
         BulkWriterResponse response = esWriter.write("bro", writerConfiguration, messages);
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/pom.xml b/metron-platform/metron-enrichment/metron-enrichment-common/pom.xml
index b4058ee..5cd0543 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/pom.xml
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/pom.xml
@@ -109,6 +109,12 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-migrationsupport</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
 
         <!-- Test -->
 
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGet.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGet.java
index 11ebe88..8e7cff1 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGet.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGet.java
@@ -94,8 +94,14 @@
     objectCache.initialize(objectCacheConfig);
   }
 
+  // Exposed for testing
+  protected void initialize(ObjectCache objectCache) {
+      this.objectCache = objectCache;
+  }
+
   @Override
   public boolean isInitialized() {
     return objectCache != null && objectCache.isInitialized();
   }
+
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/stellar/ObjectGet.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/stellar/ObjectGet.java
index dddef5f..f6536eb 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/stellar/ObjectGet.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/main/java/org/apache/metron/enrichment/stellar/ObjectGet.java
@@ -77,6 +77,11 @@
     objectCache.initialize(new ObjectCacheConfig(config));
   }
 
+  // Exposed for testing
+  protected void initialize(ObjectCache objectCache) {
+    this.objectCache = objectCache;
+  }
+
   @Override
   public boolean isInitialized() {
     return objectCache != null && objectCache.isInitialized();
@@ -85,4 +90,9 @@
   protected Map<String, Object> getConfig(Context context) {
       return (Map<String, Object>) context.getCapability(Context.Capabilities.GLOBAL_CONFIG, false).orElse(new HashMap<>());
     }
+
+  // exposed for testing
+  protected ObjectCache getObjectCache() {
+    return objectCache;
+  }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/host/HostFromJSONListAdapterTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/host/HostFromJSONListAdapterTest.java
index c8cf4b1..c5dcaea 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/host/HostFromJSONListAdapterTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/host/HostFromJSONListAdapterTest.java
@@ -22,9 +22,10 @@
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class HostFromJSONListAdapterTest {
 
@@ -55,37 +56,37 @@
   private String ip1 = "10.0.22.22";
 
 
-  @Before
+  @BeforeEach
   public void parseJSON() throws ParseException {
     JSONParser jsonParser = new JSONParser();
     expectedMessage = (JSONObject) jsonParser.parse(expectedMessageString);
   }
 
   @Test
-  public void testEnrich() throws Exception {
+  public void testEnrich() {
     HostFromJSONListAdapter hja = new HostFromJSONListAdapter(expectedKnownHostsString);
     JSONObject actualMessage = hja.enrich(new CacheKey("dummy", ip, null));
-    Assert.assertNotNull(actualMessage);
-    Assert.assertEquals(expectedMessage, actualMessage);
+    assertNotNull(actualMessage);
+    assertEquals(expectedMessage, actualMessage);
     actualMessage = hja.enrich(new CacheKey("dummy", ip1, null));
     JSONObject emptyJson = new JSONObject();
-    Assert.assertEquals(emptyJson, actualMessage);
+    assertEquals(emptyJson, actualMessage);
   }
 
   @Test
-  public void testEnrichNonString() throws Exception {
+  public void testEnrichNonString() {
     HostFromJSONListAdapter hja = new HostFromJSONListAdapter(expectedKnownHostsString);
     JSONObject actualMessage = hja.enrich(new CacheKey("dummy", ip, null));
-    Assert.assertNotNull(actualMessage);
-    Assert.assertEquals(expectedMessage, actualMessage);
+    assertNotNull(actualMessage);
+    assertEquals(expectedMessage, actualMessage);
     actualMessage = hja.enrich(new CacheKey("dummy", 10L, null));
     JSONObject emptyJson = new JSONObject();
-    Assert.assertEquals(emptyJson, actualMessage);
+    assertEquals(emptyJson, actualMessage);
   }
   @Test
-  public void testInitializeAdapter() throws Exception {
+  public void testInitializeAdapter() {
     HostFromJSONListAdapter hja = new HostFromJSONListAdapter(expectedKnownHostsString);
-    Assert.assertTrue(hja.initializeAdapter(null));
+    assertTrue(hja.initializeAdapter(null));
   }
 
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/host/HostFromPropertiesFileAdapterTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/host/HostFromPropertiesFileAdapterTest.java
index 90f5dfe..79ad00e 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/host/HostFromPropertiesFileAdapterTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/host/HostFromPropertiesFileAdapterTest.java
@@ -24,13 +24,15 @@
 import org.json.simple.JSONValue;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 
 public class HostFromPropertiesFileAdapterTest {
 
@@ -60,14 +62,14 @@
     private String ip = "10.0.2.15";
     private String ip1 = "10.0.22.22";
 
-    @Before
+    @BeforeEach
     public void parseJSON() throws ParseException {
         JSONParser jsonParser = new JSONParser();
         expectedMessage = (JSONObject) jsonParser.parse(expectedMessageString);
     }
 
     @Test
-    public void testEnrich() throws Exception {
+    public void testEnrich() {
         Map<String, JSONObject> mapKnownHosts = new HashMap<>();
         JSONArray jsonArray = (JSONArray) JSONValue.parse(expectedKnownHostsString);
         Iterator jsonArrayIterator = jsonArray.iterator();
@@ -78,19 +80,19 @@
         }
         HostFromPropertiesFileAdapter hfa = new HostFromPropertiesFileAdapter(mapKnownHosts);
         JSONObject actualMessage = hfa.enrich(new CacheKey("dummy", ip, null));
-        Assert.assertNotNull(actualMessage);
-        Assert.assertEquals(expectedMessage, actualMessage);
+        assertNotNull(actualMessage);
+        assertEquals(expectedMessage, actualMessage);
         actualMessage = hfa.enrich(new CacheKey("dummy", ip1, null));
         JSONObject emptyJson = new JSONObject();
-        Assert.assertEquals(emptyJson, actualMessage);
+        assertEquals(emptyJson, actualMessage);
     }
 
 
     @Test
-    public void testInitializeAdapter() throws Exception {
+    public void testInitializeAdapter() {
         Map<String, JSONObject> mapKnownHosts = new HashMap<>();
         HostFromPropertiesFileAdapter hfa = new HostFromPropertiesFileAdapter(mapKnownHosts);
-        Assert.assertFalse(hfa.initializeAdapter(null));
+        assertFalse(hfa.initializeAdapter(null));
         JSONArray jsonArray = (JSONArray) JSONValue.parse(expectedKnownHostsString);
         Iterator jsonArrayIterator = jsonArray.iterator();
         while(jsonArrayIterator.hasNext()) {
@@ -99,7 +101,7 @@
             mapKnownHosts.put(host, jsonObject);
         }
         hfa = new HostFromPropertiesFileAdapter(mapKnownHosts);
-        Assert.assertTrue(hfa.initializeAdapter(null));
+        assertTrue(hfa.initializeAdapter(null));
     }
 
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/jdbc/MySqlConfigTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/jdbc/MySqlConfigTest.java
index 2ae2ff0..f5c16c2 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/jdbc/MySqlConfigTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/jdbc/MySqlConfigTest.java
@@ -17,16 +17,17 @@
  */
 package org.apache.metron.enrichment.adapters.jdbc;
 
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class MySqlConfigTest {
 
   private String sampleURL = "jdbc:mysql://10.22.0.214:3306/GEO?user=root&password=hadoop123";
   private MySqlConfig conn;
 
-  @Before
+  @BeforeEach
   public void setupJdbc() {
     conn = new MySqlConfig();
     conn.setHost("10.22.0.214");
@@ -37,8 +38,8 @@
   }
 
   @Test
-  public void testGetJdbcUrl() throws Exception {
-    Assert.assertEquals(sampleURL, conn.getJdbcUrl());
+  public void testGetJdbcUrl() {
+    assertEquals(sampleURL, conn.getJdbcUrl());
   }
 
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/asn/GeoLiteAsnDatabaseTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/asn/GeoLiteAsnDatabaseTest.java
index e572b97..6df480a 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/asn/GeoLiteAsnDatabaseTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/asn/GeoLiteAsnDatabaseTest.java
@@ -17,26 +17,30 @@
  */
 package org.apache.metron.enrichment.adapters.maxmind.asn;
 
-import static org.apache.metron.enrichment.adapters.maxmind.MaxMindDatabase.EXTENSION_TAR_GZ;
-
 import com.google.common.collect.ImmutableMap;
+import org.apache.commons.io.FileUtils;
+import org.apache.metron.stellar.dsl.Context;
+import org.apache.metron.test.utils.UnitTestHelper;
+import org.json.simple.JSONObject;
+import org.junit.Rule;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
+import org.junit.rules.TemporaryFolder;
+
 import java.io.File;
 import java.io.IOException;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
-import org.apache.commons.io.FileUtils;
-import org.apache.metron.stellar.dsl.Context;
-import org.apache.metron.test.utils.UnitTestHelper;
-import org.json.simple.JSONObject;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
 
+import static org.apache.metron.enrichment.adapters.maxmind.MaxMindDatabase.EXTENSION_TAR_GZ;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+@EnableRuleMigrationSupport
 public class GeoLiteAsnDatabaseTest {
 
   private static Context context;
@@ -52,7 +56,7 @@
   @Rule
   public TemporaryFolder testFolder = new TemporaryFolder();
 
-  @BeforeClass
+  @BeforeAll
   @SuppressWarnings("unchecked")
   public static void setupOnce() throws IOException {
     // Construct this explicitly here, otherwise it'll be a Long instead of Integer.
@@ -66,12 +70,12 @@
     FileUtils.copyFile(asnHdfsFile, asnHdfsFile_update);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDown() {
     FileUtils.deleteQuietly(asnHdfsFile_update);
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     testFolder.create();
     context = new Context.Builder().with(Context.Capabilities.GLOBAL_CONFIG,
@@ -84,7 +88,7 @@
     GeoLiteAsnDatabase.INSTANCE.update(asnHdfsFile.getAbsolutePath());
 
     Optional<Map<String, Object>> result = GeoLiteAsnDatabase.INSTANCE.get("192.168.0.1");
-    Assert.assertFalse("Local address result should be empty", result.isPresent());
+    assertFalse(result.isPresent(), "Local address result should be empty");
   }
 
   @Test
@@ -93,7 +97,7 @@
 
     // the range 203.0.113.0/24 is assigned as "TEST-NET-3" and should never be locatable
     Optional<Map<String, Object>> result = GeoLiteAsnDatabase.INSTANCE.get("203.0.113.1");
-    Assert.assertFalse("External address not found", result.isPresent());
+    assertFalse(result.isPresent(), "External address not found");
   }
 
   @Test
@@ -101,8 +105,8 @@
     GeoLiteAsnDatabase.INSTANCE.update(asnHdfsFile.getAbsolutePath());
 
     Optional<Map<String, Object>> result = GeoLiteAsnDatabase.INSTANCE.get(IP_ADDR);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedAsnMessage,
-        result.get());
+    assertEquals(expectedAsnMessage,
+        result.get(), "Remote Local IP should return result based on DB");
   }
 
   @Test
@@ -111,8 +115,8 @@
     GeoLiteAsnDatabase.INSTANCE.update(asnHdfsFile.getAbsolutePath());
 
     Optional<Map<String, Object>> result = GeoLiteAsnDatabase.INSTANCE.get(IP_ADDR);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedAsnMessage,
-        result.get());
+    assertEquals(expectedAsnMessage, result.get(),
+            "Remote Local IP should return result based on DB");
   }
 
   @Test
@@ -122,8 +126,8 @@
     GeoLiteAsnDatabase.INSTANCE.updateIfNecessary(globalConfig);
 
     Optional<Map<String, Object>> result = GeoLiteAsnDatabase.INSTANCE.get(IP_ADDR);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedAsnMessage,
-        result.get());
+    assertEquals(expectedAsnMessage, result.get(),
+            "Remote Local IP should return result based on DB");
   }
 
   @Test
@@ -134,8 +138,8 @@
     GeoLiteAsnDatabase.INSTANCE.updateIfNecessary(globalConfig);
 
     Optional<Map<String, Object>> result = GeoLiteAsnDatabase.INSTANCE.get(IP_ADDR);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedAsnMessage,
-        result.get());
+    assertEquals(expectedAsnMessage, result.get(),
+            "Remote Local IP should return result based on DB");
   }
 
   @Test
@@ -144,14 +148,14 @@
     globalConfig.put(GeoLiteAsnDatabase.ASN_HDFS_FILE, asnHdfsFile.getAbsolutePath());
     GeoLiteAsnDatabase.INSTANCE.updateIfNecessary(globalConfig);
     Optional<Map<String, Object>> result = GeoLiteAsnDatabase.INSTANCE.get(IP_ADDR);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedAsnMessage,
-        result.get());
+    assertEquals(expectedAsnMessage, result.get(),
+            "Remote Local IP should return result based on DB");
 
     globalConfig.put(GeoLiteAsnDatabase.ASN_HDFS_FILE, asnHdfsFile_update.getAbsolutePath());
     GeoLiteAsnDatabase.INSTANCE.updateIfNecessary(globalConfig);
     result = GeoLiteAsnDatabase.INSTANCE.get(IP_ADDR);
 
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedAsnMessage,
-        result.get());
+    assertEquals(expectedAsnMessage, result.get(),
+            "Remote Local IP should return result based on DB");
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/geo/GeoAdapterTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/geo/GeoAdapterTest.java
index aa2b1cc..99db5a3 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/geo/GeoAdapterTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/geo/GeoAdapterTest.java
@@ -25,12 +25,14 @@
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 public class GeoAdapterTest {
   private static final String IP = "216.160.83.56";
 
@@ -54,7 +56,7 @@
   private static GeoAdapter geo;
   private static File geoHdfsFile;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupOnce() throws ParseException {
     JSONParser jsonParser = new JSONParser();
     expectedMessage = (JSONObject) jsonParser.parse(expectedMessageString);
@@ -67,16 +69,16 @@
   }
 
   @Test
-  public void testEnrich() throws Exception {
+  public void testEnrich() {
     JSONObject actualMessage = geo.enrich(new CacheKey("dummy", IP, null));
 
-    Assert.assertNotNull(actualMessage.get("locID"));
-    Assert.assertEquals(expectedMessage, actualMessage);
+    assertNotNull(actualMessage.get("locID"));
+    assertEquals(expectedMessage, actualMessage);
   }
 
   @Test
-  public void testEnrichNonString() throws Exception {
+  public void testEnrichNonString() {
     JSONObject actualMessage = geo.enrich(new CacheKey("dummy", 10L, null));
-    Assert.assertEquals(new JSONObject(), actualMessage);
+    assertEquals(new JSONObject(), actualMessage);
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/geo/GeoLiteCityDatabaseTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/geo/GeoLiteCityDatabaseTest.java
index 3ce96d7..7876579 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/geo/GeoLiteCityDatabaseTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/maxmind/geo/GeoLiteCityDatabaseTest.java
@@ -17,16 +17,7 @@
  */
 package org.apache.metron.enrichment.adapters.maxmind.geo;
 
-import static org.apache.metron.enrichment.adapters.maxmind.MaxMindDatabase.EXTENSION_MMDB_GZ;
-import static org.apache.metron.enrichment.adapters.maxmind.MaxMindDatabase.EXTENSION_TAR_GZ;
-
 import com.google.common.collect.ImmutableMap;
-import java.io.File;
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.io.FileUtils;
 import org.apache.hadoop.conf.Configuration;
@@ -36,14 +27,27 @@
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
 import org.junit.rules.TemporaryFolder;
 
+import java.io.File;
+import java.io.IOException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+import static org.apache.metron.enrichment.adapters.maxmind.MaxMindDatabase.EXTENSION_MMDB_GZ;
+import static org.apache.metron.enrichment.adapters.maxmind.MaxMindDatabase.EXTENSION_TAR_GZ;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+
+@EnableRuleMigrationSupport
 public class GeoLiteCityDatabaseTest {
 
   private static Context context;
@@ -110,7 +114,7 @@
   @Rule
   public TemporaryFolder testFolder = new TemporaryFolder();
 
-  @BeforeClass
+  @BeforeAll
   public static void setupOnce() throws ParseException, IOException {
     JSONParser jsonParser = new JSONParser();
     expectedNoDmaMessage = (JSONObject) jsonParser.parse(expectedNoDmaMessageString);
@@ -127,12 +131,12 @@
     fs = FileSystem.get(config);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDown() {
     FileUtils.deleteQuietly(geoHdfsFile_update);
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     testFolder.create();
     context = new Context.Builder().with(Context.Capabilities.GLOBAL_CONFIG
@@ -146,7 +150,7 @@
     GeoLiteCityDatabase.INSTANCE.update(geoHdfsFile.getAbsolutePath());
 
     Optional<Map<String, String>> result = GeoLiteCityDatabase.INSTANCE.get("192.168.0.1");
-    Assert.assertFalse("Local address result should be empty", result.isPresent());
+    assertFalse(result.isPresent(), "Local address result should be empty");
   }
 
   @Test
@@ -155,7 +159,7 @@
 
     // the range 203.0.113.0/24 is assigned as "TEST-NET-3" and should never be locatable
     Optional<Map<String, String>> result = GeoLiteCityDatabase.INSTANCE.get("203.0.113.1");
-    Assert.assertFalse("External address not found", result.isPresent());
+    assertFalse(result.isPresent(), "External address not found");
   }
 
   @Test
@@ -163,7 +167,7 @@
     GeoLiteCityDatabase.INSTANCE.update(geoHdfsFile.getAbsolutePath());
 
     Optional<Map<String, String>> result = GeoLiteCityDatabase.INSTANCE.get(IP_WITH_DMA);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedDmaMessage, result.get());
+    assertEquals(expectedDmaMessage, result.get(), "Remote Local IP should return result based on DB");
   }
 
   @Test
@@ -171,7 +175,7 @@
     GeoLiteCityDatabase.INSTANCE.update(geoHdfsFileTarGz.getAbsolutePath());
 
     Optional<Map<String, String>> result = GeoLiteCityDatabase.INSTANCE.get(IP_WITH_DMA);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedMessageTarGz, result.get());
+    assertEquals(expectedMessageTarGz, result.get(), "Remote Local IP should return result based on DB");
   }
 
   @Test
@@ -179,7 +183,7 @@
     GeoLiteCityDatabase.INSTANCE.update(geoHdfsFile.getAbsolutePath());
 
     Optional<Map<String, String>> result = GeoLiteCityDatabase.INSTANCE.get(IP_NO_DMA);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedNoDmaMessage, result.get());
+    assertEquals(expectedNoDmaMessage, result.get(), "Remote Local IP should return result based on DB");
   }
 
   @Test
@@ -188,7 +192,7 @@
     GeoLiteCityDatabase.INSTANCE.update(geoHdfsFile.getAbsolutePath());
 
     Optional<Map<String, String>> result = GeoLiteCityDatabase.INSTANCE.get(IP_NO_DMA);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedNoDmaMessage, result.get());
+    assertEquals(expectedNoDmaMessage, result.get(), "Remote Local IP should return result based on DB");
   }
 
   @Test
@@ -198,7 +202,7 @@
     GeoLiteCityDatabase.INSTANCE.updateIfNecessary(globalConfig);
 
     Optional<Map<String, String>> result = GeoLiteCityDatabase.INSTANCE.get(IP_NO_DMA);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedNoDmaMessage, result.get());
+    assertEquals(expectedNoDmaMessage, result.get(), "Remote Local IP should return result based on DB");
   }
 
 
@@ -210,7 +214,7 @@
     GeoLiteCityDatabase.INSTANCE.updateIfNecessary(globalConfig);
 
     Optional<Map<String, String>> result = GeoLiteCityDatabase.INSTANCE.get(IP_NO_DMA);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedNoDmaMessage, result.get());
+    assertEquals(expectedNoDmaMessage, result.get(), "Remote Local IP should return result based on DB");
   }
 
   @Test
@@ -219,20 +223,20 @@
     globalConfig.put(GeoLiteCityDatabase.GEO_HDFS_FILE, geoHdfsFile.getAbsolutePath());
     GeoLiteCityDatabase.INSTANCE.updateIfNecessary(globalConfig);
     Optional<Map<String, String>> result = GeoLiteCityDatabase.INSTANCE.get(IP_NO_DMA);
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedNoDmaMessage, result.get());
+    assertEquals(expectedNoDmaMessage, result.get(), "Remote Local IP should return result based on DB");
 
     globalConfig.put(GeoLiteCityDatabase.GEO_HDFS_FILE, geoHdfsFile_update.getAbsolutePath());
     GeoLiteCityDatabase.INSTANCE.updateIfNecessary(globalConfig);
     result = GeoLiteCityDatabase.INSTANCE.get(IP_NO_DMA);
 
-    Assert.assertEquals("Remote Local IP should return result based on DB", expectedNoDmaMessage, result.get());
+    assertEquals(expectedNoDmaMessage, result.get(), "Remote Local IP should return result based on DB");
   }
 
   @Test
   public void testFallbackUnnecessary() {
     String fakeFile = "fakefile.geolitecitydbtest";
     Map<String, Object> globalConfig = Collections.singletonMap(GeoLiteCityDatabase.GEO_HDFS_FILE, fakeFile);
-    Assert.assertEquals(
+    assertEquals(
         GeoLiteCityDatabase.INSTANCE.determineHdfsDirWithFallback(globalConfig, fakeFile, ""),
         fakeFile);
   }
@@ -241,7 +245,7 @@
   public void testFallbackUnncessaryAlreadyDefault() {
     String defaultFile = GeoLiteCityDatabase.GEO_HDFS_FILE_DEFAULT;
     Map<String, Object> globalConfig = Collections.singletonMap(GeoLiteCityDatabase.GEO_HDFS_FILE, defaultFile);
-    Assert.assertEquals(
+    assertEquals(
         GeoLiteCityDatabase.INSTANCE.determineHdfsDirWithFallback(globalConfig, defaultFile, ""),
         defaultFile);
   }
@@ -249,7 +253,7 @@
   @Test
   public void testFallbackToDefault() {
     String defaultFile = GeoLiteCityDatabase.GEO_HDFS_FILE_DEFAULT;
-    Assert.assertEquals(GeoLiteCityDatabase.INSTANCE.determineHdfsDirWithFallback(Collections.emptyMap(), defaultFile, "fallback"), defaultFile);
+    assertEquals(GeoLiteCityDatabase.INSTANCE.determineHdfsDirWithFallback(Collections.emptyMap(), defaultFile, "fallback"), defaultFile);
   }
 
   @Test
@@ -258,6 +262,6 @@
     File file = File.createTempFile( this.getClass().getSimpleName(), "testfile");
     file.deleteOnExit();
     String fileName = file.getAbsolutePath();
-    Assert.assertEquals(GeoLiteCityDatabase.INSTANCE.determineHdfsDirWithFallback(Collections.emptyMap(), fakeFile, fileName), fileName);
+    assertEquals(GeoLiteCityDatabase.INSTANCE.determineHdfsDirWithFallback(Collections.emptyMap(), fakeFile, fileName), fileName);
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/simplehbase/SimpleHBaseAdapterTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/simplehbase/SimpleHBaseAdapterTest.java
index ef04370..c059d1a 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/simplehbase/SimpleHBaseAdapterTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/simplehbase/SimpleHBaseAdapterTest.java
@@ -34,14 +34,15 @@
 import org.apache.metron.common.utils.JSONUtils;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class SimpleHBaseAdapterTest {
 
   private String cf = "cf";
@@ -101,7 +102,7 @@
   private String sourceConfigWithCFStr;
   private JSONObject expectedMessage;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     final MockHTable trackerTable = (MockHTable) MockHBaseTableProvider.addToCache(atTableName, cf);
     final MockHTable hbaseTable = (MockHTable) MockHBaseTableProvider.addToCache(hbaseTableName, cf);
@@ -130,10 +131,10 @@
     sha.lookup = lookup;
     SensorEnrichmentConfig broSc = JSONUtils.INSTANCE.load(sourceConfigStr, SensorEnrichmentConfig.class);
     JSONObject actualMessage = sha.enrich(new CacheKey("test", "test", broSc));
-    Assert.assertEquals(actualMessage, new JSONObject());
+    assertEquals(actualMessage, new JSONObject());
     actualMessage = sha.enrich(new CacheKey("ip_dst_addr", "10.0.2.3", broSc));
-    Assert.assertNotNull(actualMessage);
-    Assert.assertEquals(expectedMessage, actualMessage);
+    assertNotNull(actualMessage);
+    assertEquals(expectedMessage, actualMessage);
   }
 
   @Test
@@ -142,9 +143,9 @@
     sha.lookup = lookup;
     SensorEnrichmentConfig broSc = JSONUtils.INSTANCE.load(sourceConfigStr, SensorEnrichmentConfig.class);
     JSONObject actualMessage = sha.enrich(new CacheKey("test", "test", broSc));
-    Assert.assertEquals(actualMessage, new JSONObject());
+    assertEquals(actualMessage, new JSONObject());
     actualMessage = sha.enrich(new CacheKey("ip_dst_addr", 10L, broSc));
-    Assert.assertEquals(actualMessage,new JSONObject());
+    assertEquals(actualMessage,new JSONObject());
   }
 
   @Test
@@ -153,10 +154,10 @@
     sha.lookup = lookup;
     SensorEnrichmentConfig broSc = JSONUtils.INSTANCE.load(sourceConfigWithCFStr, SensorEnrichmentConfig.class);
     JSONObject actualMessage = sha.enrich(new CacheKey("test", "test", broSc));
-    Assert.assertEquals(actualMessage, new JSONObject());
+    assertEquals(actualMessage, new JSONObject());
     actualMessage = sha.enrich(new CacheKey("ip_dst_addr", "10.0.2.4", broSc));
-    Assert.assertNotNull(actualMessage);
-    Assert.assertEquals(new JSONObject(ImmutableMap.of("cf1.key", "value")), actualMessage);
+    assertNotNull(actualMessage);
+    assertEquals(new JSONObject(ImmutableMap.of("cf1.key", "value")), actualMessage);
   }
 
   @Test
@@ -165,16 +166,16 @@
     sha.lookup = lookup;
     SensorEnrichmentConfig broSc = JSONUtils.INSTANCE.load(sourceConfigStr, SensorEnrichmentConfig.class);
     JSONObject actualMessage = sha.enrich(new CacheKey("test", "test", broSc));
-    Assert.assertEquals(actualMessage, new JSONObject());
+    assertEquals(actualMessage, new JSONObject());
     actualMessage = sha.enrich(new CacheKey("ip_dst_addr", "10.0.2.4", broSc));
-    Assert.assertNotNull(actualMessage);
-    Assert.assertEquals(new JSONObject(new HashMap<String, Object>()), actualMessage);
+    assertNotNull(actualMessage);
+    assertEquals(new JSONObject(new HashMap<String, Object>()), actualMessage);
   }
-  @Test(expected = Exception.class)
+  @Test
   public void testInitializeAdapter() {
     SimpleHBaseConfig config = new SimpleHBaseConfig();
     SimpleHBaseAdapter sha = new SimpleHBaseAdapter(config);
-    sha.initializeAdapter(null);
+    assertThrows(Exception.class, () -> sha.initializeAdapter(null));
   }
 
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/simplehbase/SimpleHBaseConfigTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/simplehbase/SimpleHBaseConfigTest.java
index 832a939..6c271a5 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/simplehbase/SimpleHBaseConfigTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/simplehbase/SimpleHBaseConfigTest.java
@@ -19,8 +19,9 @@
 
 import org.apache.metron.hbase.HTableProvider;
 import org.apache.metron.hbase.TableProvider;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class SimpleHBaseConfigTest {
 
@@ -35,8 +36,8 @@
         shc.withHBaseCF(cf);
         shc.withHBaseTable(table);
         provider = new HTableProvider();
-        Assert.assertEquals(cf, shc.getHBaseCF());
-        Assert.assertEquals(table, shc.getHBaseTable());
+        assertEquals(cf, shc.getHBaseCF());
+        assertEquals(table, shc.getHBaseTable());
     }
 
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/stellar/StellarAdapterTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/stellar/StellarAdapterTest.java
index e03e69f..80c8400 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/stellar/StellarAdapterTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/stellar/StellarAdapterTest.java
@@ -27,10 +27,10 @@
 import org.apache.metron.stellar.dsl.MapVariableResolver;
 import org.apache.metron.stellar.dsl.VariableResolver;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import java.util.List;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public class StellarAdapterTest extends StellarEnrichmentTest {
   StellarProcessor processor = new StellarProcessor();
@@ -52,13 +52,13 @@
     for(String c : DEFAULT_CONFIGS) {
       JSONObject message = getMessage();
       EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(c, EnrichmentConfig.class);
-      Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+      assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
       ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
       JSONObject enriched = enrich(message, "", handler);
-      Assert.assertEquals("STELLAR_TEST", enriched.get("stmt1"));
-      Assert.assertEquals("stellar_test", enriched.get("stmt2"));
-      Assert.assertEquals("foo", enriched.get("stmt3"));
-      Assert.assertEquals(3, enriched.size());
+      assertEquals("STELLAR_TEST", enriched.get("stmt1"));
+      assertEquals("stellar_test", enriched.get("stmt2"));
+      assertEquals("foo", enriched.get("stmt3"));
+      assertEquals(3, enriched.size());
     }
   }
 
@@ -67,18 +67,18 @@
     for(String c : GROUPED_CONFIGS) {
       JSONObject message = getMessage();
       EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(c, EnrichmentConfig.class);
-      Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+      assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
       ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
       {
         JSONObject enriched = enrich(message, "group1", handler);
-        Assert.assertEquals("STELLAR_TEST", enriched.get("stmt1"));
-        Assert.assertEquals("stellar_test", enriched.get("stmt2"));
-        Assert.assertEquals(2, enriched.size());
+        assertEquals("STELLAR_TEST", enriched.get("stmt1"));
+        assertEquals("stellar_test", enriched.get("stmt2"));
+        assertEquals(2, enriched.size());
       }
       {
         JSONObject enriched = enrich(message, "group2", handler);
-        Assert.assertEquals("foo", enriched.get("stmt3"));
-        Assert.assertEquals(1, enriched.size());
+        assertEquals("foo", enriched.get("stmt3"));
+        assertEquals(1, enriched.size());
       }
     }
   }
@@ -88,24 +88,24 @@
     for(String c : MIXED_CONFIGS) {
       JSONObject message = getMessage();
       EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(c, EnrichmentConfig.class);
-      Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+      assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
       ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
       {
         JSONObject enriched = enrich(message, "group1", handler);
-        Assert.assertEquals("STELLAR_TEST", enriched.get("stmt1"));
-        Assert.assertEquals("stellar_test", enriched.get("stmt2"));
-        Assert.assertEquals(2, enriched.size());
+        assertEquals("STELLAR_TEST", enriched.get("stmt1"));
+        assertEquals("stellar_test", enriched.get("stmt2"));
+        assertEquals(2, enriched.size());
       }
       {
         JSONObject enriched = enrich(message, "group2", handler);
-        Assert.assertEquals("foo", enriched.get("stmt3"));
-        Assert.assertEquals(1, enriched.size());
+        assertEquals("foo", enriched.get("stmt3"));
+        assertEquals(1, enriched.size());
       }
       {
         JSONObject enriched = enrich(message, "", handler);
-        Assert.assertEquals(2, enriched.get("stmt4"));
-        Assert.assertEquals("stellar_test", enriched.get("stmt5"));
-        Assert.assertEquals(2, enriched.size());
+        assertEquals(2, enriched.get("stmt4"));
+        assertEquals("stellar_test", enriched.get("stmt5"));
+        assertEquals(2, enriched.size());
       }
     }
   }
@@ -114,23 +114,23 @@
   public void test_tempVariable() throws Exception {
     JSONObject message = getMessage();
     EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(tempVarStellarConfig_list, EnrichmentConfig.class);
-    Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+    assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
     ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
     {
       JSONObject enriched = enrich(message, "group1", handler);
-      Assert.assertEquals("stellar_test", enriched.get("stmt2"));
-      Assert.assertEquals(1, enriched.size());
+      assertEquals("stellar_test", enriched.get("stmt2"));
+      assertEquals(1, enriched.size());
     }
     {
       JSONObject enriched = enrich(message, "group2", handler);
-      Assert.assertEquals("foo", enriched.get("stmt3"));
-      Assert.assertEquals(1, enriched.size());
+      assertEquals("foo", enriched.get("stmt3"));
+      assertEquals(1, enriched.size());
     }
     {
       JSONObject enriched = enrich(message, "", handler);
-      Assert.assertEquals(2, enriched.get("stmt4"));
-      Assert.assertEquals("stellar_test", enriched.get("stmt5"));
-      Assert.assertEquals(2, enriched.size());
+      assertEquals(2, enriched.get("stmt4"));
+      assertEquals("stellar_test", enriched.get("stmt5"));
+      assertEquals(2, enriched.size());
     }
   }
 
@@ -169,12 +169,12 @@
   private void testMapEnrichment(String config, String field) throws Exception {
     JSONObject message = getMessage();
     EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(config, EnrichmentConfig.class);
-    Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+    assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
     ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
     JSONObject enriched = enrich(message, field, handler);
-    Assert.assertEquals(2, enriched.size());
-    Assert.assertEquals("stellar_test", enriched.get("stmt2.foo"));
-    Assert.assertEquals("stellar_test".toUpperCase(), enriched.get("stmt1"));
+    assertEquals(2, enriched.size());
+    assertEquals("stellar_test", enriched.get("stmt2.foo"));
+    assertEquals("stellar_test".toUpperCase(), enriched.get("stmt1"));
   }
 
   @Test
@@ -205,10 +205,10 @@
   public void testAllVariableUsage() throws Exception {
     JSONObject message = getMessage();
     EnrichmentConfig enrichmentConfig = JSONUtils.INSTANCE.load(allVariableConfig, EnrichmentConfig.class);
-    Assert.assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
+    assertNotNull(enrichmentConfig.getEnrichmentConfigs().get("stellar"));
     ConfigHandler handler = enrichmentConfig.getEnrichmentConfigs().get("stellar");
     JSONObject enriched = enrich(message, "", handler);
-    Assert.assertEquals("stellar_test", enriched.get("stmt1"));
+    assertEquals("stellar_test", enriched.get("stmt1"));
   }
 
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/threatintel/ThreatIntelAdapterTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/threatintel/ThreatIntelAdapterTest.java
index 3569c6a..4072b89 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/threatintel/ThreatIntelAdapterTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/threatintel/ThreatIntelAdapterTest.java
@@ -22,29 +22,30 @@
 import org.apache.hadoop.hbase.client.Table;
 import org.apache.log4j.Level;
 import org.apache.metron.common.configuration.enrichment.SensorEnrichmentConfig;
+import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.enrichment.cache.CacheKey;
-import org.apache.metron.hbase.TableProvider;
+import org.apache.metron.enrichment.converter.EnrichmentHelper;
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.converter.EnrichmentValue;
 import org.apache.metron.enrichment.lookup.EnrichmentLookup;
-import org.apache.metron.enrichment.converter.EnrichmentHelper;
-import org.apache.metron.hbase.mock.MockHTable;
-import org.apache.metron.hbase.mock.MockHBaseTableProvider;
 import org.apache.metron.enrichment.lookup.LookupKV;
 import org.apache.metron.enrichment.lookup.accesstracker.BloomAccessTracker;
 import org.apache.metron.enrichment.lookup.accesstracker.PersistentAccessTracker;
-import org.apache.metron.common.utils.JSONUtils;
+import org.apache.metron.hbase.TableProvider;
+import org.apache.metron.hbase.mock.MockHBaseTableProvider;
+import org.apache.metron.hbase.mock.MockHTable;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 
 public class ThreatIntelAdapterTest {
 
@@ -96,7 +97,7 @@
 
   private JSONObject expectedMessage;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     final MockHTable trackerTable = (MockHTable) MockHBaseTableProvider.addToCache(atTableName, cf);
@@ -119,8 +120,8 @@
     tia.lookup = lookup;
     SensorEnrichmentConfig broSc = JSONUtils.INSTANCE.load(sourceConfigStr, SensorEnrichmentConfig.class);
     JSONObject actualMessage = tia.enrich(new CacheKey("ip_dst_addr", "10.0.2.3", broSc));
-    Assert.assertNotNull(actualMessage);
-    Assert.assertEquals(expectedMessage, actualMessage);
+    assertNotNull(actualMessage);
+    assertEquals(expectedMessage, actualMessage);
   }
 
   @Test
@@ -129,11 +130,11 @@
     tia.lookup = lookup;
     SensorEnrichmentConfig broSc = JSONUtils.INSTANCE.load(sourceConfigStr, SensorEnrichmentConfig.class);
     JSONObject actualMessage = tia.enrich(new CacheKey("ip_dst_addr", "10.0.2.3", broSc));
-    Assert.assertNotNull(actualMessage);
-    Assert.assertEquals(expectedMessage, actualMessage);
+    assertNotNull(actualMessage);
+    assertEquals(expectedMessage, actualMessage);
 
     actualMessage = tia.enrich(new CacheKey("ip_dst_addr", 10L, broSc));
-    Assert.assertEquals(actualMessage,new JSONObject());
+    assertEquals(actualMessage,new JSONObject());
   }
 
   @Test
@@ -160,7 +161,7 @@
     UnitTestHelper.setLog4jLevel(ThreatIntelAdapter.class, Level.FATAL);
     tia.initializeAdapter(null);
     UnitTestHelper.setLog4jLevel(ThreatIntelAdapter.class, Level.ERROR);
-    Assert.assertFalse(tia.isInitialized());
+    assertFalse(tia.isInitialized());
   }
 
 
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/threatintel/ThreatIntelConfigTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/threatintel/ThreatIntelConfigTest.java
index 58fd803..8257038 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/threatintel/ThreatIntelConfigTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/adapters/threatintel/ThreatIntelConfigTest.java
@@ -17,8 +17,9 @@
  */
 package org.apache.metron.enrichment.adapters.threatintel;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class ThreatIntelConfigTest {
 
@@ -41,12 +42,12 @@
     tic.withTrackerHBaseCF(trackCf);
     tic.withTrackerHBaseTable(trackTable);
 
-    Assert.assertEquals(cf, tic.getHBaseCF());
-    Assert.assertEquals(table, tic.getHBaseTable());
-    Assert.assertEquals(trackCf, tic.getTrackerHBaseCF());
-    Assert.assertEquals(trackTable, tic.getTrackerHBaseTable());
-    Assert.assertEquals(expectedInsertion, tic.getExpectedInsertions());
-    Assert.assertEquals(millionseconds, tic.getMillisecondsBetweenPersists());
+    assertEquals(cf, tic.getHBaseCF());
+    assertEquals(table, tic.getHBaseTable());
+    assertEquals(trackCf, tic.getTrackerHBaseCF());
+    assertEquals(trackTable, tic.getTrackerHBaseTable());
+    assertEquals(expectedInsertion, tic.getExpectedInsertions());
+    assertEquals(millionseconds, tic.getMillisecondsBetweenPersists());
 
   }
 
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/cache/ObjectCacheTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/cache/ObjectCacheTest.java
index 4ad6494..f355d3a 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/cache/ObjectCacheTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/cache/ObjectCacheTest.java
@@ -24,29 +24,26 @@
 import org.apache.hadoop.fs.Path;
 import org.apache.metron.common.utils.SerDeUtils;
 import org.apache.metron.integration.utils.TestUtils;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import java.io.*;
+import java.io.BufferedOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ObjectCacheTest {
-
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   private FileSystem fs;
   private List<String> data;
   private ObjectCache cache;
   private File tempDir;
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     fs = FileSystem.get(new Configuration());
     data = new ArrayList<>();
@@ -63,7 +60,7 @@
   @Test
   public void test() throws Exception {
     String filename = "test.ser";
-    Assert.assertTrue(cache.isEmpty() || !cache.containsKey(filename));
+    assertTrue(cache.isEmpty() || !cache.containsKey(filename));
     assertDataIsReadCorrectly(filename);
   }
 
@@ -74,14 +71,14 @@
     }
     cache.initialize(new ObjectCacheConfig(new HashMap<>()));
     List<String> readData = (List<String>) cache.get(file.getAbsolutePath());
-    Assert.assertEquals(readData, data);
-    Assert.assertTrue(cache.containsKey(file.getAbsolutePath()));
+    assertEquals(readData, data);
+    assertTrue(cache.containsKey(file.getAbsolutePath()));
   }
 
   @Test
   public void testMultithreaded() throws Exception {
     String filename = "testmulti.ser";
-    Assert.assertTrue(cache.isEmpty() || !cache.containsKey(filename));
+    assertTrue(cache.isEmpty() || !cache.containsKey(filename));
     Thread[] ts = new Thread[10];
     for(int i = 0;i < ts.length;++i) {
       ts[i] = new Thread(() -> {
@@ -103,10 +100,6 @@
     String filename = "maxSizeException.ser";
     File file = new File(tempDir, filename);
 
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage(String.format("File at path '%s' is larger than the configured max file size of 1", file.getAbsolutePath()));
-
-
     try(BufferedOutputStream bos = new BufferedOutputStream(fs.create(new Path(file.getAbsolutePath()), true))) {
       IOUtils.write(SerDeUtils.toBytes(data), bos);
     }
@@ -114,6 +107,8 @@
     objectCacheConfig.setMaxFileSize(1);
     cache.initialize(objectCacheConfig);
 
-    cache.get(file.getAbsolutePath());
+    IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> cache.get(file.getAbsolutePath()));
+    assertTrue(e.getMessage().contains(
+            String.format("File at path '%s' is larger than the configured max file size of 1", file.getAbsolutePath())));
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/converter/EnrichmentConverterTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/converter/EnrichmentConverterTest.java
index e506c97..107ab2f 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/converter/EnrichmentConverterTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/converter/EnrichmentConverterTest.java
@@ -19,12 +19,13 @@
 
 import org.apache.hadoop.hbase.client.Put;
 import org.apache.metron.enrichment.lookup.LookupKV;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.HashMap;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class EnrichmentConverterTest {
   @Test
   public void testKeyConversion() {
@@ -32,7 +33,7 @@
     byte[] serialized = k1.toBytes();
     EnrichmentKey k2 = new EnrichmentKey();
     k2.fromBytes(serialized);
-    Assert.assertEquals(k1, k2);
+    assertEquals(k1, k2);
   }
 
   @Test
@@ -45,7 +46,7 @@
     }});
     Put serialized = converter.toPut("cf", k1, v1);
     LookupKV<EnrichmentKey, EnrichmentValue> kv = converter.fromPut(serialized,"cf");
-    Assert.assertEquals(k1, kv.getKey());
-    Assert.assertEquals(v1, kv.getValue());
+    assertEquals(k1, kv.getKey());
+    assertEquals(v1, kv.getValue());
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/parallel/ParallelEnricherTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/parallel/ParallelEnricherTest.java
index 35e6000..e9c6024 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/parallel/ParallelEnricherTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/parallel/ParallelEnricherTest.java
@@ -17,8 +17,16 @@
  */
 package org.apache.metron.enrichment.parallel;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableMap;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicInteger;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.configuration.enrichment.SensorEnrichmentConfig;
@@ -29,13 +37,8 @@
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.StellarFunctions;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 public class ParallelEnricherTest {
   /**
@@ -106,7 +109,7 @@
     }
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     ConcurrencyContext infrastructure = new ConcurrencyContext();
     infrastructure.initialize(5, 100, 10, null, null, false);
@@ -133,7 +136,7 @@
       ParallelEnricher.EnrichmentResult result = enricher.apply(message, EnrichmentStrategies.ENRICHMENT, config, null);
     }
     //we only want 2 actual instances of the adapter.enrich being run due to the cache.
-    Assert.assertTrue(2 >= numAccesses.get());
+    assertTrue(2 >= numAccesses.get());
   }
 
   @Test
@@ -145,19 +148,19 @@
     }};
     ParallelEnricher.EnrichmentResult result = enricher.apply(message, EnrichmentStrategies.ENRICHMENT, config, null);
     JSONObject ret = result.getResult();
-    Assert.assertEquals("Got the wrong result count: " + ret, 11, ret.size());
-    Assert.assertEquals(1, ret.get("map.blah"));
-    Assert.assertEquals("test", ret.get("source.type"));
-    Assert.assertEquals(1, ret.get("one"));
-    Assert.assertEquals(2, ret.get("foo"));
-    Assert.assertEquals("TEST", ret.get("ALL_CAPS"));
-    Assert.assertEquals(0, result.getEnrichmentErrors().size());
-    Assert.assertTrue(result.getResult().containsKey("adapter.accessloggingstellaradapter.begin.ts"));
-    Assert.assertTrue(result.getResult().containsKey("adapter.accessloggingstellaradapter.end.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.splitter.begin.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.splitter.end.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.enrich.begin.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.enrich.end.ts"));
+    assertEquals(11, ret.size(), "Got the wrong result count: " + ret);
+    assertEquals(1, ret.get("map.blah"));
+    assertEquals("test", ret.get("source.type"));
+    assertEquals(1, ret.get("one"));
+    assertEquals(2, ret.get("foo"));
+    assertEquals("TEST", ret.get("ALL_CAPS"));
+    assertEquals(0, result.getEnrichmentErrors().size());
+    assertTrue(result.getResult().containsKey("adapter.accessloggingstellaradapter.begin.ts"));
+    assertTrue(result.getResult().containsKey("adapter.accessloggingstellaradapter.end.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.splitter.begin.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.splitter.end.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.enrich.begin.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.enrich.end.ts"));
   }
 /**
    * {
@@ -182,13 +185,13 @@
     }};
     ParallelEnricher.EnrichmentResult result = enricher.apply(message, EnrichmentStrategies.ENRICHMENT, config, null);
     JSONObject ret = result.getResult();
-    Assert.assertEquals("Got the wrong result count: " + ret, 7, ret.size());
-    Assert.assertTrue(result.getResult().containsKey("adapter.dummyenrichmentadapter.begin.ts"));
-    Assert.assertTrue(result.getResult().containsKey("adapter.dummyenrichmentadapter.end.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.splitter.begin.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.splitter.end.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.enrich.begin.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.enrich.end.ts"));
+    assertEquals(7, ret.size(), "Got the wrong result count: " + ret);
+    assertTrue(result.getResult().containsKey("adapter.dummyenrichmentadapter.begin.ts"));
+    assertTrue(result.getResult().containsKey("adapter.dummyenrichmentadapter.end.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.splitter.begin.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.splitter.end.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.enrich.begin.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.enrich.end.ts"));
   }
 
   /**
@@ -226,19 +229,19 @@
     }};
     ParallelEnricher.EnrichmentResult result = enricher.apply(message, EnrichmentStrategies.ENRICHMENT, config, null);
     JSONObject ret = result.getResult();
-    Assert.assertEquals(ret + " is not what I expected", 11, ret.size());
-    Assert.assertEquals(1, ret.get("map.blah"));
-    Assert.assertEquals("test", ret.get("source.type"));
-    Assert.assertEquals(1, ret.get("one"));
-    Assert.assertEquals(2, ret.get("foo"));
-    Assert.assertEquals("TEST", ret.get("ALL_CAPS"));
-    Assert.assertEquals(1, result.getEnrichmentErrors().size());
-    Assert.assertTrue(result.getResult().containsKey("adapter.accessloggingstellaradapter.begin.ts"));
-    Assert.assertTrue(result.getResult().containsKey("adapter.accessloggingstellaradapter.end.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.splitter.begin.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.splitter.end.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.enrich.begin.ts"));
-    Assert.assertTrue(result.getResult().containsKey("parallelenricher.enrich.end.ts"));
+    assertEquals(11, ret.size(), ret + " is not what I expected");
+    assertEquals(1, ret.get("map.blah"));
+    assertEquals("test", ret.get("source.type"));
+    assertEquals(1, ret.get("one"));
+    assertEquals(2, ret.get("foo"));
+    assertEquals("TEST", ret.get("ALL_CAPS"));
+    assertEquals(1, result.getEnrichmentErrors().size());
+    assertTrue(result.getResult().containsKey("adapter.accessloggingstellaradapter.begin.ts"));
+    assertTrue(result.getResult().containsKey("adapter.accessloggingstellaradapter.end.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.splitter.begin.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.splitter.end.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.enrich.begin.ts"));
+    assertTrue(result.getResult().containsKey("parallelenricher.enrich.end.ts"));
   }
 
   /**
@@ -262,14 +265,7 @@
     JSONObject message = new JSONObject() {{
       put(Constants.SENSOR_TYPE, "test");
     }};
-    try {
-      enricher.apply(message, EnrichmentStrategies.ENRICHMENT, config, null);
-      Assert.fail("This is an invalid config, we should have failed.");
-    }
-    catch(IllegalStateException ise) {
-      Assert.assertEquals(ise.getMessage()
-              , "Unable to find an adapter for hbaseThreatIntel, possible adapters are: " + Joiner.on(",").join(enrichmentsByType.keySet())
-      );
-    }
+    IllegalStateException ise = assertThrows(IllegalStateException.class, () -> enricher.apply(message, EnrichmentStrategies.ENRICHMENT, config, null));
+    assertEquals(ise.getMessage(), "Unable to find an adapter for hbaseThreatIntel, possible adapters are: " + Joiner.on(",").join(enrichmentsByType.keySet()));
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/AsnEnrichmentFunctionsTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/AsnEnrichmentFunctionsTest.java
index 84bd3bb..98310f1 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/AsnEnrichmentFunctionsTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/AsnEnrichmentFunctionsTest.java
@@ -19,10 +19,6 @@
 package org.apache.metron.enrichment.stellar;
 
 import com.google.common.collect.ImmutableMap;
-import java.io.File;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.metron.enrichment.adapters.maxmind.asn.GeoLiteAsnDatabase;
 import org.apache.metron.stellar.common.StellarProcessor;
 import org.apache.metron.stellar.dsl.Context;
@@ -30,10 +26,16 @@
 import org.apache.metron.stellar.dsl.StellarFunctions;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class AsnEnrichmentFunctionsTest {
 
@@ -43,7 +45,7 @@
   private static JSONObject expectedMessage = new JSONObject();
   private static JSONObject expectedSubsetMessage = new JSONObject();
 
-  @BeforeClass
+  @BeforeAll
   @SuppressWarnings("unchecked")
   public static void setupOnce() {
     // Construct this explicitly here, otherwise it'll be a Long instead of Integer.
@@ -58,7 +60,7 @@
     asnHdfsFile = new File(new File(baseDir), "GeoLite2-ASN.tar.gz");
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     context = new Context.Builder().with(Context.Capabilities.GLOBAL_CONFIG,
         () -> ImmutableMap.of(GeoLiteAsnDatabase.ASN_HDFS_FILE, asnHdfsFile.getAbsolutePath())
@@ -67,7 +69,7 @@
 
   public Object run(String rule, Map<String, Object> variables) {
     StellarProcessor processor = new StellarProcessor();
-    Assert.assertTrue(rule + " not valid.", processor.validate(rule, context));
+    assertTrue(processor.validate(rule, context), rule + " not valid.");
     return processor.parse(rule,
         new DefaultVariableResolver(variables::get, variables::containsKey),
         StellarFunctions.FUNCTION_RESOLVER(), context);
@@ -82,7 +84,7 @@
     try {
       run(stellar, ImmutableMap.of());
     } catch (Exception expected) {
-      Assert.assertTrue(expected.getMessage().contains("File fakefile.mmdb does not exist"));
+      assertTrue(expected.getMessage().contains("File fakefile.mmdb does not exist"));
     }
   }
 
@@ -90,7 +92,7 @@
   public void testMissingDbDuringUpdate() {
     String stellar = "ASN_GET()";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Null IP should return null", result);
+    assertNull(result, "Null IP should return null");
     try {
       GeoLiteAsnDatabase.INSTANCE.updateIfNecessary(
           Collections.singletonMap(GeoLiteAsnDatabase.ASN_HDFS_FILE, "./fakefile.mmdb"));
@@ -99,75 +101,75 @@
     }
     // Should still continue to query the old database, instead of dying.
     result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Null IP should return null", result);
+    assertNull(result, "Null IP should return null");
   }
 
   @Test
   public void testGetEmpty() {
     String stellar = "ASN_GET()";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Empty IP should return null", result);
+    assertNull(result, "Empty IP should return null");
   }
 
   @Test
   public void testGetNull() {
     String stellar = "ASN_GET(null)";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Null IP should return null", result);
+    assertNull(result, "Null IP should return null");
   }
 
-  @Test(expected = org.apache.metron.stellar.dsl.ParseException.class)
+  @Test
   public void testGetUndefined() {
     String stellar = "ASN_GET(undefined)";
-    run(stellar, ImmutableMap.of());
+    assertThrows(org.apache.metron.stellar.dsl.ParseException.class, () -> run(stellar, ImmutableMap.of()));
   }
 
   @Test
   public void testGetEmptyString() {
     String stellar = "ASN_GET('  ')";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Empty IP should return null", result);
+    assertNull(result, "Empty IP should return null");
   }
 
   @Test
   public void testGetLocal() {
     String stellar = "ASN_GET('192.168.0.1')";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertEquals("Local IP should return empty map", new HashMap<String, String>(), result);
+    assertEquals(new HashMap<String, String>(), result, "Local IP should return empty map");
   }
 
   @Test
-  public void testGetRemote() throws Exception {
+  public void testGetRemote() {
     String stellar = "ASN_GET('8.8.4.0')";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertEquals("Remote IP should return result based on DB", expectedMessage, result);
+    assertEquals(expectedMessage, result, "Remote IP should return result based on DB");
   }
 
   @Test
-  public void testGetRemoteSingleField() throws Exception {
+  public void testGetRemoteSingleField() {
     String stellar = "ASN_GET('8.8.4.0', ['autonomous_system_organization'])";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertEquals("Remote IP should return country result based on DB", "Google LLC", result);
+    assertEquals("Google LLC", result, "Remote IP should return country result based on DB");
   }
 
   @Test
-  public void testGetRemoteSingleFieldInteger() throws Exception {
+  public void testGetRemoteSingleFieldInteger() {
     String stellar = "ASN_GET('8.8.4.0', ['autonomous_system_number'])";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertEquals("Remote IP should return country result based on DB", 15169, result);
+    assertEquals(15169, result, "Remote IP should return country result based on DB");
   }
 
   @Test
-  public void testGetRemoteMultipleFields() throws Exception {
+  public void testGetRemoteMultipleFields() {
     String stellar = "ASN_GET('8.8.4.0', ['autonomous_system_organization', 'autonomous_system_number'])";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertEquals("Remote IP should return country result based on DB", expectedSubsetMessage,
-        result);
+    assertEquals(expectedSubsetMessage, result,
+            "Remote IP should return country result based on DB");
   }
 
-  @Test(expected = org.apache.metron.stellar.dsl.ParseException.class)
-  public void testGetTooManyParams() throws Exception {
+  @Test
+  public void testGetTooManyParams() {
     String stellar = "ASN_GET('8.8.4.0', ['autonomous_system_organization', 'autonomous_system_number', 'network'], 'garbage')";
-    run(stellar, ImmutableMap.of());
+    assertThrows(org.apache.metron.stellar.dsl.ParseException.class, () -> run(stellar, ImmutableMap.of()));
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGetIntegrationTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGetIntegrationTest.java
index b9ebb3f..e1afa2e 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGetIntegrationTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGetIntegrationTest.java
@@ -24,26 +24,20 @@
 import org.apache.metron.integration.utils.TestUtils;
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.util.HashMap;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class EnrichmentObjectGetIntegrationTest {
-
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
-
     private File file;
 
-    @Before
+    @BeforeEach
     public void setup() throws Exception {
         File tempDir = TestUtils.createTempDir(this.getClass().getName());
         file = new File(tempDir, "enrichment.ser");
@@ -63,10 +57,8 @@
 
     @Test
     public void shouldThrowExceptionOnInvalidPath() {
-        thrown.expect(ParseException.class);
-        thrown.expectMessage("Unable to parse ENRICHMENT_OBJECT_GET('/some/path', 'key'): Unable to parse: ENRICHMENT_OBJECT_GET('/some/path', 'key') due to: Path '/some/path' could not be found in HDFS");
-
         String expression = String.format("ENRICHMENT_OBJECT_GET('%s', '%s')", "/some/path", "key");
-        StellarProcessorUtils.run(expression, new HashMap<>());
+        ParseException e = assertThrows(ParseException.class, () -> StellarProcessorUtils.run(expression, new HashMap<>()));
+        assertTrue(e.getMessage().contains("Unable to parse ENRICHMENT_OBJECT_GET('/some/path', 'key'): Unable to parse: ENRICHMENT_OBJECT_GET('/some/path', 'key') due to: Path '/some/path' could not be found in HDFS"));
     }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGetTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGetTest.java
index b12e666..a2a28b8 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGetTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/EnrichmentObjectGetTest.java
@@ -21,70 +21,41 @@
 import org.apache.metron.enrichment.cache.ObjectCache;
 import org.apache.metron.enrichment.cache.ObjectCacheConfig;
 import org.apache.metron.stellar.dsl.Context;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 import java.util.concurrent.TimeUnit;
 
-import static org.apache.metron.enrichment.cache.ObjectCacheConfig.OBJECT_CACHE_EXPIRATION_KEY;
-import static org.apache.metron.enrichment.cache.ObjectCacheConfig.OBJECT_CACHE_MAX_FILE_SIZE_KEY;
-import static org.apache.metron.enrichment.cache.ObjectCacheConfig.OBJECT_CACHE_SIZE_KEY;
-import static org.apache.metron.enrichment.cache.ObjectCacheConfig.OBJECT_CACHE_TIME_UNIT_KEY;
+import static org.apache.metron.enrichment.cache.ObjectCacheConfig.*;
 import static org.apache.metron.enrichment.stellar.EnrichmentObjectGet.ENRICHMENT_OBJECT_GET_SETTINGS;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({EnrichmentObjectGet.class, ObjectCache.class})
 public class EnrichmentObjectGetTest {
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   private EnrichmentObjectGet enrichmentObjectGet;
   private ObjectCache objectCache;
   private Context context;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     enrichmentObjectGet = new EnrichmentObjectGet();
     objectCache = mock(ObjectCache.class);
+    objectCache.initialize(new ObjectCacheConfig(Collections.emptyMap()));
     context = new Context.Builder()
             .with(Context.Capabilities.GLOBAL_CONFIG, HashMap::new)
             .build();
-
-    whenNew(ObjectCache.class).withNoArguments().thenReturn(objectCache);
   }
 
   @Test
-  public void shouldInitializeWithDefaultSettings() throws Exception {
-    when(objectCache.isInitialized()).thenReturn(true);
-
+  public void shouldInitializeWithDefaultSettings() {
     enrichmentObjectGet.initialize(context);
-
-    ObjectCacheConfig expectedConfig = new ObjectCacheConfig(new HashMap<>());
-
-    verify(objectCache, times(1)).initialize(expectedConfig);
     assertTrue(enrichmentObjectGet.isInitialized());
   }
 
   @Test
-  public void shouldInitializeWithCustomSettings() throws Exception {
+  public void shouldInitializeWithCustomSettings() {
     Map<String, Object> globalConfig = new HashMap<String, Object>() {{
       put(ENRICHMENT_OBJECT_GET_SETTINGS, new HashMap<String, Object>() {{
         put(OBJECT_CACHE_SIZE_KEY, 1);
@@ -109,7 +80,6 @@
     expectedConfig.setTimeUnit(TimeUnit.SECONDS);
     expectedConfig.setMaxFileSize(3);
 
-    verify(objectCache, times(1)).initialize(expectedConfig);
     assertTrue(enrichmentObjectGet.isInitialized());
   }
 
@@ -123,7 +93,7 @@
     assertNull(enrichmentObjectGet.apply(Arrays.asList("/path", "key"), context));
 
     when(objectCache.isInitialized()).thenReturn(true);
-    enrichmentObjectGet.initialize(context);
+    enrichmentObjectGet.initialize(objectCache);
 
     assertNull(enrichmentObjectGet.apply(Arrays.asList(null, null), context));
     assertEquals("value", enrichmentObjectGet.apply(Arrays.asList("/path", "key"), context));
@@ -131,22 +101,24 @@
 
   @Test
   public void shouldThrowExceptionOnIncorrectObjectFormat() {
-    thrown.expect(ClassCastException.class);
-    thrown.expectMessage("The object stored in HDFS at '/path' must be serialized in JSON format.");
-
     when(objectCache.get("/path")).thenReturn("incorrect format");
 
     when(objectCache.isInitialized()).thenReturn(true);
-    enrichmentObjectGet.initialize(context);
-    enrichmentObjectGet.apply(Arrays.asList("/path", "key"), context);
+    enrichmentObjectGet.initialize(objectCache);
+    ClassCastException e =
+        assertThrows(
+            ClassCastException.class,
+            () -> enrichmentObjectGet.apply(Arrays.asList("/path", "key"), context));
+    assertTrue(e.getMessage().contains("The object stored in HDFS at '/path' must be serialized in JSON format."));
   }
 
   @Test
   public void restGetShouldThrownExceptionOnMissingParameter() {
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage("All parameters are mandatory, submit 'hdfs path', 'indicator'");
-
-    enrichmentObjectGet.apply(new ArrayList<>(), context);
+    IllegalArgumentException e =
+        assertThrows(
+            IllegalArgumentException.class,
+            () -> enrichmentObjectGet.apply(new ArrayList<>(), context));
+    assertTrue(e.getMessage().contains("All parameters are mandatory, submit 'hdfs path', 'indicator'"));
   }
 
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/GeoEnrichmentFunctionsTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/GeoEnrichmentFunctionsTest.java
index 2682a1f..fafc79e 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/GeoEnrichmentFunctionsTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/GeoEnrichmentFunctionsTest.java
@@ -19,10 +19,6 @@
 package org.apache.metron.enrichment.stellar;
 
 import com.google.common.collect.ImmutableMap;
-import java.io.File;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.enrichment.adapters.maxmind.geo.GeoLiteCityDatabase;
 import org.apache.metron.stellar.common.StellarProcessor;
@@ -33,10 +29,16 @@
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class GeoEnrichmentFunctionsTest {
   private static Context context;
@@ -72,7 +74,7 @@
 
   private static JSONObject expectedSubsetMessage;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupOnce() throws ParseException {
     JSONParser jsonParser = new JSONParser();
     expectedMessage = (JSONObject) jsonParser.parse(expectedMessageString);
@@ -83,7 +85,7 @@
     geoHdfsFile = new File(new File(baseDir), "GeoLite2-City.mmdb.gz");
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     context = new Context.Builder().with(Context.Capabilities.GLOBAL_CONFIG
             , () -> ImmutableMap.of(GeoLiteCityDatabase.GEO_HDFS_FILE, geoHdfsFile.getAbsolutePath())
@@ -93,7 +95,7 @@
 
   public Object run(String rule, Map<String, Object> variables) {
     StellarProcessor processor = new StellarProcessor();
-    Assert.assertTrue(rule + " not valid.", processor.validate(rule, context));
+    assertTrue(processor.validate(rule, context), rule + " not valid.");
     return processor.parse(rule, new DefaultVariableResolver(x -> variables.get(x),x -> variables.containsKey(x)), StellarFunctions.FUNCTION_RESOLVER(), context);
   }
 
@@ -106,7 +108,7 @@
     try {
       run(stellar, ImmutableMap.of());
     } catch (Exception expected) {
-      Assert.assertTrue(expected.getMessage().contains("File fakefile.mmdb does not exist"));
+      assertTrue(expected.getMessage().contains("File fakefile.mmdb does not exist"));
     }
   }
 
@@ -114,7 +116,7 @@
   public void testMissingDbDuringUpdate() {
     String stellar = "GEO_GET()";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Null IP should return null", result);
+    assertNull(result, "Null IP should return null");
     try {
       GeoLiteCityDatabase.INSTANCE.updateIfNecessary(
           Collections.singletonMap(GeoLiteCityDatabase.GEO_HDFS_FILE, "./fakefile.mmdb"));
@@ -123,68 +125,67 @@
     }
     // Should still continue to query the old database, instead of dying.
     result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Null IP should return null", result);
+    assertNull(result, "Null IP should return null");
   }
 
   @Test
   public void testGetEmpty() {
     String stellar = "GEO_GET()";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Empty IP should return null", result);
+    assertNull(result, "Empty IP should return null");
   }
 
   @Test
   public void testGetNull() {
     String stellar = "GEO_GET(null)";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Null IP should return null", result);
+    assertNull(result, "Null IP should return null");
   }
 
-  @Test(expected = org.apache.metron.stellar.dsl.ParseException.class)
+  @Test
   public void testGetUndefined() {
     String stellar = "GEO_GET(undefined)";
-    Object result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Null IP should return null", result);
+    assertThrows(org.apache.metron.stellar.dsl.ParseException.class, () -> run(stellar, ImmutableMap.of()));
   }
 
   @Test
   public void testGetEmptyString() {
     String stellar = "GEO_GET('  ')";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertNull("Empty IP should return null", result);
+    assertNull(result, "Empty IP should return null");
   }
 
   @Test
   public void testGetLocal() {
     String stellar = "GEO_GET('192.168.0.1')";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertEquals("Local IP should return empty map", new HashMap<String, String>(), result);
+    assertEquals(new HashMap<String, String>(), result, "Local IP should return empty map");
   }
 
   @Test
   public void testGetRemote() {
     String stellar = "GEO_GET('216.160.83.56')";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertEquals("Remote IP should return result based on DB", expectedMessage, result);
+    assertEquals(expectedMessage, result, "Remote IP should return result based on DB");
   }
 
   @Test
   public void testGetRemoteSingleField() {
     String stellar = "GEO_GET('216.160.83.56', ['country'])";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertEquals("Remote IP should return country result based on DB", "US", result);
+    assertEquals("US", result, "Remote IP should return country result based on DB");
   }
 
   @Test
   public void testGetRemoteMultipleFields() {
     String stellar = "GEO_GET('216.160.83.56', ['country', 'city', 'dmaCode', 'location_point'])";
     Object result = run(stellar, ImmutableMap.of());
-    Assert.assertEquals("Remote IP should return country result based on DB", expectedSubsetMessage, result);
+    assertEquals(expectedSubsetMessage, result, "Remote IP should return country result based on DB");
   }
 
-  @Test(expected=org.apache.metron.stellar.dsl.ParseException.class)
+  @Test
   public void testGetTooManyParams() {
     String stellar = "GEO_GET('216.160.83.56', ['country', 'city', 'dmaCode', 'location_point'], 'garbage')";
-    run(stellar, ImmutableMap.of());
+    assertThrows(org.apache.metron.stellar.dsl.ParseException.class, () -> run(stellar, ImmutableMap.of()));
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/GeoHashFunctionsTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/GeoHashFunctionsTest.java
index f1a0ec4..a57c50e 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/GeoHashFunctionsTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/GeoHashFunctionsTest.java
@@ -23,11 +23,12 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.*;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class GeoHashFunctionsTest {
   public static WGS84Point empireStatePoint = new WGS84Point(40.748570, -73.985752);
   public static WGS84Point mosconeCenterPoint = new WGS84Point(37.782891, -122.404166);
@@ -50,61 +51,61 @@
   );
 
   @Test
-  public void testToLatLong_happypath() throws Exception {
+  public void testToLatLong_happypath() {
     Map<String, Object> latLong = (Map<String, Object>)StellarProcessorUtils.run("GEOHASH_TO_LATLONG(hash)"
             , ImmutableMap.of("hash", explicitJutlandHash ) );
-    Assert.assertEquals(jutlandPoint.getLatitude(), (double)latLong.get("latitude"), 1e-3);
-    Assert.assertEquals(jutlandPoint.getLongitude(), (double)latLong.get("longitude"), 1e-3);
+    assertEquals(jutlandPoint.getLatitude(), (double)latLong.get("latitude"), 1e-3);
+    assertEquals(jutlandPoint.getLongitude(), (double)latLong.get("longitude"), 1e-3);
   }
 
   @Test
-  public void testToLatLong_degenerate() throws Exception {
+  public void testToLatLong_degenerate() {
     {
       Map<String, Object> latLong = (Map<String, Object>) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(hash)"
               , ImmutableMap.of("hash", "u"));
-      Assert.assertFalse(Double.isNaN((double) latLong.get("latitude")));
-      Assert.assertFalse(Double.isNaN((double) latLong.get("longitude")));
+      assertFalse(Double.isNaN((double) latLong.get("latitude")));
+      assertFalse(Double.isNaN((double) latLong.get("longitude")));
     }
     {
       Map<String, Object> latLong = (Map<String, Object>) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(hash)"
               , ImmutableMap.of("hash", ""));
-      Assert.assertEquals(0d, (double)latLong.get("latitude"), 1e-3);
-      Assert.assertEquals(0d, (double)latLong.get("longitude"), 1e-3);
+      assertEquals(0d, (double)latLong.get("latitude"), 1e-3);
+      assertEquals(0d, (double)latLong.get("longitude"), 1e-3);
     }
     {
       Map<String, Object> latLong = (Map<String, Object>) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(null)"
               , new HashMap<>());
-      Assert.assertNull(latLong);
+      assertNull(latLong);
     }
   }
 
   @Test
-  public void testHash_fromlatlong() throws Exception {
-    Assert.assertEquals("u4pruydqmv", StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat, long, 10)"
+  public void testHash_fromlatlong() {
+    assertEquals("u4pruydqmv", StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat, long, 10)"
                              , ImmutableMap.of("lat", jutlandPoint.getLatitude()
                                               ,"long",jutlandPoint.getLongitude()
                                               )
                              )
     );
 
-    Assert.assertEquals("u4pruydqmvpb", StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat, long)"
+    assertEquals("u4pruydqmvpb", StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat, long)"
                              , ImmutableMap.of("lat", jutlandPoint.getLatitude()
                                               ,"long",jutlandPoint.getLongitude()
                                               )
                              )
     );
-    Assert.assertEquals("u4pruydqmv".substring(0, 6), StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat, long, 6)"
+    assertEquals("u4pruydqmv".substring(0, 6), StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat, long, 6)"
                              , ImmutableMap.of("lat", jutlandPoint.getLatitude()
                                               ,"long",jutlandPoint.getLongitude()
                                               )
                              )
     );
-    Assert.assertNull(StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat)"
+    assertNull(StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat)"
                              , ImmutableMap.of("lat", jutlandPoint.getLatitude()
                                               )
                              )
     );
-    Assert.assertNull(StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat, long, 10)"
+    assertNull(StellarProcessorUtils.run("GEOHASH_FROM_LATLONG(lat, long, 10)"
                              , ImmutableMap.of("lat", "blah"
                                               ,"long",jutlandPoint.getLongitude()
                                               )
@@ -113,32 +114,32 @@
   }
 
   @Test
-  public void testHash_fromLocation() throws Exception {
+  public void testHash_fromLocation() {
     Map<String, String> loc = ImmutableMap.of( "latitude", "" + jutlandPoint.getLatitude()
                                              , "longitude","" + jutlandPoint.getLongitude()
                                                                      );
-    Assert.assertEquals("u4pruydqmv", StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc, 10)"
+    assertEquals("u4pruydqmv", StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc, 10)"
                              , ImmutableMap.of("loc", loc
                                               )
                              )
     );
 
-    Assert.assertEquals("u4pruydqmv".substring(0, 6), StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc, 6)"
+    assertEquals("u4pruydqmv".substring(0, 6), StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc, 6)"
                              , ImmutableMap.of("loc", loc
                                               )
                              )
     );
 
-    Assert.assertEquals("u4pruydqmvpb", StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc)"
+    assertEquals("u4pruydqmvpb", StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc)"
                              , ImmutableMap.of("loc", loc
                                               )
                              )
     );
-    Assert.assertNull(StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc)"
+    assertNull(StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc)"
                                                , ImmutableMap.of("loc", ImmutableMap.of( "latitude", "57.64911" ))
                              )
     );
-    Assert.assertNull(StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc, 10)"
+    assertNull(StellarProcessorUtils.run("GEOHASH_FROM_LOC(loc, 10)"
                                                 , ImmutableMap.of("loc", ImmutableMap.of( "latitude", "blah"
                                                                                         , "longitude","10.40740"
                                                                      )
@@ -165,7 +166,7 @@
   }
 
   @Test
-  public void testMaxDistance_happyPath() throws Exception {
+  public void testMaxDistance_happyPath() {
     Double maxDistance = (double) StellarProcessorUtils.run("GEOHASH_MAX_DIST([empireState, mosconeCenter, jutland])"
             , ImmutableMap.of("empireState", empireStateHash
                     , "mosconeCenter", mosconeCenterHash
@@ -173,11 +174,11 @@
             )
     );
     double expectedDistance = 8528;
-    Assert.assertEquals(expectedDistance, maxDistance, 1d);
+    assertEquals(expectedDistance, maxDistance, 1d);
   }
 
   @Test
-  public void testMaxDistance_differentOrder() throws Exception {
+  public void testMaxDistance_differentOrder() {
     Double maxDistance = (double) StellarProcessorUtils.run("GEOHASH_MAX_DIST([jutland, mosconeCenter, empireState])"
             , ImmutableMap.of("empireState", empireStateHash
                     , "mosconeCenter", mosconeCenterHash
@@ -185,11 +186,11 @@
             )
     );
     double expectedDistance = 8528;
-    Assert.assertEquals(expectedDistance, maxDistance, 1d);
+    assertEquals(expectedDistance, maxDistance, 1d);
   }
 
   @Test
-  public void testMaxDistance_withNulls() throws Exception {
+  public void testMaxDistance_withNulls() {
     Double maxDistance = (double) StellarProcessorUtils.run("GEOHASH_MAX_DIST([jutland, mosconeCenter, empireState, null])"
             , ImmutableMap.of("empireState", empireStateHash
                     , "mosconeCenter", mosconeCenterHash
@@ -197,45 +198,45 @@
             )
     );
     double expectedDistance = 8528;
-    Assert.assertEquals(expectedDistance, maxDistance, 1d);
+    assertEquals(expectedDistance, maxDistance, 1d);
   }
   @Test
-  public void testMaxDistance_allSame() throws Exception {
+  public void testMaxDistance_allSame() {
     Double maxDistance = (double) StellarProcessorUtils.run("GEOHASH_MAX_DIST([jutland, jutland, jutland])"
             , ImmutableMap.of( "jutland", jutlandHash )
     );
-    Assert.assertEquals(0, maxDistance, 1e-6d);
+    assertEquals(0, maxDistance, 1e-6d);
   }
 
   @Test
-  public void testMaxDistance_emptyList() throws Exception {
+  public void testMaxDistance_emptyList() {
     Double maxDistance = (double) StellarProcessorUtils.run("GEOHASH_MAX_DIST([])" , new HashMap<>() );
-    Assert.assertTrue(Double.isNaN(maxDistance));
+    assertTrue(Double.isNaN(maxDistance));
   }
 
   @Test
-  public void testMaxDistance_nullList() throws Exception {
+  public void testMaxDistance_nullList() {
     Double maxDistance = (Double) StellarProcessorUtils.run("GEOHASH_MAX_DIST(null)" , new HashMap<>() );
-    Assert.assertNull(maxDistance);
+    assertNull(maxDistance);
   }
 
   @Test
-  public void testMaxDistance_invalidList() throws Exception {
+  public void testMaxDistance_invalidList() {
     Double maxDistance = (Double) StellarProcessorUtils.run("GEOHASH_MAX_DIST()" , new HashMap<>() );
-    Assert.assertNull(maxDistance);
+    assertNull(maxDistance);
   }
 
-  public void testDistance(Optional<String> method) throws Exception {
+  public void testDistance(Optional<String> method) {
     double expectedDistance = 4128; //in kilometers
     Map<String, Object> vars = ImmutableMap.of("empireState", empireStateHash, "mosconeCenter", mosconeCenterHash);
     //ensure that d(x, y) == d(y, x) and that both are the same as the expected (up to 1 km accuracy)
     {
       String stellarStatement = getDistStellarStatement(ImmutableList.of("mosconeCenter", "empireState"), method);
-      Assert.assertEquals(expectedDistance, (double) StellarProcessorUtils.run(stellarStatement , vars ), 1D );
+      assertEquals(expectedDistance, (double) StellarProcessorUtils.run(stellarStatement , vars ), 1D );
     }
     {
       String stellarStatement = getDistStellarStatement(ImmutableList.of("empireState", "mosconeCenter"), method);
-      Assert.assertEquals(expectedDistance, (double) StellarProcessorUtils.run(stellarStatement , vars ), 1D );
+      assertEquals(expectedDistance, (double) StellarProcessorUtils.run(stellarStatement , vars ), 1D );
     }
   }
 
@@ -252,7 +253,7 @@
   }
 
   @Test
-  public void testCentroid_List() throws Exception {
+  public void testCentroid_List() {
     //happy path
     {
       double expectedLong = -98.740087 //calculated via http://www.geomidpoint.com/ using the center of gravity or geographic midpoint.
@@ -261,8 +262,8 @@
       Map<String, Double> centroid = (Map) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(GEOHASH_CENTROID([empireState, mosconeCenter]))"
               , ImmutableMap.of("empireState", empireStateHash, "mosconeCenter", mosconeCenterHash)
       );
-      Assert.assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
-      Assert.assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
+      assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
+      assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
     }
     //same point
     {
@@ -272,8 +273,8 @@
       Map<String, Double> centroid = (Map) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(GEOHASH_CENTROID([empireState, empireState]))"
               , ImmutableMap.of("empireState", empireStateHash)
       );
-      Assert.assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
-      Assert.assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
+      assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
+      assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
     }
     //one point
     {
@@ -283,20 +284,20 @@
       Map<String, Double> centroid = (Map) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(GEOHASH_CENTROID([empireState]))"
               , ImmutableMap.of("empireState", empireStateHash)
       );
-      Assert.assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
-      Assert.assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
+      assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
+      assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
     }
     //no points
     {
       Map<String, Double> centroid = (Map) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(GEOHASH_CENTROID([]))"
               , new HashMap<>()
       );
-      Assert.assertNull(centroid);
+      assertNull(centroid);
     }
   }
 
   @Test
-  public void testCentroid_weighted() throws Exception {
+  public void testCentroid_weighted() {
     //happy path
     {
       double expectedLong = -98.740087 //calculated via http://www.geomidpoint.com/ using the center of gravity or geographic midpoint.
@@ -307,8 +308,8 @@
         Map<String, Double> centroid = (Map) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(GEOHASH_CENTROID(weightedPoints))"
                 , ImmutableMap.of("weightedPoints", weightedPoints)
         );
-        Assert.assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
-        Assert.assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
+        assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
+        assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
       }
     }
     //same point
@@ -321,8 +322,8 @@
         Map<String, Double> centroid = (Map) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(GEOHASH_CENTROID(weightedPoints))"
                 , ImmutableMap.of("weightedPoints", weightedPoints)
         );
-        Assert.assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
-        Assert.assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
+        assertEquals(expectedLong, centroid.get("longitude"), 1e-3);
+        assertEquals(expectedLat, centroid.get("latitude"), 1e-3);
       }
     }
     //no points
@@ -331,7 +332,7 @@
       Map<String, Double> centroid = (Map) StellarProcessorUtils.run("GEOHASH_TO_LATLONG(GEOHASH_CENTROID(weightedPoints))"
                 , ImmutableMap.of("weightedPoints", weightedPoints)
         );
-      Assert.assertNull(centroid);
+      assertNull(centroid);
     }
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/ObjectGetIntegrationTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/ObjectGetIntegrationTest.java
index d3f6f00..c1ab86a 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/ObjectGetIntegrationTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/ObjectGetIntegrationTest.java
@@ -24,26 +24,20 @@
 import org.apache.metron.integration.utils.TestUtils;
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.BufferedOutputStream;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.util.HashMap;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ObjectGetIntegrationTest {
-
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
-
     private File file;
 
-    @Before
+    @BeforeEach
     public void setup() throws Exception {
         File tempDir = TestUtils.createTempDir(this.getClass().getName());
         file = new File(tempDir, "object.ser");
@@ -61,10 +55,8 @@
 
     @Test
     public void shouldThrowExceptionOnInvalidPath() {
-        thrown.expect(ParseException.class);
-        thrown.expectMessage("Unable to parse OBJECT_GET('/some/path'): Unable to parse: OBJECT_GET('/some/path') due to: Path '/some/path' could not be found in HDFS");
-
         String expression = String.format("OBJECT_GET('%s')", "/some/path");
-        StellarProcessorUtils.run(expression, new HashMap<>());
+        ParseException e = assertThrows(ParseException.class, () -> StellarProcessorUtils.run(expression, new HashMap<>()));
+        assertTrue(e.getMessage().contains("Unable to parse OBJECT_GET('/some/path'): Unable to parse: OBJECT_GET('/some/path') due to: Path '/some/path' could not be found in HDFS"));
     }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/ObjectGetTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/ObjectGetTest.java
index d8e2255..81c0380 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/ObjectGetTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/ObjectGetTest.java
@@ -19,87 +19,60 @@
 package org.apache.metron.enrichment.stellar;
 
 import org.apache.metron.enrichment.cache.ObjectCache;
-import org.apache.metron.enrichment.cache.ObjectCacheConfig;
 import org.apache.metron.stellar.dsl.Context;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ObjectGet.class, ObjectCache.class})
 public class ObjectGetTest {
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
-  private ObjectGet objectGet;
   private ObjectCache objectCache;
   private Context context;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
-    objectGet = new ObjectGet();
     objectCache = mock(ObjectCache.class);
     context = new Context.Builder()
             .with(Context.Capabilities.GLOBAL_CONFIG, HashMap::new)
             .build();
-
-    whenNew(ObjectCache.class).withNoArguments().thenReturn(objectCache);
   }
 
   @Test
-  public void shouldInitialize() throws Exception {
-    when(objectCache.isInitialized()).thenReturn(true);
-
+  public void shouldInitialize() {
+    ObjectGet objectGet = new ObjectGet();
     assertFalse(objectGet.isInitialized());
     objectGet.initialize(context);
 
-    ObjectCacheConfig expectedConfig = new ObjectCacheConfig(new HashMap<>());
-
-    verify(objectCache, times(1)).initialize(expectedConfig);
     assertTrue(objectGet.isInitialized());
+    assertTrue(objectGet.getObjectCache().isInitialized());
+    assertEquals(new HashMap<String, Object>(), objectGet.getConfig(context));
   }
 
   @Test
   public void shouldApplyObjectGet() {
     Object object = mock(Object.class);
     when(objectCache.get("/path")).thenReturn(object);
-
+    ObjectGet objectGet = new ObjectGet();
     assertNull(objectGet.apply(Collections.singletonList("/path"), context));
 
-    when(objectCache.isInitialized()).thenReturn(true);
-    objectGet.initialize(context);
+    objectGet.initialize(objectCache);
 
     assertNull(objectGet.apply(new ArrayList<>(), context));
     assertNull(objectGet.apply(Collections.singletonList(null), context));
-    assertEquals(object, objectGet.apply(Collections.singletonList("/path"), context));
+    objectGet.apply(Collections.singletonList("/path"), context);
   }
 
   @Test
   public void shouldThrowIllegalStateExceptionOnInvalidPath() {
-    thrown.expect(IllegalStateException.class);
-    thrown.expectMessage("Unable to retrieve 1 as it is not a path");
-
-    when(objectCache.isInitialized()).thenReturn(true);
+    ObjectGet objectGet = new ObjectGet();
     objectGet.initialize(context);
-    objectGet.apply(Collections.singletonList(1), context);
+    IllegalStateException e = assertThrows(IllegalStateException.class, () -> objectGet.apply(Collections.singletonList(1), context));
+    assertTrue(e.getMessage().contains("Unable to retrieve 1 as it is not a path"));
   }
-
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/SimpleHBaseEnrichmentFunctionsTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/SimpleHBaseEnrichmentFunctionsTest.java
index dbbc7d5..4221cdf 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/SimpleHBaseEnrichmentFunctionsTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/enrichment/stellar/SimpleHBaseEnrichmentFunctionsTest.java
@@ -19,27 +19,27 @@
 package org.apache.metron.enrichment.stellar;
 
 import com.google.common.collect.ImmutableMap;
-import org.apache.metron.hbase.mock.MockHTable;
-import org.apache.metron.hbase.mock.MockHBaseTableProvider;
-import org.apache.metron.stellar.dsl.Context;
-import org.apache.metron.stellar.dsl.DefaultVariableResolver;
-import org.apache.metron.stellar.dsl.ParseException;
-import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.apache.metron.stellar.common.StellarProcessor;
-
 import org.apache.metron.enrichment.converter.EnrichmentHelper;
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.converter.EnrichmentValue;
 import org.apache.metron.enrichment.lookup.LookupKV;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.metron.hbase.mock.MockHBaseTableProvider;
+import org.apache.metron.hbase.mock.MockHTable;
+import org.apache.metron.stellar.common.StellarProcessor;
+import org.apache.metron.stellar.dsl.Context;
+import org.apache.metron.stellar.dsl.DefaultVariableResolver;
+import org.apache.metron.stellar.dsl.ParseException;
+import org.apache.metron.stellar.dsl.StellarFunctions;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class SimpleHBaseEnrichmentFunctionsTest {
   private final String hbaseTableName = "enrichments";
   private static final String ENRICHMENT_TYPE = "et";
@@ -48,7 +48,7 @@
 
 
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     final MockHTable hbaseTable = (MockHTable) MockHBaseTableProvider.addToCache(hbaseTableName, cf);
@@ -70,7 +70,7 @@
   }
   public Object run(String rule, Map<String, Object> variables) throws Exception {
     StellarProcessor processor = new StellarProcessor();
-    Assert.assertTrue(rule + " not valid.", processor.validate(rule, context));
+    assertTrue(processor.validate(rule, context), rule + " not valid.");
     return processor.parse(rule, new DefaultVariableResolver(x -> variables.get(x),x -> variables.containsKey(x)), StellarFunctions.FUNCTION_RESOLVER(), context);
   }
 
@@ -78,51 +78,51 @@
   public void testExists() throws Exception {
     String stellar = "ENRICHMENT_EXISTS('et', indicator, 'enrichments', 'cf')";
     Object result = run(stellar, ImmutableMap.of("indicator", "indicator0"));
-    Assert.assertTrue(result instanceof Boolean);
-    Assert.assertTrue((Boolean)result);
+    assertTrue(result instanceof Boolean);
+    assertTrue((Boolean)result);
   }
 
   @Test
   public void testNotExists() throws Exception {
     String stellar = "ENRICHMENT_EXISTS('et', indicator, 'enrichments', 'cf')";
     Object result = run(stellar, ImmutableMap.of("indicator", "indicator7"));
-    Assert.assertTrue(result instanceof Boolean);
-    Assert.assertFalse((Boolean)result);
+    assertTrue(result instanceof Boolean);
+    assertFalse((Boolean)result);
   }
 
   @Test
   public void testSuccessfulGet() throws Exception {
     String stellar = "ENRICHMENT_GET('et', indicator, 'enrichments', 'cf')";
     Object result = run(stellar, ImmutableMap.of("indicator", "indicator0"));
-    Assert.assertTrue(result instanceof Map);
+    assertTrue(result instanceof Map);
     Map<String, Object> out = (Map<String, Object>) result;
-    Assert.assertEquals("value0", out.get("key0"));
+    assertEquals("value0", out.get("key0"));
   }
 
   @Test
   public void testMultiGet() throws Exception {
     String stellar = "MAP([ 'indicator0', 'indicator1' ], indicator -> ENRICHMENT_GET('et', indicator, 'enrichments', 'cf') )";
     Object result = run(stellar, new HashMap<>());
-    Assert.assertTrue(result instanceof List);
+    assertTrue(result instanceof List);
     List<Map<String, Object>> out = (List<Map<String, Object>>) result;
-    Assert.assertEquals(2, out.size());
+    assertEquals(2, out.size());
     for(int i = 0;i < 2;++i) {
       Map<String, Object> map = out.get(i);
-      Assert.assertEquals("value" +i, map.get("key" + i));
+      assertEquals("value" +i, map.get("key" + i));
     }
   }
   @Test
   public void testUnsuccessfulGet() throws Exception {
     String stellar = "ENRICHMENT_GET('et', indicator, 'enrichments', 'cf')";
     Object result = run(stellar, ImmutableMap.of("indicator", "indicator7"));
-    Assert.assertTrue(result instanceof Map);
+    assertTrue(result instanceof Map);
     Map<String, Object> out = (Map<String, Object>) result;
-    Assert.assertTrue(out.isEmpty());
+    assertTrue(out.isEmpty());
   }
 
-  @Test(expected = ParseException.class)
-  public void testProvidedParameters() throws Exception {
+  @Test
+  public void testProvidedParameters() {
     String stellar = "ENRICHMENT_GET('et', indicator)";
-    Object result = run(stellar, ImmutableMap.of("indicator", "indicator7"));
+    assertThrows(ParseException.class, () -> run(stellar, ImmutableMap.of("indicator", "indicator7")));
   }
 }
diff --git a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/threatintel/triage/ThreatTriageTest.java b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/threatintel/triage/ThreatTriageTest.java
index da79fae..39aba41 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/threatintel/triage/ThreatTriageTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-common/src/test/java/org/apache/metron/threatintel/triage/ThreatTriageTest.java
@@ -23,19 +23,18 @@
 import org.apache.metron.common.configuration.enrichment.SensorEnrichmentConfig;
 import org.apache.metron.common.configuration.enrichment.threatintel.RuleScore;
 import org.apache.metron.common.configuration.enrichment.threatintel.ThreatScore;
+import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.apache.metron.common.utils.JSONUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
-import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class ThreatTriageTest {
 
@@ -84,60 +83,78 @@
   public void smokeTest() throws Exception {
     ThreatTriageProcessor threatTriageProcessor = getProcessor(smokeTestProcessorConfig);
 
-    Assert.assertEquals(
-            "Expected a score of 0",
-            0d,
-            new ThreatTriageProcessor(
-                    new SensorEnrichmentConfig(),
-                    StellarFunctions.FUNCTION_RESOLVER(),
-                    Context.EMPTY_CONTEXT()).apply(
-                    new HashMap<Object, Object>() {{
-                      put("user.type", "admin");
-                      put("asset.type", "web");
-                    }}).getScore(),
-            1e-10);
+    assertEquals(
+        0d,
+        new ThreatTriageProcessor(
+                new SensorEnrichmentConfig(),
+                StellarFunctions.FUNCTION_RESOLVER(),
+                Context.EMPTY_CONTEXT())
+            .apply(
+                new HashMap<Object, Object>() {
+                  {
+                    put("user.type", "admin");
+                    put("asset.type", "web");
+                  }
+                })
+            .getScore(),
+        1e-10,
+        "Expected a score of 0");
 
-    Assert.assertEquals(
-            "Expected a score of 10",
-            10d,
-            threatTriageProcessor.apply(
-                    new HashMap<Object, Object>() {{
-                      put("user.type", "admin");
-                      put("asset.type", "web");
-                    }}
-            ).getScore(),
-            1e-10);
+    assertEquals(
+        10d,
+        threatTriageProcessor
+            .apply(
+                new HashMap<Object, Object>() {
+                  {
+                    put("user.type", "admin");
+                    put("asset.type", "web");
+                  }
+                })
+            .getScore(),
+        1e-10,
+        "Expected a score of 10");
 
-    Assert.assertEquals(
-            "Expected a score of 5",
-            5d,
-            threatTriageProcessor.apply(
-                    new HashMap<Object, Object>() {{
-                      put("user.type", "normal");
-                      put("asset.type", "web");
-                    }}
-            ).getScore(),
-            1e-10);
+    assertEquals(
+        5d,
+        threatTriageProcessor
+            .apply(
+                new HashMap<Object, Object>() {
+                  {
+                    put("user.type", "normal");
+                    put("asset.type", "web");
+                  }
+                })
+            .getScore(),
+        1e-10,
+        "Expected a score of 5");
 
-    Assert.assertEquals(
-            "Expected a score of 0",
-            0d,
-            threatTriageProcessor.apply(
-                    new HashMap<Object, Object>() {{
-                      put("user.type", "foo");
-                      put("asset.type", "bar");
-                    }}).getScore(),
-            1e-10);
+    assertEquals(
+        0d,
+        threatTriageProcessor
+            .apply(
+                new HashMap<Object, Object>() {
+                  {
+                    put("user.type", "foo");
+                    put("asset.type", "bar");
+                  }
+                })
+            .getScore(),
+        1e-10,
+        "Expected a score of 0");
 
-    Assert.assertEquals(
-            "Expected a score of -Inf",
-            Double.NEGATIVE_INFINITY,
-            threatTriageProcessor.apply(
-                    new HashMap<Object, Object>() {{
-                      put("user.type", "abnormal");
-                      put("asset.type", "bar");
-                    }}).getScore(),
-            1e-10);
+    assertEquals(
+        Double.NEGATIVE_INFINITY,
+        threatTriageProcessor
+            .apply(
+                new HashMap<Object, Object>() {
+                  {
+                    put("user.type", "abnormal");
+                    put("asset.type", "bar");
+                  }
+                })
+            .getScore(),
+        1e-10,
+        "Expected a score of -Inf");
   }
 
   /**
@@ -156,9 +173,9 @@
 
     // expect rules 1 and 2 to have been applied
     List<String> expectedNames = ImmutableList.of("rule 1", "rule 2");
-    Assert.assertEquals(2, score.getRuleScores().size());
+    assertEquals(2, score.getRuleScores().size());
     score.getRuleScores().forEach(ruleScore ->
-            Assert.assertTrue(expectedNames.contains(ruleScore.getRule().getName()))
+            assertTrue(expectedNames.contains(ruleScore.getRule().getName()))
     );
   }
 
@@ -178,9 +195,9 @@
 
     // expect rule 4 to have been applied
     List<String> expectedNames = ImmutableList.of("rule 4");
-    Assert.assertEquals(1, score.getRuleScores().size());
+    assertEquals(1, score.getRuleScores().size());
     score.getRuleScores().forEach(ruleScore ->
-            Assert.assertTrue(expectedNames.contains(ruleScore.getRule().getName()))
+            assertTrue(expectedNames.contains(ruleScore.getRule().getName()))
     );
   }
 
@@ -199,7 +216,7 @@
     ThreatScore score = getProcessor(smokeTestProcessorConfig).apply(message);
 
     // expect no rules to have been applied
-    Assert.assertEquals(0, score.getRuleScores().size());
+    assertEquals(0, score.getRuleScores().size());
   }
 
   /**
@@ -232,35 +249,47 @@
   public void testPositiveMeanAggregationScores() throws Exception {
 
     ThreatTriageProcessor threatTriageProcessor = getProcessor(positiveMeanProcessorConfig);
-    Assert.assertEquals(
-            "Expected a score of 0",
-            5d,
-            threatTriageProcessor.apply(
-                    new HashMap<Object, Object>() {{
-                      put("user.type", "normal");
-                      put("asset.type", "web");
-                    }}).getScore(),
-            1e-10);
+    assertEquals(
+        5d,
+        threatTriageProcessor
+            .apply(
+                new HashMap<Object, Object>() {
+                  {
+                    put("user.type", "normal");
+                    put("asset.type", "web");
+                  }
+                })
+            .getScore(),
+        1e-10,
+        "Expected a score of 0");
 
-    Assert.assertEquals(
-            "Expected a score of 7.5",
-            (10 + 5)/2.0,
-            threatTriageProcessor.apply(
-                    new HashMap<Object, Object>() {{
-                      put("user.type", "admin");
-                      put("asset.type", "web");
-                    }}).getScore(),
-            1e-10);
+    assertEquals(
+        (10 + 5) / 2.0,
+        threatTriageProcessor
+            .apply(
+                new HashMap<Object, Object>() {
+                  {
+                    put("user.type", "admin");
+                    put("asset.type", "web");
+                  }
+                })
+            .getScore(),
+        1e-10,
+        "Expected a score of 7.5");
 
-    Assert.assertEquals(
-            "Expected a score of 0",
-            0d,
-            threatTriageProcessor.apply(
-                    new HashMap<Object, Object>() {{
-                      put("user.type", "foo");
-                      put("asset.type", "bar");
-                    }}).getScore(),
-            1e-10);
+    assertEquals(
+        0d,
+        threatTriageProcessor
+            .apply(
+                new HashMap<Object, Object>() {
+                  {
+                    put("user.type", "foo");
+                    put("asset.type", "bar");
+                  }
+                })
+            .getScore(),
+        1e-10,
+        "Expected a score of 0");
   }
 
   /**
@@ -284,7 +313,7 @@
   @Test
   public void testWithStellarFunction() throws Exception {
     ThreatTriageProcessor threatTriageProcessor = getProcessor(testWithStellarFunction);
-    Assert.assertEquals(
+    assertEquals(
             10d,
             threatTriageProcessor.apply(
                     new HashMap<Object, Object>() {{
@@ -376,7 +405,7 @@
   public void shouldAllowNumericRuleScore() throws Exception {
     Map<String, Object> message = new HashMap<>();
     ThreatTriageProcessor threatTriageProcessor = getProcessor(shouldAllowNumericRuleScore);
-    Assert.assertEquals(10d, threatTriageProcessor.apply(message).getScore(), 1e-10);
+    assertEquals(10d, threatTriageProcessor.apply(message).getScore(), 1e-10);
   }
 
   /**
@@ -405,7 +434,7 @@
     }};
 
     ThreatTriageProcessor threatTriageProcessor = getProcessor(shouldAllowScoreAsStellarExpression);
-    Assert.assertEquals(1010.0d, threatTriageProcessor.apply(message).getScore(), 1e-10);
+    assertEquals(1010.0d, threatTriageProcessor.apply(message).getScore(), 1e-10);
   }
 
   private static ThreatTriageProcessor getProcessor(String config) throws IOException {
diff --git a/metron-platform/metron-enrichment/metron-enrichment-storm/pom.xml b/metron-platform/metron-enrichment/metron-enrichment-storm/pom.xml
index 532ef14..c354c2b 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-storm/pom.xml
+++ b/metron-platform/metron-enrichment/metron-enrichment-storm/pom.xml
@@ -280,6 +280,11 @@
             <version>${global_httpclient_version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>
diff --git a/metron-platform/metron-enrichment/metron-enrichment-storm/src/test/java/org/apache/metron/enrichment/bolt/GenericEnrichmentBoltTest.java b/metron-platform/metron-enrichment/metron-enrichment-storm/src/test/java/org/apache/metron/enrichment/bolt/GenericEnrichmentBoltTest.java
index 874d701..0bfbaf0 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-storm/src/test/java/org/apache/metron/enrichment/bolt/GenericEnrichmentBoltTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-storm/src/test/java/org/apache/metron/enrichment/bolt/GenericEnrichmentBoltTest.java
@@ -18,15 +18,16 @@
 package org.apache.metron.enrichment.bolt;
 
 import static org.apache.metron.common.Constants.STELLAR_CONTEXT_CONF;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+
 import com.google.common.collect.ImmutableMap;
 import java.io.File;
 import java.io.FileInputStream;
@@ -48,12 +49,11 @@
 import org.apache.metron.test.error.MetronErrorJSONMatcher;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.apache.storm.tuple.Values;
-import org.hamcrest.Description;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
@@ -63,7 +63,7 @@
   private static final String sampleConfigPath = "../" + TestConstants.SAMPLE_CONFIG_PATH;
   private static final String enrichmentConfigPath = "../" + sampleSensorEnrichmentConfigPath;
 
-  protected class EnrichedMessageMatcher extends ArgumentMatcher<Values> {
+  protected class EnrichedMessageMatcher implements ArgumentMatcher<Values> {
 
     private String expectedKey;
     private JSONObject expectedMessage;
@@ -74,8 +74,7 @@
     }
 
     @Override
-    public boolean matches(Object o) {
-      Values values = (Values) o;
+    public boolean matches(Values values) {
       String actualKey = (String) values.get(0);
       JSONObject actualMessage = (JSONObject) values.get(1);
       removeTimingFields(actualMessage);
@@ -83,8 +82,8 @@
     }
 
     @Override
-    public void describeTo(Description description) {
-      description.appendText(String.format("[%s]", expectedMessage));
+    public String toString() {
+      return String.format("[%s]", expectedMessage);
     }
 
   }
@@ -130,7 +129,7 @@
   private JSONObject enrichedField2;
   private JSONObject enrichedMessage;
 
-  @Before
+  @BeforeEach
   public void parseMessages() throws ParseException {
     JSONParser parser = new JSONParser();
     originalMessage = (JSONObject) parser.parse(originalMessageString);
@@ -143,7 +142,7 @@
   public EnrichmentAdapter<CacheKey> enrichmentAdapter;
 
   @Override
-  @Before
+  @BeforeEach
   public void initMocks() {
     MockitoAnnotations.initMocks(this);
   }
@@ -173,30 +172,22 @@
     globalConfig.put(GeoLiteCityDatabase.GEO_HDFS_FILE, geoHdfsFile.getAbsolutePath());
     genericEnrichmentBolt.getConfigurations().updateGlobalConfig(globalConfig);
 
-    try {
-      genericEnrichmentBolt.prepare(new HashMap(), topologyContext, outputCollector);
-      fail("Should fail if a maxCacheSize property is not set");
-    } catch(IllegalStateException e) {}
+    assertThrows(IllegalStateException.class, () -> genericEnrichmentBolt.prepare(new HashMap(), topologyContext, outputCollector),
+        "Should fail if a maxCacheSize property is not set");
     genericEnrichmentBolt.withMaxCacheSize(100);
-    try {
-      genericEnrichmentBolt.prepare(new HashMap(), topologyContext, outputCollector);
-      fail("Should fail if a maxTimeRetain property is not set");
-    } catch(IllegalStateException e) {}
+    assertThrows(IllegalStateException.class, () -> genericEnrichmentBolt.prepare(new HashMap(), topologyContext, outputCollector),
+      "Should fail if a maxTimeRetain property is not set");
     genericEnrichmentBolt.withMaxTimeRetain(10000);
-    try {
-      genericEnrichmentBolt.prepare(new HashMap(), topologyContext, outputCollector);
-      fail("Should fail if an adapter is not set");
-    } catch(IllegalStateException e) {}
+    assertThrows(IllegalStateException.class, () -> genericEnrichmentBolt.prepare(new HashMap(), topologyContext, outputCollector),
+      "Should fail if an adapter is not set");
     genericEnrichmentBolt.withEnrichment(testEnrichment);
     when(enrichmentAdapter.initializeAdapter(globalConfig)).thenReturn(true);
     genericEnrichmentBolt.prepare(new HashMap(), topologyContext, outputCollector);
     verify(enrichmentAdapter, times(1)).initializeAdapter(globalConfig);
     when(enrichmentAdapter.initializeAdapter(globalConfig)).thenReturn(false);
     UnitTestHelper.setLog4jLevel(GenericEnrichmentBolt.class, Level.FATAL);
-    try {
-      genericEnrichmentBolt.prepare(new HashMap(), topologyContext, outputCollector);
-      fail("An exception should be thrown if enrichment adapter initialization fails");
-    } catch(IllegalStateException e) {}
+    assertThrows(IllegalStateException.class, () -> genericEnrichmentBolt.prepare(new HashMap(), topologyContext, outputCollector),
+      "An exception should be thrown if enrichment adapter initialization fails");
     UnitTestHelper.setLog4jLevel(GenericEnrichmentBolt.class, Level.ERROR);
     genericEnrichmentBolt.declareOutputFields(declarer);
     verify(declarer, times(1)).declareStream(eq(enrichmentType), argThat(new FieldsMatcher("key", "message", "subgroup")));
diff --git a/metron-platform/metron-enrichment/metron-enrichment-storm/src/test/java/org/apache/metron/enrichment/integration/EnrichmentIntegrationTest.java b/metron-platform/metron-enrichment/metron-enrichment-storm/src/test/java/org/apache/metron/enrichment/integration/EnrichmentIntegrationTest.java
index 64f9e43..90ce817 100644
--- a/metron-platform/metron-enrichment/metron-enrichment-storm/src/test/java/org/apache/metron/enrichment/integration/EnrichmentIntegrationTest.java
+++ b/metron-platform/metron-enrichment/metron-enrichment-storm/src/test/java/org/apache/metron/enrichment/integration/EnrichmentIntegrationTest.java
@@ -46,9 +46,8 @@
 import org.apache.metron.integration.utils.TestUtils;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import javax.annotation.Nullable;
 import java.io.File;
@@ -58,6 +57,8 @@
 import java.util.*;
 import java.util.stream.Stream;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 /**
  * Integration test for the enrichment topology.
  */
@@ -107,7 +108,7 @@
     }
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setupOnce() throws ParseException {
     String baseDir = UnitTestHelper.findDir(new File("../metron-enrichment-common"), "GeoLite");
     geoHdfsFile = new File(new File(baseDir), "GeoLite2-City.mmdb.gz");
@@ -247,10 +248,10 @@
       ProcessorResult<Map<String, List<Map<String, Object>>>> result = runner.process(getProcessor());
       Map<String,List<Map<String, Object>>> outputMessages = result.getResult();
       List<Map<String, Object>> docs = outputMessages.get(Constants.INDEXING_TOPIC);
-      Assert.assertEquals(inputMessages.size(), docs.size());
+      assertEquals(inputMessages.size(), docs.size());
       validateAll(docs);
       List<Map<String, Object>> errors = outputMessages.get(ERROR_TOPIC);
-      Assert.assertEquals(inputMessages.size(), errors.size());
+      assertEquals(inputMessages.size(), errors.size());
       validateErrors(errors);
     } finally {
       runner.stop();
@@ -278,10 +279,10 @@
 
   protected void validateErrors(List<Map<String, Object>> errors) {
     for(Map<String, Object> error : errors) {
-      Assert.assertTrue(error.get(Constants.ErrorFields.MESSAGE.getName()).toString(), error.get(Constants.ErrorFields.MESSAGE.getName()).toString().contains("/ by zero") );
-      Assert.assertTrue(error.get(Constants.ErrorFields.EXCEPTION.getName()).toString().contains("/ by zero"));
-      Assert.assertEquals(Constants.ErrorType.ENRICHMENT_ERROR.getType(), error.get(Constants.ErrorFields.ERROR_TYPE.getName()));
-      Assert.assertEquals("{\"error_test\":{},\"source.type\":\"test\"}", error.get(Constants.ErrorFields.RAW_MESSAGE.getName()));
+      assertTrue(error.get(Constants.ErrorFields.MESSAGE.getName()).toString().contains("/ by zero"), error.get(Constants.ErrorFields.MESSAGE.getName()).toString());
+      assertTrue(error.get(Constants.ErrorFields.EXCEPTION.getName()).toString().contains("/ by zero"));
+      assertEquals(Constants.ErrorType.ENRICHMENT_ERROR.getType(), error.get(Constants.ErrorFields.ERROR_TYPE.getName()));
+      assertEquals("{\"error_test\":{},\"source.type\":\"test\"}", error.get(Constants.ErrorFields.RAW_MESSAGE.getName()));
     }
   }
 
@@ -292,23 +293,23 @@
     //ensure no values are empty
     for(Map.Entry<String, Object> kv : jsonDoc.entrySet()) {
       String actual = Objects.toString(kv.getValue(), "");
-      Assert.assertTrue(String.format("Value of '%s' is empty: '%s'", kv.getKey(), actual), StringUtils.isNotEmpty(actual));
+      assertTrue(StringUtils.isNotEmpty(actual), String.format("Value of '%s' is empty: '%s'", kv.getKey(), actual));
     }
 
     //ensure we always have a source ip and destination ip
-    Assert.assertNotNull(jsonDoc.get(SRC_IP));
-    Assert.assertNotNull(jsonDoc.get("ALL_CAPS"));
-    Assert.assertNotNull(jsonDoc.get("map.blah"));
-    Assert.assertNull(jsonDoc.get("map"));
-    Assert.assertNotNull(jsonDoc.get("one"));
-    Assert.assertEquals(1, jsonDoc.get("one"));
-    Assert.assertEquals(1, jsonDoc.get("map.blah"));
-    Assert.assertNotNull(jsonDoc.get("foo"));
-    Assert.assertNotNull(jsonDoc.get("alt_src_type"));
-    Assert.assertEquals("test", jsonDoc.get("alt_src_type"));
-    Assert.assertEquals("TEST", jsonDoc.get("ALL_CAPS"));
-    Assert.assertNotNull(jsonDoc.get("bar"));
-    Assert.assertEquals("TEST", jsonDoc.get("bar"));
+    assertNotNull(jsonDoc.get(SRC_IP));
+    assertNotNull(jsonDoc.get("ALL_CAPS"));
+    assertNotNull(jsonDoc.get("map.blah"));
+    assertNull(jsonDoc.get("map"));
+    assertNotNull(jsonDoc.get("one"));
+    assertEquals(1, jsonDoc.get("one"));
+    assertEquals(1, jsonDoc.get("map.blah"));
+    assertNotNull(jsonDoc.get("foo"));
+    assertNotNull(jsonDoc.get("alt_src_type"));
+    assertEquals("test", jsonDoc.get("alt_src_type"));
+    assertEquals("TEST", jsonDoc.get("ALL_CAPS"));
+    assertNotNull(jsonDoc.get("bar"));
+    assertEquals("TEST", jsonDoc.get("bar"));
   }
 
   private static class EvaluationPayload {
@@ -385,7 +386,7 @@
                        + Joiner.on(",").join(expectedEnrichments) + "), but it was not there.  If you've created a new"
                        + " enrichment, then please add a validation method to this unit test.  Otherwise, it's a solid error"
                        + " and should be investigated.";
-        Assert.assertTrue( message, expectedEnrichments.contains(secondLevel));
+        assertTrue(expectedEnrichments.contains(secondLevel), message);
       }
     }
   }
@@ -393,31 +394,31 @@
     if(indexedDoc.getOrDefault(SRC_IP,"").equals("10.0.2.3")
             || indexedDoc.getOrDefault(DST_IP,"").equals("10.0.2.3")
             ) {
-      Assert.assertTrue(keyPatternExists("enrichments.hbaseEnrichment", indexedDoc));
+      assertTrue(keyPatternExists("enrichments.hbaseEnrichment", indexedDoc));
       if(indexedDoc.getOrDefault(SRC_IP,"").equals("10.0.2.3")) {
-        Assert.assertEquals(indexedDoc.get("enrichments.hbaseEnrichment." + SRC_IP + "." + PLAYFUL_CLASSIFICATION_TYPE+ ".orientation")
+        assertEquals(indexedDoc.get("enrichments.hbaseEnrichment." + SRC_IP + "." + PLAYFUL_CLASSIFICATION_TYPE+ ".orientation")
                 , PLAYFUL_ENRICHMENT.get("orientation")
         );
-        Assert.assertEquals(indexedDoc.get("src_classification.orientation")
+        assertEquals(indexedDoc.get("src_classification.orientation")
                 , PLAYFUL_ENRICHMENT.get("orientation"));
-        Assert.assertEquals(indexedDoc.get("is_src_malicious")
+        assertEquals(indexedDoc.get("is_src_malicious")
                 , true);
       }
       else if(indexedDoc.getOrDefault(DST_IP,"").equals("10.0.2.3")) {
-        Assert.assertEquals( indexedDoc.get("enrichments.hbaseEnrichment." + DST_IP + "." + PLAYFUL_CLASSIFICATION_TYPE + ".orientation")
+        assertEquals( indexedDoc.get("enrichments.hbaseEnrichment." + DST_IP + "." + PLAYFUL_CLASSIFICATION_TYPE + ".orientation")
                 , PLAYFUL_ENRICHMENT.get("orientation")
         );
-        Assert.assertEquals(indexedDoc.get("dst_classification.orientation")
+        assertEquals(indexedDoc.get("dst_classification.orientation")
                 , PLAYFUL_ENRICHMENT.get("orientation"));
 
       }
       if(!indexedDoc.getOrDefault(SRC_IP,"").equals("10.0.2.3")) {
-        Assert.assertEquals(indexedDoc.get("is_src_malicious")
+        assertEquals(indexedDoc.get("is_src_malicious")
                 , false);
       }
     }
     else {
-      Assert.assertEquals(indexedDoc.get("is_src_malicious")
+      assertEquals(indexedDoc.get("is_src_malicious")
               , false);
     }
   }
@@ -426,13 +427,13 @@
             indexedDoc.getOrDefault(DST_IP,"").equals("10.0.2.3")) {
 
       //if we have any threat intel messages, we want to tag is_alert to true
-      Assert.assertTrue(keyPatternExists("threatintels.", indexedDoc));
-      Assert.assertEquals(indexedDoc.getOrDefault("is_alert",""), "true");
+      assertTrue(keyPatternExists("threatintels.", indexedDoc));
+      assertEquals(indexedDoc.getOrDefault("is_alert",""), "true");
 
       // validate threat triage score
-      Assert.assertTrue(indexedDoc.containsKey(ThreatIntelUtils.THREAT_TRIAGE_SCORE_KEY));
+      assertTrue(indexedDoc.containsKey(ThreatIntelUtils.THREAT_TRIAGE_SCORE_KEY));
       Double score = (Double) indexedDoc.get(ThreatIntelUtils.THREAT_TRIAGE_SCORE_KEY);
-      Assert.assertEquals(score, 10d, 1e-7);
+      assertEquals(score, 10d, 1e-7);
 
       // validate threat triage rules
       Joiner joiner = Joiner.on(".");
@@ -442,24 +443,24 @@
               joiner.join(ThreatIntelUtils.THREAT_TRIAGE_RULES_KEY, 0, ThreatIntelUtils.THREAT_TRIAGE_RULE_REASON),
               joiner.join(ThreatIntelUtils.THREAT_TRIAGE_RULES_KEY, 0, ThreatIntelUtils.THREAT_TRIAGE_RULE_SCORE))
               .forEach(key ->
-                      Assert.assertTrue(String.format("Missing expected key: '%s'", key), indexedDoc.containsKey(key)));
+                      assertTrue(indexedDoc.containsKey(key), String.format("Missing expected key: '%s'", key)));
     }
     else {
       //For YAF this is the case, but if we do snort later on, this will be invalid.
-      Assert.assertNull(indexedDoc.get("is_alert"));
-      Assert.assertFalse(keyPatternExists("threatintels.", indexedDoc));
+      assertNull(indexedDoc.get("is_alert"));
+      assertFalse(keyPatternExists("threatintels.", indexedDoc));
     }
 
     //ip threat intels
     if(keyPatternExists("threatintels.hbaseThreatIntel.", indexedDoc)) {
       if(indexedDoc.getOrDefault(SRC_IP,"").equals("10.0.2.3")) {
-        Assert.assertEquals(indexedDoc.get("threatintels.hbaseThreatIntel." + SRC_IP + "." + MALICIOUS_IP_TYPE), "alert");
+        assertEquals(indexedDoc.get("threatintels.hbaseThreatIntel." + SRC_IP + "." + MALICIOUS_IP_TYPE), "alert");
       }
       else if(indexedDoc.getOrDefault(DST_IP,"").equals("10.0.2.3")) {
-        Assert.assertEquals(indexedDoc.get("threatintels.hbaseThreatIntel." + DST_IP + "." + MALICIOUS_IP_TYPE), "alert");
+        assertEquals(indexedDoc.get("threatintels.hbaseThreatIntel." + DST_IP + "." + MALICIOUS_IP_TYPE), "alert");
       }
       else {
-        Assert.fail("There was a threat intels that I did not expect: " + indexedDoc);
+        fail("There was a threat intels that I did not expect: " + indexedDoc);
       }
     }
 
@@ -468,22 +469,22 @@
   private static void geoEnrichmentValidation(Map<String, Object> indexedDoc) {
     // Need to check both separately. Local IPs will have no Geo entries
     if(indexedDoc.containsKey("enrichments.geo." + DST_IP + ".location_point")) {
-      Assert.assertEquals(DEFAULT_LOCATION_POINT, indexedDoc.get("enrichments.geo." + DST_IP + ".location_point"));
-      Assert.assertEquals(DEFAULT_LONGITUDE, indexedDoc.get("enrichments.geo." + DST_IP + ".longitude"));
-      Assert.assertEquals(DEFAULT_CITY, indexedDoc.get("enrichments.geo." + DST_IP + ".city"));
-      Assert.assertEquals(DEFAULT_LATITUDE, indexedDoc.get("enrichments.geo." + DST_IP + ".latitude"));
-      Assert.assertEquals(DEFAULT_COUNTRY, indexedDoc.get("enrichments.geo." + DST_IP + ".country"));
-      Assert.assertEquals(DEFAULT_DMACODE, indexedDoc.get("enrichments.geo." + DST_IP + ".dmaCode"));
-      Assert.assertEquals(DEFAULT_POSTAL_CODE, indexedDoc.get("enrichments.geo." + DST_IP + ".postalCode"));
+      assertEquals(DEFAULT_LOCATION_POINT, indexedDoc.get("enrichments.geo." + DST_IP + ".location_point"));
+      assertEquals(DEFAULT_LONGITUDE, indexedDoc.get("enrichments.geo." + DST_IP + ".longitude"));
+      assertEquals(DEFAULT_CITY, indexedDoc.get("enrichments.geo." + DST_IP + ".city"));
+      assertEquals(DEFAULT_LATITUDE, indexedDoc.get("enrichments.geo." + DST_IP + ".latitude"));
+      assertEquals(DEFAULT_COUNTRY, indexedDoc.get("enrichments.geo." + DST_IP + ".country"));
+      assertEquals(DEFAULT_DMACODE, indexedDoc.get("enrichments.geo." + DST_IP + ".dmaCode"));
+      assertEquals(DEFAULT_POSTAL_CODE, indexedDoc.get("enrichments.geo." + DST_IP + ".postalCode"));
     }
     if(indexedDoc.containsKey("enrichments.geo." + SRC_IP + ".location_point")) {
-      Assert.assertEquals(DEFAULT_LOCATION_POINT, indexedDoc.get("enrichments.geo." + SRC_IP + ".location_point"));
-      Assert.assertEquals(DEFAULT_LONGITUDE, indexedDoc.get("enrichments.geo." + SRC_IP + ".longitude"));
-      Assert.assertEquals(DEFAULT_CITY, indexedDoc.get("enrichments.geo." + SRC_IP + ".city"));
-      Assert.assertEquals(DEFAULT_LATITUDE, indexedDoc.get("enrichments.geo." + SRC_IP + ".latitude"));
-      Assert.assertEquals(DEFAULT_COUNTRY, indexedDoc.get("enrichments.geo." + SRC_IP + ".country"));
-      Assert.assertEquals(DEFAULT_DMACODE, indexedDoc.get("enrichments.geo." + SRC_IP + ".dmaCode"));
-      Assert.assertEquals(DEFAULT_POSTAL_CODE, indexedDoc.get("enrichments.geo." + SRC_IP + ".postalCode"));
+      assertEquals(DEFAULT_LOCATION_POINT, indexedDoc.get("enrichments.geo." + SRC_IP + ".location_point"));
+      assertEquals(DEFAULT_LONGITUDE, indexedDoc.get("enrichments.geo." + SRC_IP + ".longitude"));
+      assertEquals(DEFAULT_CITY, indexedDoc.get("enrichments.geo." + SRC_IP + ".city"));
+      assertEquals(DEFAULT_LATITUDE, indexedDoc.get("enrichments.geo." + SRC_IP + ".latitude"));
+      assertEquals(DEFAULT_COUNTRY, indexedDoc.get("enrichments.geo." + SRC_IP + ".country"));
+      assertEquals(DEFAULT_DMACODE, indexedDoc.get("enrichments.geo." + SRC_IP + ".dmaCode"));
+      assertEquals(DEFAULT_POSTAL_CODE, indexedDoc.get("enrichments.geo." + SRC_IP + ".postalCode"));
     }
   }
 
@@ -494,7 +495,7 @@
       Set<String> ips = setOf("10.0.2.15", "10.60.10.254");
       if (ips.contains(indexedDoc.get(SRC_IP))) {
         //this is a local, important, printer
-        Assert.assertTrue(Predicates.and(HostEnrichments.LOCAL_LOCATION
+        assertTrue(Predicates.and(HostEnrichments.LOCAL_LOCATION
                 ,HostEnrichments.IMPORTANT
                 ,HostEnrichments.PRINTER_TYPE
                 ).apply(new EvaluationPayload(indexedDoc, SRC_IP))
@@ -506,7 +507,7 @@
                 ,HostEnrichments.IMPORTANT
                 ,HostEnrichments.PRINTER_TYPE
                 ).apply(new EvaluationPayload(indexedDoc, DST_IP));
-        Assert.assertTrue(isEnriched);
+        assertTrue(isEnriched);
         enriched = true;
       }
     }
@@ -515,7 +516,7 @@
       Set<String> ips = setOf("10.1.128.236");
       if (ips.contains(indexedDoc.get(SRC_IP))) {
         //this is a local, important, printer
-        Assert.assertTrue(Predicates.and(HostEnrichments.LOCAL_LOCATION
+        assertTrue(Predicates.and(HostEnrichments.LOCAL_LOCATION
                 ,HostEnrichments.IMPORTANT
                 ,HostEnrichments.WEBSERVER_TYPE
                 ).apply(new EvaluationPayload(indexedDoc, SRC_IP))
@@ -527,12 +528,12 @@
                 ,HostEnrichments.IMPORTANT
                 ,HostEnrichments.WEBSERVER_TYPE
                 ).apply(new EvaluationPayload(indexedDoc, DST_IP));
-        Assert.assertTrue(isEnriched);
+        assertTrue(isEnriched);
         enriched = true;
       }
     }
     if(!enriched) {
-      Assert.assertFalse(keyPatternExists("enrichments.host", indexedDoc));
+      assertFalse(keyPatternExists("enrichments.host", indexedDoc));
     }
   }
 
diff --git a/metron-platform/metron-hbase-server/src/test/java/org/apache/metron/hbase/coprocessor/EnrichmentCoprocessorIntegrationTest.java b/metron-platform/metron-hbase-server/src/test/java/org/apache/metron/hbase/coprocessor/EnrichmentCoprocessorIntegrationTest.java
index 2bc756e..76db1e8 100644
--- a/metron-platform/metron-hbase-server/src/test/java/org/apache/metron/hbase/coprocessor/EnrichmentCoprocessorIntegrationTest.java
+++ b/metron-platform/metron-hbase-server/src/test/java/org/apache/metron/hbase/coprocessor/EnrichmentCoprocessorIntegrationTest.java
@@ -18,17 +18,6 @@
 
 package org.apache.metron.hbase.coprocessor;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseTestingUtility;
@@ -51,9 +40,16 @@
 import org.apache.metron.integration.UnableToStartException;
 import org.apache.metron.integration.components.ZKServerComponent;
 import org.apache.metron.test.utils.UnitTestHelper;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class EnrichmentCoprocessorIntegrationTest extends BaseIntegrationTest {
 
@@ -84,7 +80,7 @@
   @Multiline
   private static String globalConfig;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupAll() throws Exception {
     silenceLogging();
     // don't need the properties for anything else now, but could extract var if desired.
@@ -167,7 +163,7 @@
     hbaseAdmin.enableTable(tableName);
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() throws Exception {
     HBaseUtil.INSTANCE.teardown(testUtil);
     componentRunner.stop();
@@ -203,7 +199,7 @@
           "{ \"apache\" : \"metron\" }");
     }
     List<String> enrichmentsList = HelperDao.readRecords(enrichmentListTable);
-    assertThat(new HashSet<String>(enrichmentsList), equalTo(expectedEnrichmentTypes));
+    assertThat(new HashSet<>(enrichmentsList), equalTo(expectedEnrichmentTypes));
   }
 
 }
diff --git a/metron-platform/metron-hbase-server/src/test/java/org/apache/metron/hbase/coprocessor/EnrichmentCoprocessorTest.java b/metron-platform/metron-hbase-server/src/test/java/org/apache/metron/hbase/coprocessor/EnrichmentCoprocessorTest.java
index cf9f32a..22a43bf 100644
--- a/metron-platform/metron-hbase-server/src/test/java/org/apache/metron/hbase/coprocessor/EnrichmentCoprocessorTest.java
+++ b/metron-platform/metron-hbase-server/src/test/java/org/apache/metron/hbase/coprocessor/EnrichmentCoprocessorTest.java
@@ -18,23 +18,7 @@
 
 package org.apache.metron.hbase.coprocessor;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertThat;
-import static org.mockito.BDDMockito.willAnswer;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
 import com.github.benmanes.caffeine.cache.CacheWriter;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.hbase.HBaseConfiguration;
 import org.apache.hadoop.hbase.client.Put;
@@ -44,13 +28,26 @@
 import org.apache.metron.common.configuration.EnrichmentConfigurations;
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.hbase.TableProvider;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.BDDMockito.willAnswer;
+import static org.mockito.Mockito.*;
+
 public class EnrichmentCoprocessorTest {
 
   @Mock
@@ -65,7 +62,7 @@
   private Configuration config;
   private static boolean instantiatedCustomTableProvider;
 
-  @Before
+  @BeforeEach
   public void setup() {
     MockitoAnnotations.initMocks(this);
     cop = new EnrichmentCoprocessor(cacheWriter, globalConfigService);
@@ -138,24 +135,18 @@
     assertThat(instantiatedCustomTableProvider, equalTo(true));
   }
 
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   @Test
   public void bad_enrichment_key_exceptions_thrown_as_IOException() throws Exception {
-    thrown.expect(IOException.class);
-    thrown.expectMessage("Error occurred while processing enrichment Put.");
-    thrown.expectCause(instanceOf(RuntimeException.class));
     cop.start(copEnv);
-    cop.postPut(observerContext, new Put("foo".getBytes(StandardCharsets.UTF_8)), null, null);
+    IOException e = assertThrows(IOException.class,
+            () -> cop.postPut(observerContext, new Put("foo".getBytes(StandardCharsets.UTF_8)), null, null));
+    assertEquals("Error occurred while processing enrichment Put.", e.getMessage());
+    assertThat(e.getCause(), instanceOf(RuntimeException.class));
   }
 
   @Test
   public void general_exceptions_thrown_as_IOException() throws Exception {
     Throwable cause = new Throwable("Bad things happened.");
-    thrown.expect(IOException.class);
-    thrown.expectMessage("Error occurred while processing enrichment Put.");
-    thrown.expectCause(equalTo(cause));
     // strictly speaking, this is a checked exception not in the api for CacheWriter, but it allows
     // us to test catching all Throwable types
     willAnswer(i -> {
@@ -163,7 +154,10 @@
     }).given(cacheWriter).write(any(), any());
     cop.start(copEnv);
     EnrichmentKey ek = new EnrichmentKey("foo", "bar");
-    cop.postPut(observerContext, new Put(ek.toBytes()), null, null);
+    IOException e = assertThrows(IOException.class,
+            () -> cop.postPut(observerContext, new Put(ek.toBytes()), null, null));
+    assertEquals("Error occurred while processing enrichment Put.", e.getMessage());
+    assertEquals(e.getCause(), cause);
   }
 
 }
diff --git a/metron-platform/metron-hbase/metron-hbase-common/pom.xml b/metron-platform/metron-hbase/metron-hbase-common/pom.xml
index 84b24d3..38df462 100644
--- a/metron-platform/metron-hbase/metron-hbase-common/pom.xml
+++ b/metron-platform/metron-hbase/metron-hbase-common/pom.xml
@@ -166,8 +166,7 @@
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
-            <artifactId>mockito-all</artifactId>
-            <version>${global_mockito_version}</version>
+            <artifactId>mockito-core</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/metron-platform/metron-hbase/metron-hbase-common/src/test/java/org/apache/metron/hbase/client/HBaseClientTest.java b/metron-platform/metron-hbase/metron-hbase-common/src/test/java/org/apache/metron/hbase/client/HBaseClientTest.java
index cb58b57..7b0f347 100644
--- a/metron-platform/metron-hbase/metron-hbase-common/src/test/java/org/apache/metron/hbase/client/HBaseClientTest.java
+++ b/metron-platform/metron-hbase/metron-hbase-common/src/test/java/org/apache/metron/hbase/client/HBaseClientTest.java
@@ -20,39 +20,23 @@
 
 package org.apache.metron.hbase.client;
 
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyListOf;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.hbase.HBaseConfiguration;
+import org.apache.hadoop.hbase.HBaseTestingUtility;
+import org.apache.hadoop.hbase.client.*;
+import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.metron.hbase.ColumnList;
+import org.apache.metron.hbase.HBaseProjectionCriteria;
+import org.apache.metron.hbase.TableProvider;
+import org.junit.jupiter.api.*;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.TimeUnit;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.HBaseTestingUtility;
-import org.apache.hadoop.hbase.client.Admin;
-import org.apache.hadoop.hbase.client.Delete;
-import org.apache.hadoop.hbase.client.Durability;
-import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.client.Table;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.apache.metron.hbase.ColumnList;
-import org.apache.metron.hbase.HBaseProjectionCriteria;
-import org.apache.metron.hbase.TableProvider;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 /**
  * Tests the HBaseClient
@@ -74,7 +58,7 @@
   ColumnList cols1;
   ColumnList cols2;
 
-  @BeforeClass
+  @BeforeAll
   public static void startHBase() throws Exception {
     Configuration config = HBaseConfiguration.create();
     config.set("hbase.master.hostname", "localhost");
@@ -89,14 +73,14 @@
     client = new HBaseClient((c,t) -> table, table.getConfiguration(), tableName);
   }
 
-  @AfterClass
+  @AfterAll
   public static void stopHBase() throws Exception {
     util.deleteTable(tableName);
     util.shutdownMiniCluster();
     util.cleanupTestDir();
   }
 
-  @After
+  @AfterEach
   public void clearTable() throws Exception {
     List<Delete> deletions = new ArrayList<>();
     for(Result r : table.getScanner(new Scan())) {
@@ -105,8 +89,8 @@
     table.delete(deletions);
   }
 
-  @Before
-  public void setupTuples() throws Exception {
+  @BeforeEach
+  public void setupTuples() {
     rowKey1 = Bytes.toBytes("rowKey1");
     cols1 = new ColumnList();
     cols1.addColumn(cf, column, value1);
@@ -132,7 +116,7 @@
     // read back the tuple
     client.addGet(rowKey1, criteria);
     Result[] results = client.getAll();
-    Assert.assertEquals(1, results.length);
+    assertEquals(1, results.length);
 
     // validate
     assertEquals(1, results.length);
@@ -144,7 +128,7 @@
    * Should be able to read/write multiple rows in a batch.
    */
   @Test
-  public void testBatchWrite() throws Exception {
+  public void testBatchWrite() {
 
     // add two mutations to the queue
     client.addMutation(rowKey1, cols1, Durability.SYNC_WAL);
@@ -152,7 +136,7 @@
     int count = client.mutate();
 
     // there were two mutations
-    Assert.assertEquals(2, count);
+    assertEquals(2, count);
 
     HBaseProjectionCriteria criteria = new HBaseProjectionCriteria();
     criteria.addColumnFamily(Bytes.toString(cf));
@@ -174,11 +158,11 @@
    * What happens when there is nothing in the batch to write?
    */
   @Test
-  public void testEmptyBatch() throws Exception {
+  public void testEmptyBatch() {
 
     // do not add any mutations before attempting to write
     int count = client.mutate();
-    Assert.assertEquals(0, count);
+    assertEquals(0, count);
 
     HBaseProjectionCriteria criteria = new HBaseProjectionCriteria();
     criteria.addColumnFamily(Bytes.toString(cf));
@@ -191,7 +175,7 @@
     // validate - there should be nothing to find
     assertEquals(2, results.length);
     for(Result result : results) {
-      Assert.assertTrue(result.isEmpty());
+      assertTrue(result.isEmpty());
     }
   }
 
@@ -199,7 +183,7 @@
    * Should be able to read back rows that were written with a TTL 30 days out.
    */
   @Test
-  public void testWriteWithTimeToLive() throws Exception {
+  public void testWriteWithTimeToLive() {
     long timeToLive = TimeUnit.DAYS.toMillis(30);
 
     // add two mutations to the queue
@@ -252,16 +236,18 @@
     assertTrue(results[1].isEmpty());
   }
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testUnableToOpenConnection() throws IOException {
     // used to trigger a failure condition
     TableProvider tableProvider = mock(TableProvider.class);
     when(tableProvider.getTable(any(), any())).thenThrow(new IllegalArgumentException("test exception"));
 
-    client = new HBaseClient(tableProvider, HBaseConfiguration.create(), tableName);
+    assertThrows(
+        RuntimeException.class,
+        () -> client = new HBaseClient(tableProvider, HBaseConfiguration.create(), tableName));
   }
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testFailureToMutate() throws IOException, InterruptedException {
     // used to trigger a failure condition in `HbaseClient.mutate`
     Table table = mock(Table.class);
@@ -272,14 +258,14 @@
 
     client = new HBaseClient(tableProvider, HBaseConfiguration.create(), tableName);
     client.addMutation(rowKey1, cols1, Durability.SYNC_WAL);
-    client.mutate();
+    assertThrows(RuntimeException.class, () -> client.mutate());
   }
 
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testFailureToGetAll() throws IOException {
     // used to trigger a failure condition in `HbaseClient.getAll`
     Table table = mock(Table.class);
-    when(table.get(anyListOf(Get.class))).thenThrow(new IOException("exception!"));
+    when(table.get(anyList())).thenThrow(new IOException("exception!"));
 
     TableProvider tableProvider = mock(TableProvider.class);
     when(tableProvider.getTable(any(), any())).thenReturn(table);
@@ -290,6 +276,6 @@
     client = new HBaseClient(tableProvider, HBaseConfiguration.create(), tableName);
     client.addGet(rowKey1, criteria);
     client.addGet(rowKey2, criteria);
-    client.getAll();
+    assertThrows(RuntimeException.class, () -> client.getAll());
   }
 }
diff --git a/metron-platform/metron-indexing/metron-indexing-common/pom.xml b/metron-platform/metron-indexing/metron-indexing-common/pom.xml
index c0d234c..09db8cd 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/pom.xml
+++ b/metron-platform/metron-indexing/metron-indexing-common/pom.xml
@@ -119,7 +119,6 @@
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
-            <version>${global_mockito_version}</version>
             <scope>test</scope>
         </dependency>
 
@@ -166,7 +165,7 @@
         <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>hamcrest-core</artifactId>
-            <version>1.3</version>
+            <version>${global_hamcrest_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDao.java b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDao.java
index 096baf1..3bd8ec3 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDao.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDao.java
@@ -384,7 +384,7 @@
     } // else we have no updates, so don't do anything
   }
 
-  protected Set<String> getMissingAlerts(List<GetRequest> alertRequests, Iterable<Document> results) throws IOException {
+  protected Set<String> getMissingAlerts(List<GetRequest> alertRequests, Iterable<Document> results) {
     Set<String> requestGuids = alertRequests.stream().map(GetRequest::getGuid).collect(Collectors.toSet());
     Set<String> resultGuids = StreamSupport.stream(results.spliterator(), false)
             .map(Document::getGuid).collect(Collectors.toSet());
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/search/SortField.java b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/search/SortField.java
index 4dd9e82..9500e9e 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/search/SortField.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/main/java/org/apache/metron/indexing/dao/search/SortField.java
@@ -17,6 +17,8 @@
  */
 package org.apache.metron.indexing.dao.search;
 
+import java.util.Objects;
+
 public class SortField {
   private String field;
   private SortOrder sortOrder;
@@ -38,6 +40,11 @@
   }
 
   @Override
+  public int hashCode() {
+    return Objects.hash(field, sortOrder);
+  }
+
+  @Override
   public boolean equals(Object o) {
     if (this == o) {
       return true;
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/HBaseDaoTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/HBaseDaoTest.java
index d4823db..672ff5a 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/HBaseDaoTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/HBaseDaoTest.java
@@ -19,7 +19,7 @@
 package org.apache.metron.indexing.dao;
 
 import org.apache.metron.indexing.dao.update.UpdateDao;
-import org.junit.Before;
+import org.junit.jupiter.api.BeforeEach;
 
 /**
  * This class returns the HBaseDao implementation to be used in UpdateDaoTest.  UpdateDaoTest contains a
@@ -29,7 +29,7 @@
 
   private HBaseDao dao;
 
-  @Before
+  @BeforeEach
   public void setup() {
     dao = new HBaseDao();
   }
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/MultiIndexDaoTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/MultiIndexDaoTest.java
index 0c0d1f1..013ad22 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/MultiIndexDaoTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/MultiIndexDaoTest.java
@@ -18,36 +18,19 @@
 
 package org.apache.metron.indexing.dao;
 
-import org.apache.metron.indexing.dao.search.FieldType;
-import org.apache.metron.indexing.dao.search.GroupRequest;
-import org.apache.metron.indexing.dao.search.GroupResponse;
-import org.apache.metron.indexing.dao.search.SearchRequest;
-import org.apache.metron.indexing.dao.search.SearchResponse;
+import org.apache.metron.indexing.dao.search.*;
 import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
 import org.apache.metron.indexing.dao.update.Document;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 public class MultiIndexDaoTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private MultiIndexDao multiIndexDao;
   private IndexDao dao1;
   private IndexDao dao2;
@@ -55,7 +38,7 @@
   private Document document1;
   private Document document2;
 
-  @Before
+  @BeforeEach
   public void setup() {
     dao1 = mock(IndexDao.class);
     dao2 = mock(IndexDao.class);
@@ -68,19 +51,19 @@
   @Test
   public void shouldUpdateAll() throws IOException {
     Document actual = multiIndexDao.update(document1, Optional.of("bro"));
-    Assert.assertEquals(document1, actual);
+    assertEquals(document1, actual);
 
     // both 'backing' daos should have received the update
     verify(dao1).update(eq(document1), eq(Optional.of("bro")));
     verify(dao2).update(eq(document1), eq(Optional.of("bro")));
   }
 
-  @Test(expected = IOException.class)
+  @Test
   public void shouldThrowExceptionWithPartialFailureOnUpdate() throws IOException {
     // dao2 will throw an exception causing the 'partial failure'
     when(dao2.update(any(), any())).thenThrow(new IllegalStateException());
 
-    multiIndexDao.update(document1, Optional.of("bro"));
+    assertThrows(IOException.class, () -> multiIndexDao.update(document1, Optional.of("bro")));
   }
 
   @Test
@@ -91,14 +74,14 @@
     }};
 
     Map<Document, Optional<String>> actual = multiIndexDao.batchUpdate(updates);
-    Assert.assertEquals(updates, actual);
+    assertEquals(updates, actual);
 
     // both 'backing' daos should have received the updates
     verify(dao1).batchUpdate(eq(updates));
     verify(dao2).batchUpdate(eq(updates));
   }
 
-  @Test(expected = IOException.class)
+  @Test
   public void shouldThrowExceptionWithPartialFailureOnBatchUpdate() throws IOException {
     // dao2 will throw an exception causing the 'partial failure'
     when(dao2.batchUpdate(any())).thenThrow(new IllegalStateException());
@@ -108,7 +91,7 @@
       put(document2, Optional.of("bro"));
     }};
 
-    multiIndexDao.batchUpdate(updates);
+    assertThrows(IOException.class, () -> multiIndexDao.batchUpdate(updates));
   }
 
   @Test
@@ -119,7 +102,7 @@
     when(dao2.getLatest("guid", "bro")).thenReturn(document2);
 
     Document expected = new Document(new HashMap<>(), "guid", "bro", 2L);
-    Assert.assertEquals(expected, multiIndexDao.getLatest("guid", "bro"));
+    assertEquals(expected, multiIndexDao.getLatest("guid", "bro"));
   }
 
   @Test
@@ -132,10 +115,10 @@
     when(dao2.addCommentToAlert(request, latest)).thenReturn(document2);
 
     Document expected = new Document(new HashMap<>(), "guid", "bro", 2L);
-    Assert.assertEquals(expected, multiIndexDao.addCommentToAlert(request, latest));
+    assertEquals(expected, multiIndexDao.addCommentToAlert(request, latest));
   }
 
-  @Test(expected = IOException.class)
+  @Test
   public void shouldThrowExceptionWithPartialFailureOnAddComment() throws Exception {
     Document latest = mock(Document.class);
     CommentAddRemoveRequest request = new CommentAddRemoveRequest();
@@ -145,7 +128,7 @@
     when(dao1.addCommentToAlert(request, latest)).thenReturn(document1);
     when(dao2.addCommentToAlert(request, latest)).thenThrow(new IllegalStateException());
 
-    multiIndexDao.addCommentToAlert(request, latest);
+    assertThrows(IOException.class, () -> multiIndexDao.addCommentToAlert(request, latest));
   }
 
   @Test
@@ -158,10 +141,10 @@
     when(dao2.removeCommentFromAlert(request, latest)).thenReturn(document2);
 
     Document expected = new Document(new HashMap<>(), "guid", "bro", 2L);
-    Assert.assertEquals(expected, multiIndexDao.removeCommentFromAlert(request, latest));
+    assertEquals(expected, multiIndexDao.removeCommentFromAlert(request, latest));
   }
 
-  @Test(expected = IOException.class)
+  @Test
   public void shouldThrowExceptionWithPartialFailureOnRemoveComment() throws Exception {
     Document latest = mock(Document.class);
     CommentAddRemoveRequest request = new CommentAddRemoveRequest();
@@ -171,12 +154,12 @@
     when(dao1.removeCommentFromAlert(request, latest)).thenReturn(document1);
     when(dao2.removeCommentFromAlert(request, latest)).thenThrow(new IllegalStateException());
 
-    multiIndexDao.removeCommentFromAlert(request, latest);
+    assertThrows(IOException.class, () -> multiIndexDao.removeCommentFromAlert(request, latest));
   }
 
   @Test
   public void shouldGetColumnMetadata() throws Exception {
-    List<String> indices = Arrays.asList("bro");
+    List<String> indices = Collections.singletonList("bro");
 
     Map<String, FieldType> expected = new HashMap<String, FieldType>() {{
       put("bro", FieldType.TEXT);
@@ -186,19 +169,19 @@
     when(dao2.getColumnMetadata(eq(indices))).thenReturn(expected);
 
     Map<String, FieldType> actual = multiIndexDao.getColumnMetadata(indices);
-    Assert.assertEquals(expected, actual);
+    assertEquals(expected, actual);
   }
 
   @Test
   public void shouldGetColumnMetadataWithNulls() throws Exception {
-    List<String> indices = Arrays.asList("bro");
+    List<String> indices = Collections.singletonList("bro");
 
     // both 'backing' DAOs respond with null
     when(dao1.getColumnMetadata(eq(indices))).thenReturn(null);
     when(dao2.getColumnMetadata(eq(indices))).thenReturn(null);
 
     Map<String, FieldType> actual = multiIndexDao.getColumnMetadata(indices);
-    Assert.assertNull(actual);
+    assertNull(actual);
   }
 
   @Test
@@ -210,7 +193,7 @@
     when(dao2.search(eq(request))).thenReturn(expected);
 
     SearchResponse actual = multiIndexDao.search(request);
-    Assert.assertEquals(expected, actual);
+    assertEquals(expected, actual);
   }
 
   @Test
@@ -221,7 +204,7 @@
     when(dao2.search(eq(request))).thenReturn(null);
 
     SearchResponse actual = multiIndexDao.search(request);
-    Assert.assertNull(actual);
+    assertNull(actual);
   }
 
   @Test
@@ -233,7 +216,7 @@
     when(dao2.group(eq(request))).thenReturn(expected);
 
     GroupResponse actual = multiIndexDao.group(request);
-    Assert.assertEquals(expected, actual);
+    assertEquals(expected, actual);
   }
 
   @Test
@@ -244,6 +227,6 @@
     when(dao2.group(eq(request))).thenReturn(null);
 
     GroupResponse actual = multiIndexDao.group(request);
-    Assert.assertNull(actual);
+    assertNull(actual);
   }
 }
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java
index cfe5752..055513f 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/SearchIntegrationTest.java
@@ -18,30 +18,17 @@
  */
 package org.apache.metron.indexing.dao;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.utils.JSONUtils;
-import org.apache.metron.indexing.dao.search.FieldType;
-import org.apache.metron.indexing.dao.search.GetRequest;
-import org.apache.metron.indexing.dao.search.GroupRequest;
-import org.apache.metron.indexing.dao.search.GroupResponse;
-import org.apache.metron.indexing.dao.search.GroupResult;
-import org.apache.metron.indexing.dao.search.InvalidSearchException;
-import org.apache.metron.indexing.dao.search.SearchRequest;
-import org.apache.metron.indexing.dao.search.SearchResponse;
-import org.apache.metron.indexing.dao.search.SearchResult;
+import org.apache.metron.indexing.dao.search.*;
 import org.apache.metron.indexing.dao.update.Document;
 import org.apache.metron.integration.InMemoryComponent;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.Test;
+
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public abstract class SearchIntegrationTest {
   /**
@@ -472,25 +459,22 @@
 
   protected static InMemoryComponent indexComponent;
 
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   @Test
   public void all_query_returns_all_results() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(allQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(10, response.getTotal());
+    assertEquals(10, response.getTotal());
     List<SearchResult> results = response.getResults();
-    Assert.assertEquals(10, results.size());
+    assertEquals(10, results.size());
     for(int i = 0;i < 5;++i) {
-      Assert.assertEquals("snort", results.get(i).getSource().get(getSourceTypeField()));
-      Assert.assertEquals(getIndexName("snort"), results.get(i).getIndex());
-      Assert.assertEquals(10 - i + "", results.get(i).getSource().get("timestamp").toString());
+      assertEquals("snort", results.get(i).getSource().get(getSourceTypeField()));
+      assertEquals(getIndexName("snort"), results.get(i).getIndex());
+      assertEquals(10 - i + "", results.get(i).getSource().get("timestamp").toString());
     }
     for (int i = 5; i < 10; ++i) {
-      Assert.assertEquals("bro", results.get(i).getSource().get(getSourceTypeField()));
-      Assert.assertEquals(getIndexName("bro"), results.get(i).getIndex());
-      Assert.assertEquals(10 - i + "", results.get(i).getSource().get("timestamp").toString());
+      assertEquals("bro", results.get(i).getSource().get(getSourceTypeField()));
+      assertEquals(getIndexName("bro"), results.get(i).getIndex());
+      assertEquals(10 - i + "", results.get(i).getSource().get("timestamp").toString());
     }
   }
 
@@ -498,10 +482,10 @@
   public void find_one_guid() throws Exception {
     GetRequest request = JSONUtils.INSTANCE.load(findOneGuidQuery, GetRequest.class);
     Optional<Map<String, Object>> response = getIndexDao().getLatestResult(request);
-    Assert.assertTrue(response.isPresent());
+    assertTrue(response.isPresent());
     Map<String, Object> doc = response.get();
-    Assert.assertEquals("bro", doc.get(getSourceTypeField()));
-    Assert.assertEquals("3", doc.get("timestamp").toString());
+    assertEquals("bro", doc.get(getSourceTypeField()));
+    assertEquals("3", doc.get("timestamp").toString());
   }
 
   @Test
@@ -512,35 +496,35 @@
     for(Document doc : getIndexDao().getAllLatest(request)) {
       docs.put(doc.getGuid(), doc);
     }
-    Assert.assertEquals(2, docs.size());
-    Assert.assertTrue(docs.keySet().contains("bro_1"));
-    Assert.assertTrue(docs.keySet().contains("snort_2"));
-    Assert.assertEquals("bro", docs.get("bro_1").getDocument().get(getSourceTypeField()));
-    Assert.assertEquals("snort", docs.get("snort_2").getDocument().get(getSourceTypeField()));
+    assertEquals(2, docs.size());
+    assertTrue(docs.keySet().contains("bro_1"));
+    assertTrue(docs.keySet().contains("snort_2"));
+    assertEquals("bro", docs.get("bro_1").getDocument().get(getSourceTypeField()));
+    assertEquals("snort", docs.get("snort_2").getDocument().get(getSourceTypeField()));
   }
 
   @Test
   public void filter_query_filters_results() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(filterQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(3, response.getTotal());
+    assertEquals(3, response.getTotal());
     List<SearchResult> results = response.getResults();
-    Assert.assertEquals("snort", results.get(0).getSource().get(getSourceTypeField()));
-    Assert.assertEquals("9", results.get(0).getSource().get("timestamp").toString());
-    Assert.assertEquals("snort", results.get(1).getSource().get(getSourceTypeField()));
-    Assert.assertEquals("7", results.get(1).getSource().get("timestamp").toString());
-    Assert.assertEquals("bro", results.get(2).getSource().get(getSourceTypeField()));
-    Assert.assertEquals("1", results.get(2).getSource().get("timestamp").toString());
+    assertEquals("snort", results.get(0).getSource().get(getSourceTypeField()));
+    assertEquals("9", results.get(0).getSource().get("timestamp").toString());
+    assertEquals("snort", results.get(1).getSource().get(getSourceTypeField()));
+    assertEquals("7", results.get(1).getSource().get("timestamp").toString());
+    assertEquals("bro", results.get(2).getSource().get(getSourceTypeField()));
+    assertEquals("1", results.get(2).getSource().get("timestamp").toString());
   }
 
   @Test
   public void sort_query_sorts_results_ascending() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(sortQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(10, response.getTotal());
+    assertEquals(10, response.getTotal());
     List<SearchResult> results = response.getResults();
     for (int i = 8001; i < 8011; ++i) {
-      Assert.assertEquals(i, results.get(i - 8001).getSource().get("ip_src_port"));
+      assertEquals(i, results.get(i - 8001).getSource().get("ip_src_port"));
     }
   }
 
@@ -548,35 +532,35 @@
   public void sort_ascending_with_missing_fields() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(sortAscendingWithMissingFields, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(10, response.getTotal());
+    assertEquals(10, response.getTotal());
     List<SearchResult> results = response.getResults();
-    Assert.assertEquals(10, results.size());
+    assertEquals(10, results.size());
 
     // the remaining are missing the 'threat:triage:score' and should be sorted last
     for (int i = 0; i < 8; i++) {
-      Assert.assertFalse(results.get(i).getSource().containsKey("threat:triage:score"));
+      assertFalse(results.get(i).getSource().containsKey("threat:triage:score"));
     }
 
     // validate sorted order - there are only 2 with a 'threat:triage:score'
-    Assert.assertEquals("10.0", results.get(8).getSource().get("threat:triage:score").toString());
-    Assert.assertEquals("20.0", results.get(9).getSource().get("threat:triage:score").toString());
+    assertEquals("10.0", results.get(8).getSource().get("threat:triage:score").toString());
+    assertEquals("20.0", results.get(9).getSource().get("threat:triage:score").toString());
   }
 
   @Test
   public void sort_descending_with_missing_fields() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(sortDescendingWithMissingFields, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(10, response.getTotal());
+    assertEquals(10, response.getTotal());
     List<SearchResult> results = response.getResults();
-    Assert.assertEquals(10, results.size());
+    assertEquals(10, results.size());
 
     // validate sorted order - there are only 2 with a 'threat:triage:score'
-    Assert.assertEquals("20.0", results.get(0).getSource().get("threat:triage:score").toString());
-    Assert.assertEquals("10.0", results.get(1).getSource().get("threat:triage:score").toString());
+    assertEquals("20.0", results.get(0).getSource().get("threat:triage:score").toString());
+    assertEquals("10.0", results.get(1).getSource().get("threat:triage:score").toString());
 
     // the remaining are missing the 'threat:triage:score' and should be sorted last
     for (int i = 2; i < 10; i++) {
-      Assert.assertFalse(results.get(i).getSource().containsKey("threat:triage:score"));
+      assertFalse(results.get(i).getSource().containsKey("threat:triage:score"));
     }
   }
 
@@ -584,26 +568,26 @@
   public void results_are_paginated() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(paginationQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(10, response.getTotal());
+    assertEquals(10, response.getTotal());
     List<SearchResult> results = response.getResults();
-    Assert.assertEquals(3, results.size());
-    Assert.assertEquals("snort", results.get(0).getSource().get(getSourceTypeField()));
-    Assert.assertEquals("6", results.get(0).getSource().get("timestamp").toString());
-    Assert.assertEquals("bro", results.get(1).getSource().get(getSourceTypeField()));
-    Assert.assertEquals("5", results.get(1).getSource().get("timestamp").toString());
-    Assert.assertEquals("bro", results.get(2).getSource().get(getSourceTypeField()));
-    Assert.assertEquals("4", results.get(2).getSource().get("timestamp").toString());
+    assertEquals(3, results.size());
+    assertEquals("snort", results.get(0).getSource().get(getSourceTypeField()));
+    assertEquals("6", results.get(0).getSource().get("timestamp").toString());
+    assertEquals("bro", results.get(1).getSource().get(getSourceTypeField()));
+    assertEquals("5", results.get(1).getSource().get("timestamp").toString());
+    assertEquals("bro", results.get(2).getSource().get(getSourceTypeField()));
+    assertEquals("4", results.get(2).getSource().get("timestamp").toString());
   }
 
   @Test
   public void returns_results_only_for_specified_indices() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(indexQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(5, response.getTotal());
+    assertEquals(5, response.getTotal());
     List<SearchResult> results = response.getResults();
     for (int i = 5, j = 0; i > 0; i--, j++) {
-      Assert.assertEquals("bro", results.get(j).getSource().get(getSourceTypeField()));
-      Assert.assertEquals(i + "", results.get(j).getSource().get("timestamp").toString());
+      assertEquals("bro", results.get(j).getSource().get(getSourceTypeField()));
+      assertEquals(i + "", results.get(j).getSource().get("timestamp").toString());
     }
   }
 
@@ -612,117 +596,114 @@
     String facetQuery = facetQueryRaw.replace("source:type", getSourceTypeField());
     SearchRequest request = JSONUtils.INSTANCE.load(facetQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(10, response.getTotal());
+    assertEquals(10, response.getTotal());
     Map<String, Map<String, Long>> facetCounts = response.getFacetCounts();
-    Assert.assertEquals(8, facetCounts.size());
+    assertEquals(8, facetCounts.size());
     Map<String, Long> sourceTypeCounts = facetCounts.get(getSourceTypeField());
-    Assert.assertEquals(2, sourceTypeCounts.size());
-    Assert.assertEquals(new Long(5), sourceTypeCounts.get("bro"));
-    Assert.assertEquals(new Long(5), sourceTypeCounts.get("snort"));
+    assertEquals(2, sourceTypeCounts.size());
+    assertEquals(new Long(5), sourceTypeCounts.get("bro"));
+    assertEquals(new Long(5), sourceTypeCounts.get("snort"));
     Map<String, Long> ipSrcAddrCounts = facetCounts.get("ip_src_addr");
-    Assert.assertEquals(8, ipSrcAddrCounts.size());
-    Assert.assertEquals(new Long(3), ipSrcAddrCounts.get("192.168.1.1"));
-    Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.2"));
-    Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.3"));
-    Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.4"));
-    Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.5"));
-    Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.6"));
-    Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.7"));
-    Assert.assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.8"));
+    assertEquals(8, ipSrcAddrCounts.size());
+    assertEquals(new Long(3), ipSrcAddrCounts.get("192.168.1.1"));
+    assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.2"));
+    assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.3"));
+    assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.4"));
+    assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.5"));
+    assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.6"));
+    assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.7"));
+    assertEquals(new Long(1), ipSrcAddrCounts.get("192.168.1.8"));
     Map<String, Long> ipSrcPortCounts = facetCounts.get("ip_src_port");
-    Assert.assertEquals(10, ipSrcPortCounts.size());
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8001"));
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8002"));
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8003"));
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8004"));
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8005"));
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8006"));
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8007"));
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8008"));
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8009"));
-    Assert.assertEquals(new Long(1), ipSrcPortCounts.get("8010"));
+    assertEquals(10, ipSrcPortCounts.size());
+    assertEquals(new Long(1), ipSrcPortCounts.get("8001"));
+    assertEquals(new Long(1), ipSrcPortCounts.get("8002"));
+    assertEquals(new Long(1), ipSrcPortCounts.get("8003"));
+    assertEquals(new Long(1), ipSrcPortCounts.get("8004"));
+    assertEquals(new Long(1), ipSrcPortCounts.get("8005"));
+    assertEquals(new Long(1), ipSrcPortCounts.get("8006"));
+    assertEquals(new Long(1), ipSrcPortCounts.get("8007"));
+    assertEquals(new Long(1), ipSrcPortCounts.get("8008"));
+    assertEquals(new Long(1), ipSrcPortCounts.get("8009"));
+    assertEquals(new Long(1), ipSrcPortCounts.get("8010"));
     Map<String, Long> longFieldCounts = facetCounts.get("long_field");
-    Assert.assertEquals(2, longFieldCounts.size());
-    Assert.assertEquals(new Long(8), longFieldCounts.get("10000"));
-    Assert.assertEquals(new Long(2), longFieldCounts.get("20000"));
+    assertEquals(2, longFieldCounts.size());
+    assertEquals(new Long(8), longFieldCounts.get("10000"));
+    assertEquals(new Long(2), longFieldCounts.get("20000"));
     Map<String, Long> timestampCounts = facetCounts.get("timestamp");
-    Assert.assertEquals(10, timestampCounts.size());
-    Assert.assertEquals(new Long(1), timestampCounts.get("1"));
-    Assert.assertEquals(new Long(1), timestampCounts.get("2"));
-    Assert.assertEquals(new Long(1), timestampCounts.get("3"));
-    Assert.assertEquals(new Long(1), timestampCounts.get("4"));
-    Assert.assertEquals(new Long(1), timestampCounts.get("5"));
-    Assert.assertEquals(new Long(1), timestampCounts.get("6"));
-    Assert.assertEquals(new Long(1), timestampCounts.get("7"));
-    Assert.assertEquals(new Long(1), timestampCounts.get("8"));
-    Assert.assertEquals(new Long(1), timestampCounts.get("9"));
-    Assert.assertEquals(new Long(1), timestampCounts.get("10"));
+    assertEquals(10, timestampCounts.size());
+    assertEquals(new Long(1), timestampCounts.get("1"));
+    assertEquals(new Long(1), timestampCounts.get("2"));
+    assertEquals(new Long(1), timestampCounts.get("3"));
+    assertEquals(new Long(1), timestampCounts.get("4"));
+    assertEquals(new Long(1), timestampCounts.get("5"));
+    assertEquals(new Long(1), timestampCounts.get("6"));
+    assertEquals(new Long(1), timestampCounts.get("7"));
+    assertEquals(new Long(1), timestampCounts.get("8"));
+    assertEquals(new Long(1), timestampCounts.get("9"));
+    assertEquals(new Long(1), timestampCounts.get("10"));
     Map<String, Long> latitudeCounts = facetCounts.get("latitude");
-    Assert.assertEquals(2, latitudeCounts.size());
+    assertEquals(2, latitudeCounts.size());
     List<String> latitudeKeys = new ArrayList<>(latitudeCounts.keySet());
     Collections.sort(latitudeKeys);
-    Assert.assertEquals(48.0001, Double.parseDouble(latitudeKeys.get(0)), 0.00001);
-    Assert.assertEquals(48.5839, Double.parseDouble(latitudeKeys.get(1)), 0.00001);
-    Assert.assertEquals(new Long(2), latitudeCounts.get(latitudeKeys.get(0)));
-    Assert.assertEquals(new Long(8), latitudeCounts.get(latitudeKeys.get(1)));
+    assertEquals(48.0001, Double.parseDouble(latitudeKeys.get(0)), 0.00001);
+    assertEquals(48.5839, Double.parseDouble(latitudeKeys.get(1)), 0.00001);
+    assertEquals(new Long(2), latitudeCounts.get(latitudeKeys.get(0)));
+    assertEquals(new Long(8), latitudeCounts.get(latitudeKeys.get(1)));
     Map<String, Long> scoreFieldCounts = facetCounts.get("score");
-    Assert.assertEquals(4, scoreFieldCounts.size());
+    assertEquals(4, scoreFieldCounts.size());
     List<String> scoreFieldKeys = new ArrayList<>(scoreFieldCounts.keySet());
     Collections.sort(scoreFieldKeys);
-    Assert.assertEquals(10.0, Double.parseDouble(scoreFieldKeys.get(0)), 0.00001);
-    Assert.assertEquals(20.0, Double.parseDouble(scoreFieldKeys.get(1)), 0.00001);
-    Assert.assertEquals(50.0, Double.parseDouble(scoreFieldKeys.get(2)), 0.00001);
-    Assert.assertEquals(98.0, Double.parseDouble(scoreFieldKeys.get(3)), 0.00001);
-    Assert.assertEquals(new Long(4), scoreFieldCounts.get(scoreFieldKeys.get(0)));
-    Assert.assertEquals(new Long(2), scoreFieldCounts.get(scoreFieldKeys.get(1)));
-    Assert.assertEquals(new Long(3), scoreFieldCounts.get(scoreFieldKeys.get(2)));
-    Assert.assertEquals(new Long(1), scoreFieldCounts.get(scoreFieldKeys.get(3)));
+    assertEquals(10.0, Double.parseDouble(scoreFieldKeys.get(0)), 0.00001);
+    assertEquals(20.0, Double.parseDouble(scoreFieldKeys.get(1)), 0.00001);
+    assertEquals(50.0, Double.parseDouble(scoreFieldKeys.get(2)), 0.00001);
+    assertEquals(98.0, Double.parseDouble(scoreFieldKeys.get(3)), 0.00001);
+    assertEquals(new Long(4), scoreFieldCounts.get(scoreFieldKeys.get(0)));
+    assertEquals(new Long(2), scoreFieldCounts.get(scoreFieldKeys.get(1)));
+    assertEquals(new Long(3), scoreFieldCounts.get(scoreFieldKeys.get(2)));
+    assertEquals(new Long(1), scoreFieldCounts.get(scoreFieldKeys.get(3)));
     Map<String, Long> isAlertCounts = facetCounts.get("is_alert");
-    Assert.assertEquals(2, isAlertCounts.size());
-    Assert.assertEquals(new Long(6), isAlertCounts.get("true"));
-    Assert.assertEquals(new Long(4), isAlertCounts.get("false"));
+    assertEquals(2, isAlertCounts.size());
+    assertEquals(new Long(6), isAlertCounts.get("true"));
+    assertEquals(new Long(4), isAlertCounts.get("false"));
   }
 
   @Test
   public void disabled_facet_query_returns_null_count() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(disabledFacetQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertNull(response.getFacetCounts());
+    assertNull(response.getFacetCounts());
   }
 
   @Test
   public void missing_type_facet_query() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(missingTypeFacetQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(10, response.getTotal());
+    assertEquals(10, response.getTotal());
 
     Map<String, Map<String, Long>> facetCounts = response.getFacetCounts();
-    Assert.assertEquals(1, facetCounts.size());
+    assertEquals(1, facetCounts.size());
     Map<String, Long> snortFieldCounts = facetCounts.get("sig_generator");
-    Assert.assertEquals(5, snortFieldCounts.size());
+    assertEquals(5, snortFieldCounts.size());
 
-    Assert.assertEquals(1L, snortFieldCounts.get("sig_generator 5").longValue());
-    Assert.assertEquals(1L, snortFieldCounts.get("sig_generator 4").longValue());
-    Assert.assertEquals(1L, snortFieldCounts.get("sig_generator 3").longValue());
-    Assert.assertEquals(1L, snortFieldCounts.get("sig_generator 2").longValue());
-    Assert.assertEquals(1L, snortFieldCounts.get("sig_generator 1").longValue());
+    assertEquals(1L, snortFieldCounts.get("sig_generator 5").longValue());
+    assertEquals(1L, snortFieldCounts.get("sig_generator 4").longValue());
+    assertEquals(1L, snortFieldCounts.get("sig_generator 3").longValue());
+    assertEquals(1L, snortFieldCounts.get("sig_generator 2").longValue());
+    assertEquals(1L, snortFieldCounts.get("sig_generator 1").longValue());
     response.getFacetCounts();
   }
 
   @Test
   public void different_type_facet_query() throws Exception {
-    thrown.expect(Exception.class);
     SearchRequest request = JSONUtils.INSTANCE.load(differentTypeFacetQuery, SearchRequest.class);
-    SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(3, response.getTotal());
+    assertThrows(InvalidSearchException.class, () -> getIndexDao().search(request));
   }
 
   @Test
   public void exceeding_max_results_throws_exception() throws Exception {
-    thrown.expect(InvalidSearchException.class);
-    thrown.expectMessage("Search result size must be less than 100");
     SearchRequest request = JSONUtils.INSTANCE.load(exceededMaxResultsQuery, SearchRequest.class);
-    getIndexDao().search(request);
+    InvalidSearchException e = assertThrows(InvalidSearchException.class, () -> getIndexDao().search(request));
+    assertEquals("Search result size must be less than 100", e.getMessage());
   }
 
   @Test
@@ -730,7 +711,7 @@
     // getColumnMetadata with an index that doesn't exist
     {
       Map<String, FieldType> fieldTypes = getIndexDao().getColumnMetadata(Collections.singletonList("someindex"));
-      Assert.assertEquals(0, fieldTypes.size());
+      assertEquals(0, fieldTypes.size());
     }
   }
 
@@ -738,7 +719,7 @@
   public void no_results_returned_when_query_does_not_match() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(noResultsFieldsQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(0, response.getTotal());
+    assertEquals(0, response.getTotal());
   }
 
   @Test
@@ -747,21 +728,21 @@
     GroupResponse response = getIndexDao().group(request);
 
     // expect only 1 group for 'ip_src_addr'
-    Assert.assertEquals("ip_src_addr", response.getGroupedBy());
+    assertEquals("ip_src_addr", response.getGroupedBy());
 
     // there are 8 different 'ip_src_addr' values
     List<GroupResult> groups = response.getGroupResults();
-    Assert.assertEquals(8, groups.size());
+    assertEquals(8, groups.size());
 
     // expect dotted-decimal notation in descending order
-    Assert.assertEquals("192.168.1.8", groups.get(0).getKey());
-    Assert.assertEquals("192.168.1.7", groups.get(1).getKey());
-    Assert.assertEquals("192.168.1.6", groups.get(2).getKey());
-    Assert.assertEquals("192.168.1.5", groups.get(3).getKey());
-    Assert.assertEquals("192.168.1.4", groups.get(4).getKey());
-    Assert.assertEquals("192.168.1.3", groups.get(5).getKey());
-    Assert.assertEquals("192.168.1.2", groups.get(6).getKey());
-    Assert.assertEquals("192.168.1.1", groups.get(7).getKey());
+    assertEquals("192.168.1.8", groups.get(0).getKey());
+    assertEquals("192.168.1.7", groups.get(1).getKey());
+    assertEquals("192.168.1.6", groups.get(2).getKey());
+    assertEquals("192.168.1.5", groups.get(3).getKey());
+    assertEquals("192.168.1.4", groups.get(4).getKey());
+    assertEquals("192.168.1.3", groups.get(5).getKey());
+    assertEquals("192.168.1.2", groups.get(6).getKey());
+    assertEquals("192.168.1.1", groups.get(7).getKey());
   }
 
   @Test
@@ -769,51 +750,51 @@
     // Group by test case, default order is count descending
     GroupRequest request = JSONUtils.INSTANCE.load(groupByQuery, GroupRequest.class);
     GroupResponse response = getIndexDao().group(request);
-    Assert.assertEquals("is_alert", response.getGroupedBy());
+    assertEquals("is_alert", response.getGroupedBy());
     List<GroupResult> isAlertGroups = response.getGroupResults();
-    Assert.assertEquals(2, isAlertGroups.size());
+    assertEquals(2, isAlertGroups.size());
 
     // isAlert == true group
     GroupResult trueGroup = isAlertGroups.get(0);
-    Assert.assertEquals("true", trueGroup.getKey());
-    Assert.assertEquals(6, trueGroup.getTotal());
-    Assert.assertEquals("latitude", trueGroup.getGroupedBy());
-    Assert.assertEquals(198.0, trueGroup.getScore(), 0.00001);
+    assertEquals("true", trueGroup.getKey());
+    assertEquals(6, trueGroup.getTotal());
+    assertEquals("latitude", trueGroup.getGroupedBy());
+    assertEquals(198.0, trueGroup.getScore(), 0.00001);
     List<GroupResult> trueLatitudeGroups = trueGroup.getGroupResults();
-    Assert.assertEquals(2, trueLatitudeGroups.size());
+    assertEquals(2, trueLatitudeGroups.size());
 
 
     // isAlert == true && latitude == 48.5839 group
     GroupResult trueLatitudeGroup2 = trueLatitudeGroups.get(0);
-    Assert.assertEquals(48.5839, Double.parseDouble(trueLatitudeGroup2.getKey()), 0.00001);
-    Assert.assertEquals(5, trueLatitudeGroup2.getTotal());
-    Assert.assertEquals(148.0, trueLatitudeGroup2.getScore(), 0.00001);
+    assertEquals(48.5839, Double.parseDouble(trueLatitudeGroup2.getKey()), 0.00001);
+    assertEquals(5, trueLatitudeGroup2.getTotal());
+    assertEquals(148.0, trueLatitudeGroup2.getScore(), 0.00001);
 
     // isAlert == true && latitude == 48.0001 group
     GroupResult trueLatitudeGroup1 = trueLatitudeGroups.get(1);
-    Assert.assertEquals(48.0001, Double.parseDouble(trueLatitudeGroup1.getKey()), 0.00001);
-    Assert.assertEquals(1, trueLatitudeGroup1.getTotal());
-    Assert.assertEquals(50.0, trueLatitudeGroup1.getScore(), 0.00001);
+    assertEquals(48.0001, Double.parseDouble(trueLatitudeGroup1.getKey()), 0.00001);
+    assertEquals(1, trueLatitudeGroup1.getTotal());
+    assertEquals(50.0, trueLatitudeGroup1.getScore(), 0.00001);
 
     // isAlert == false group
     GroupResult falseGroup = isAlertGroups.get(1);
-    Assert.assertEquals("false", falseGroup.getKey());
-    Assert.assertEquals("latitude", falseGroup.getGroupedBy());
-    Assert.assertEquals(130.0, falseGroup.getScore(), 0.00001);
+    assertEquals("false", falseGroup.getKey());
+    assertEquals("latitude", falseGroup.getGroupedBy());
+    assertEquals(130.0, falseGroup.getScore(), 0.00001);
     List<GroupResult> falseLatitudeGroups = falseGroup.getGroupResults();
-    Assert.assertEquals(2, falseLatitudeGroups.size());
+    assertEquals(2, falseLatitudeGroups.size());
 
     // isAlert == false && latitude == 48.5839 group
     GroupResult falseLatitudeGroup2 = falseLatitudeGroups.get(0);
-    Assert.assertEquals(48.5839, Double.parseDouble(falseLatitudeGroup2.getKey()), 0.00001);
-    Assert.assertEquals(3, falseLatitudeGroup2.getTotal());
-    Assert.assertEquals(80.0, falseLatitudeGroup2.getScore(), 0.00001);
+    assertEquals(48.5839, Double.parseDouble(falseLatitudeGroup2.getKey()), 0.00001);
+    assertEquals(3, falseLatitudeGroup2.getTotal());
+    assertEquals(80.0, falseLatitudeGroup2.getScore(), 0.00001);
 
     // isAlert == false && latitude == 48.0001 group
     GroupResult falseLatitudeGroup1 = falseLatitudeGroups.get(1);
-    Assert.assertEquals(48.0001, Double.parseDouble(falseLatitudeGroup1.getKey()), 0.00001);
-    Assert.assertEquals(1, falseLatitudeGroup1.getTotal());
-    Assert.assertEquals(50.0, falseLatitudeGroup1.getScore(), 0.00001);
+    assertEquals(48.0001, Double.parseDouble(falseLatitudeGroup1.getKey()), 0.00001);
+    assertEquals(1, falseLatitudeGroup1.getTotal());
+    assertEquals(50.0, falseLatitudeGroup1.getScore(), 0.00001);
   }
 
   @Test
@@ -821,96 +802,96 @@
     // Group by with sorting test case where is_alert is sorted by count ascending and ip_src_addr is sorted by term descending
     GroupRequest request = JSONUtils.INSTANCE.load(sortedGroupByQuery, GroupRequest.class);
     GroupResponse response = getIndexDao().group(request);
-    Assert.assertEquals("is_alert", response.getGroupedBy());
+    assertEquals("is_alert", response.getGroupedBy());
     List<GroupResult> isAlertGroups = response.getGroupResults();
-    Assert.assertEquals(2, isAlertGroups.size());
+    assertEquals(2, isAlertGroups.size());
 
     // isAlert == false group
     GroupResult falseGroup = isAlertGroups.get(0);
-    Assert.assertEquals(4, falseGroup.getTotal());
-    Assert.assertEquals("ip_src_addr", falseGroup.getGroupedBy());
+    assertEquals(4, falseGroup.getTotal());
+    assertEquals("ip_src_addr", falseGroup.getGroupedBy());
     List<GroupResult> falseIpSrcAddrGroups = falseGroup.getGroupResults();
-    Assert.assertEquals(4, falseIpSrcAddrGroups.size());
+    assertEquals(4, falseIpSrcAddrGroups.size());
 
     // isAlert == false && ip_src_addr == 192.168.1.8 group
     GroupResult falseIpSrcAddrGroup1 = falseIpSrcAddrGroups.get(0);
-    Assert.assertEquals("192.168.1.8", falseIpSrcAddrGroup1.getKey());
-    Assert.assertEquals(1, falseIpSrcAddrGroup1.getTotal());
-    Assert.assertNull(falseIpSrcAddrGroup1.getGroupedBy());
-    Assert.assertNull(falseIpSrcAddrGroup1.getGroupResults());
+    assertEquals("192.168.1.8", falseIpSrcAddrGroup1.getKey());
+    assertEquals(1, falseIpSrcAddrGroup1.getTotal());
+    assertNull(falseIpSrcAddrGroup1.getGroupedBy());
+    assertNull(falseIpSrcAddrGroup1.getGroupResults());
 
     // isAlert == false && ip_src_addr == 192.168.1.7 group
     GroupResult falseIpSrcAddrGroup2 = falseIpSrcAddrGroups.get(1);
-    Assert.assertEquals("192.168.1.7", falseIpSrcAddrGroup2.getKey());
-    Assert.assertEquals(1, falseIpSrcAddrGroup2.getTotal());
-    Assert.assertNull(falseIpSrcAddrGroup2.getGroupedBy());
-    Assert.assertNull(falseIpSrcAddrGroup2.getGroupResults());
+    assertEquals("192.168.1.7", falseIpSrcAddrGroup2.getKey());
+    assertEquals(1, falseIpSrcAddrGroup2.getTotal());
+    assertNull(falseIpSrcAddrGroup2.getGroupedBy());
+    assertNull(falseIpSrcAddrGroup2.getGroupResults());
 
     // isAlert == false && ip_src_addr == 192.168.1.6 group
     GroupResult falseIpSrcAddrGroup3 = falseIpSrcAddrGroups.get(2);
-    Assert.assertEquals("192.168.1.6", falseIpSrcAddrGroup3.getKey());
-    Assert.assertEquals(1, falseIpSrcAddrGroup3.getTotal());
-    Assert.assertNull(falseIpSrcAddrGroup3.getGroupedBy());
-    Assert.assertNull(falseIpSrcAddrGroup3.getGroupResults());
+    assertEquals("192.168.1.6", falseIpSrcAddrGroup3.getKey());
+    assertEquals(1, falseIpSrcAddrGroup3.getTotal());
+    assertNull(falseIpSrcAddrGroup3.getGroupedBy());
+    assertNull(falseIpSrcAddrGroup3.getGroupResults());
 
     // isAlert == false && ip_src_addr == 192.168.1.2 group
     GroupResult falseIpSrcAddrGroup4 = falseIpSrcAddrGroups.get(3);
-    Assert.assertEquals("192.168.1.2", falseIpSrcAddrGroup4.getKey());
-    Assert.assertEquals(1, falseIpSrcAddrGroup4.getTotal());
-    Assert.assertNull(falseIpSrcAddrGroup4.getGroupedBy());
-    Assert.assertNull(falseIpSrcAddrGroup4.getGroupResults());
+    assertEquals("192.168.1.2", falseIpSrcAddrGroup4.getKey());
+    assertEquals(1, falseIpSrcAddrGroup4.getTotal());
+    assertNull(falseIpSrcAddrGroup4.getGroupedBy());
+    assertNull(falseIpSrcAddrGroup4.getGroupResults());
 
     // isAlert == false group
     GroupResult trueGroup = isAlertGroups.get(1);
-    Assert.assertEquals(6, trueGroup.getTotal());
-    Assert.assertEquals("ip_src_addr", trueGroup.getGroupedBy());
+    assertEquals(6, trueGroup.getTotal());
+    assertEquals("ip_src_addr", trueGroup.getGroupedBy());
     List<GroupResult> trueIpSrcAddrGroups = trueGroup.getGroupResults();
-    Assert.assertEquals(4, trueIpSrcAddrGroups.size());
+    assertEquals(4, trueIpSrcAddrGroups.size());
 
     // isAlert == false && ip_src_addr == 192.168.1.5 group
     GroupResult trueIpSrcAddrGroup1 = trueIpSrcAddrGroups.get(0);
-    Assert.assertEquals("192.168.1.5", trueIpSrcAddrGroup1.getKey());
-    Assert.assertEquals(1, trueIpSrcAddrGroup1.getTotal());
-    Assert.assertNull(trueIpSrcAddrGroup1.getGroupedBy());
-    Assert.assertNull(trueIpSrcAddrGroup1.getGroupResults());
+    assertEquals("192.168.1.5", trueIpSrcAddrGroup1.getKey());
+    assertEquals(1, trueIpSrcAddrGroup1.getTotal());
+    assertNull(trueIpSrcAddrGroup1.getGroupedBy());
+    assertNull(trueIpSrcAddrGroup1.getGroupResults());
 
     // isAlert == false && ip_src_addr == 192.168.1.4 group
     GroupResult trueIpSrcAddrGroup2 = trueIpSrcAddrGroups.get(1);
-    Assert.assertEquals("192.168.1.4", trueIpSrcAddrGroup2.getKey());
-    Assert.assertEquals(1, trueIpSrcAddrGroup2.getTotal());
-    Assert.assertNull(trueIpSrcAddrGroup2.getGroupedBy());
-    Assert.assertNull(trueIpSrcAddrGroup2.getGroupResults());
+    assertEquals("192.168.1.4", trueIpSrcAddrGroup2.getKey());
+    assertEquals(1, trueIpSrcAddrGroup2.getTotal());
+    assertNull(trueIpSrcAddrGroup2.getGroupedBy());
+    assertNull(trueIpSrcAddrGroup2.getGroupResults());
 
     // isAlert == false && ip_src_addr == 192.168.1.3 group
     GroupResult trueIpSrcAddrGroup3 = trueIpSrcAddrGroups.get(2);
-    Assert.assertEquals("192.168.1.3", trueIpSrcAddrGroup3.getKey());
-    Assert.assertEquals(1, trueIpSrcAddrGroup3.getTotal());
-    Assert.assertNull(trueIpSrcAddrGroup3.getGroupedBy());
-    Assert.assertNull(trueIpSrcAddrGroup3.getGroupResults());
+    assertEquals("192.168.1.3", trueIpSrcAddrGroup3.getKey());
+    assertEquals(1, trueIpSrcAddrGroup3.getTotal());
+    assertNull(trueIpSrcAddrGroup3.getGroupedBy());
+    assertNull(trueIpSrcAddrGroup3.getGroupResults());
 
     // isAlert == false && ip_src_addr == 192.168.1.1 group
     GroupResult trueIpSrcAddrGroup4 = trueIpSrcAddrGroups.get(3);
-    Assert.assertEquals("192.168.1.1", trueIpSrcAddrGroup4.getKey());
-    Assert.assertEquals(3, trueIpSrcAddrGroup4.getTotal());
-    Assert.assertNull(trueIpSrcAddrGroup4.getGroupedBy());
-    Assert.assertNull(trueIpSrcAddrGroup4.getGroupResults());
+    assertEquals("192.168.1.1", trueIpSrcAddrGroup4.getKey());
+    assertEquals(3, trueIpSrcAddrGroup4.getTotal());
+    assertNull(trueIpSrcAddrGroup4.getGroupedBy());
+    assertNull(trueIpSrcAddrGroup4.getGroupResults());
   }
 
   @Test
   public void queries_fields() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(fieldsQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(10, response.getTotal());
+    assertEquals(10, response.getTotal());
     List<SearchResult> results = response.getResults();
     for (int i = 0; i < 5; ++i) {
       Map<String, Object> source = results.get(i).getSource();
-      Assert.assertEquals(1, source.size());
-      Assert.assertNotNull(source.get("ip_src_addr"));
+      assertEquals(1, source.size());
+      assertNotNull(source.get("ip_src_addr"));
     }
     for (int i = 5; i < 10; ++i) {
       Map<String, Object> source = results.get(i).getSource();
-      Assert.assertEquals(1, source.size());
-      Assert.assertNotNull(source.get("ip_src_addr"));
+      assertEquals(1, source.size());
+      assertNotNull(source.get("ip_src_addr"));
     }
   }
 
@@ -918,16 +899,16 @@
   public void sort_by_guid() throws Exception {
     SearchRequest request = JSONUtils.INSTANCE.load(sortByGuidQuery, SearchRequest.class);
     SearchResponse response = getIndexDao().search(request);
-    Assert.assertEquals(5, response.getTotal());
+    assertEquals(5, response.getTotal());
     List<SearchResult> results = response.getResults();
     for (int i = 0; i < 5; ++i) {
       Map<String, Object> source = results.get(i).getSource();
-      Assert.assertEquals(1, source.size());
-      Assert.assertEquals(source.get("guid"), "bro_" + (i + 1));
+      assertEquals(1, source.size());
+      assertEquals(source.get("guid"), "bro_" + (i + 1));
     }
   }
 
-  @AfterClass
+  @AfterAll
   public static void stop() {
     indexComponent.stop();
   }
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/UpdateDaoTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/UpdateDaoTest.java
index bbe7fa8..7fa8897 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/UpdateDaoTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/UpdateDaoTest.java
@@ -21,53 +21,44 @@
 import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
 import org.apache.metron.indexing.dao.update.Document;
 import org.apache.metron.indexing.dao.update.UpdateDao;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.util.HashMap;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 /**
  * The tests in this class are common among all UpdateDao implementations.
  */
 public abstract class UpdateDaoTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   @Test
-  public void addCommentShouldThrowExceptionOnMissingAlert() throws Exception {
-    exception.expect(IOException.class);
-    exception.expectMessage("Unable to add comment. Document with guid guid cannot be found.");
-
+  public void addCommentShouldThrowExceptionOnMissingAlert() {
     CommentAddRemoveRequest request = new CommentAddRemoveRequest();
     request.setGuid("guid");
 
-    getUpdateDao().addCommentToAlert(request, null);
+    IOException e = assertThrows(IOException.class, () -> getUpdateDao().addCommentToAlert(request, null));
+    assertEquals("Unable to add comment. Document with guid guid cannot be found.", e.getMessage());
   }
 
   @Test
-  public void removeCommentShouldThrowExceptionOnMissingAlert() throws Exception {
-    exception.expect(IOException.class);
-    exception.expectMessage("Unable to remove comment. Document with guid guid cannot be found.");
-
+  public void removeCommentShouldThrowExceptionOnMissingAlert() {
     CommentAddRemoveRequest request = new CommentAddRemoveRequest();
     request.setGuid("guid");
 
-    getUpdateDao().removeCommentFromAlert(request, null);
+    IOException e = assertThrows(IOException.class, () -> getUpdateDao().removeCommentFromAlert(request, null));
+    assertEquals("Unable to remove comment. Document with guid guid cannot be found.", e.getMessage());
   }
 
   @Test
   public void removeCommentShouldThrowExceptionOnEmptyComments() throws Exception {
-    exception.expect(IOException.class);
-    exception.expectMessage("Unable to remove comment. Document with guid guid has no comments.");
-
     CommentAddRemoveRequest request = new CommentAddRemoveRequest();
     request.setGuid("guid");
     Document latest = new Document(new HashMap<>(), "guid", "bro", System.currentTimeMillis());
 
-    getUpdateDao().removeCommentFromAlert(request, latest);
+    IOException e = assertThrows(IOException.class, () -> getUpdateDao().removeCommentFromAlert(request, latest));
+    assertEquals("Unable to remove comment. Document with guid guid has no comments.", e.getMessage());
   }
 
   public abstract UpdateDao getUpdateDao();
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/UpdateIntegrationTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/UpdateIntegrationTest.java
index ab41c08..9c41803 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/UpdateIntegrationTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/UpdateIntegrationTest.java
@@ -23,21 +23,17 @@
 import org.apache.metron.indexing.dao.update.OriginalNotFoundException;
 import org.apache.metron.indexing.dao.update.PatchRequest;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
+import java.util.*;
 import java.util.stream.Collectors;
 
-import static org.hamcrest.CoreMatchers.hasItem;
-
 import static org.apache.metron.indexing.dao.IndexDao.COMMENTS_FIELD;
+import static org.hamcrest.CoreMatchers.hasItem;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public abstract class UpdateIntegrationTest {
 
@@ -77,7 +73,7 @@
 
     // update the document and validate
     Document updated = getDao().update(toUpdate, Optional.of(SENSOR_NAME));
-    Assert.assertEquals(toUpdate, updated);
+    assertEquals(toUpdate, updated);
 
     // ensure the document was updated in the index
     assertDocumentIndexed(toUpdate);
@@ -107,9 +103,9 @@
 
     // update the documents as a batch and validate
     Map<Document, Optional<String>> updated = getDao().batchUpdate(toUpdate);
-    Assert.assertThat(updated.keySet(), hasItem(document1));
-    Assert.assertThat(updated.keySet(), hasItem(document2));
-    Assert.assertThat(updated.keySet(), hasItem(document3));
+    assertThat(updated.keySet(), hasItem(document1));
+    assertThat(updated.keySet(), hasItem(document2));
+    assertThat(updated.keySet(), hasItem(document3));
 
     // ensure the documents were written to the index
     assertDocumentIndexed(document1);
@@ -129,19 +125,19 @@
     {
       // validate that the comment was made on the returned document
       List<AlertComment> comments = getComments(withComment);
-      Assert.assertEquals(1, comments.size());
-      Assert.assertEquals(commentText, comments.get(0).getComment());
-      Assert.assertEquals(commentUser, comments.get(0).getUsername());
-      Assert.assertEquals(commentTimestamp, comments.get(0).getTimestamp());
+      assertEquals(1, comments.size());
+      assertEquals(commentText, comments.get(0).getComment());
+      assertEquals(commentUser, comments.get(0).getUsername());
+      assertEquals(commentTimestamp, comments.get(0).getTimestamp());
     }
     {
       // validate that the comment was made on the indexed document
       Document indexed = findUpdatedDoc(withComment.getDocument(), withComment.getGuid(), SENSOR_NAME);
       List<AlertComment> comments = getComments(indexed);
-      Assert.assertEquals(1, comments.size());
-      Assert.assertEquals(commentText, comments.get(0).getComment());
-      Assert.assertEquals(commentUser, comments.get(0).getUsername());
-      Assert.assertEquals(commentTimestamp, comments.get(0).getTimestamp());
+      assertEquals(1, comments.size());
+      assertEquals(commentText, comments.get(0).getComment());
+      assertEquals(commentUser, comments.get(0).getUsername());
+      assertEquals(commentTimestamp, comments.get(0).getTimestamp());
     }
   }
 
@@ -171,11 +167,11 @@
 
     // patch the document that has been commented on
     Document patched = getDao().patch(getDao(), pr, Optional.of(withComment.getTimestamp()));
-    Assert.assertEquals("metron", patched.getDocument().get("project"));
+    assertEquals("metron", patched.getDocument().get("project"));
 
     // ensure the patch was made on the indexed document
     Document indexed = findUpdatedDoc(patched.getDocument(), patched.getGuid(), SENSOR_NAME);
-    Assert.assertEquals("metron", indexed.getDocument().get("project"));
+    assertEquals("metron", indexed.getDocument().get("project"));
   }
 
   @Test
@@ -185,20 +181,20 @@
 
     // add a comment on the document
     Document withComments = addAlertComment(guid, "comment", "user1", 1526401584951L);
-    Assert.assertEquals(1, getComments(withComments).size());
+    assertEquals(1, getComments(withComments).size());
 
     // ensure the comment was added to the document in the index
     Document indexedWithComments = findUpdatedDoc(withComments.getDocument(), withComments.getGuid(), withComments.getSensorType());
-    Assert.assertEquals(1, getComments(indexedWithComments).size());
+    assertEquals(1, getComments(indexedWithComments).size());
 
     // remove a comment from the document
     AlertComment toRemove = getComments(withComments).get(0);
     Document noComments = removeAlertComment(guid, toRemove.getComment(), toRemove.getUsername(), toRemove.getTimestamp());
-    Assert.assertEquals(0, getComments(noComments).size());
+    assertEquals(0, getComments(noComments).size());
 
     // ensure the comment was removed from the index
     Document indexedNoComments = findUpdatedDoc(noComments.getDocument(), withComments.getGuid(), withComments.getSensorType());
-    Assert.assertEquals(0, getComments(indexedNoComments).size());
+    assertEquals(0, getComments(indexedNoComments).size());
   }
 
   protected Document addAlertComment(String guid, String comment, String username, long timestamp)
@@ -234,18 +230,18 @@
     Document actual = findUpdatedDoc(expected.getDocument(), expected.getGuid(), expected.getSensorType());
 
     // most fields should match exactly, except the documentID
-    Assert.assertEquals(expected.getGuid(), actual.getGuid());
-    Assert.assertEquals(expected.getTimestamp(), actual.getTimestamp());
-    Assert.assertEquals(expected.getSensorType(), actual.getSensorType());
-    Assert.assertEquals(expected.getDocument(), actual.getDocument());
+    assertEquals(expected.getGuid(), actual.getGuid());
+    assertEquals(expected.getTimestamp(), actual.getTimestamp());
+    assertEquals(expected.getSensorType(), actual.getSensorType());
+    assertEquals(expected.getDocument(), actual.getDocument());
 
     if(expected.getDocumentID().isPresent()) {
       // the documentID was already defined in 'expected', this ID should have been used when the document was indexed
-      Assert.assertEquals(expected.getDocumentID().get(), actual.getDocumentID());
+      assertEquals(expected.getDocumentID().get(), actual.getDocumentID());
 
     } else {
       // if the documentID was not defined, the indexer should have created one
-      Assert.assertNotNull(expected.getDocumentID());
+      assertNotNull(expected.getDocumentID());
     }
 
     return actual;
@@ -258,7 +254,7 @@
 
     // index the document
     Document created = getDao().update(toCreate, Optional.of(SENSOR_NAME));
-    Assert.assertEquals(toCreate, created);
+    assertEquals(toCreate, created);
 
     // ensure the document is indexed
     return assertDocumentIndexed(created);
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/MetaAlertIntegrationTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/MetaAlertIntegrationTest.java
index 5a18fc5..8450644 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/MetaAlertIntegrationTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/MetaAlertIntegrationTest.java
@@ -23,6 +23,14 @@
 import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.METAALERT_TYPE;
 import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.STATUS_FIELD;
 import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.THREAT_FIELD_DEFAULT;
+import static org.apache.metron.integration.utils.TestUtils.assertEventually;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 
 import com.google.common.base.Joiner;
 import com.google.common.collect.Iterables;
@@ -55,12 +63,8 @@
 import org.apache.metron.indexing.dao.update.Document;
 import org.apache.metron.indexing.dao.update.OriginalNotFoundException;
 import org.apache.metron.indexing.dao.update.PatchRequest;
-import org.apache.metron.integration.utils.TestUtils;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
-
-import static org.apache.metron.integration.utils.TestUtils.assertEventually;
+import org.junit.jupiter.api.Test;
 
 public abstract class MetaAlertIntegrationTest {
 
@@ -177,23 +181,23 @@
       // Verify searches successfully return more than 10 results
       SearchResponse searchResponse0 = metaDao.getAllMetaAlertsForAlert("message_0");
       List<SearchResult> searchResults0 = searchResponse0.getResults();
-      Assert.assertEquals(13, searchResults0.size());
+      assertEquals(13, searchResults0.size());
       Set<Map<String, Object>> resultSet = new HashSet<>();
       Iterables.addAll(resultSet, Iterables.transform(searchResults0, r -> r.getSource()));
       StringBuffer reason = new StringBuffer("Unable to find " + metaAlerts.get(0) + "\n");
       reason.append(Joiner.on("\n").join(resultSet));
-      Assert.assertTrue(reason.toString(), resultSet.contains(metaAlerts.get(0)));
+      assertTrue(resultSet.contains(metaAlerts.get(0)), reason.toString());
 
       // Verify no meta alerts are returned because message_1 was not added to any
       SearchResponse searchResponse1 = metaDao.getAllMetaAlertsForAlert("message_1");
       List<SearchResult> searchResults1 = searchResponse1.getResults();
-      Assert.assertEquals(0, searchResults1.size());
+      assertEquals(0, searchResults1.size());
 
       // Verify only the meta alert message_2 was added to is returned
       SearchResponse searchResponse2 = metaDao.getAllMetaAlertsForAlert("message_2");
       List<SearchResult> searchResults2 = searchResponse2.getResults();
-      Assert.assertEquals(1, searchResults2.size());
-      Assert.assertEquals(metaAlerts.get(12), searchResults2.get(0).getSource());
+      assertEquals(1, searchResults2.size());
+      assertEquals(metaAlerts.get(12), searchResults2.get(0).getSource());
     }
   }
 
@@ -231,9 +235,9 @@
 
     SearchResponse result = metaDao.search(sr);
     List<SearchResult> results = result.getResults();
-    Assert.assertEquals(2, results.size());
-    Assert.assertEquals("meta_active_0", results.get((0)).getSource().get(Constants.GUID));
-    Assert.assertEquals("message_1", results.get((1)).getSource().get(Constants.GUID));
+    assertEquals(2, results.size());
+    assertEquals("meta_active_0", results.get((0)).getSource().get(Constants.GUID));
+    assertEquals("message_1", results.get((1)).getSource().get(Constants.GUID));
 
     // Test ascending
     SortField sfAsc = new SortField();
@@ -246,19 +250,15 @@
     srAsc.setSort(Collections.singletonList(sfAsc));
     result = metaDao.search(srAsc);
     results = result.getResults();
-    Assert.assertEquals("message_1", results.get((0)).getSource().get(Constants.GUID));
-    Assert.assertEquals("meta_active_0", results.get((1)).getSource().get(Constants.GUID));
-    Assert.assertEquals(2, results.size());
+    assertEquals("message_1", results.get((0)).getSource().get(Constants.GUID));
+    assertEquals("meta_active_0", results.get((1)).getSource().get(Constants.GUID));
+    assertEquals(2, results.size());
   }
 
   @Test
-  public void getAllMetaAlertsForAlertShouldThrowExceptionForEmptyGuid() throws Exception {
-    try {
-      metaDao.getAllMetaAlertsForAlert("");
-      Assert.fail("An exception should be thrown for empty guid");
-    } catch (InvalidSearchException ise) {
-      Assert.assertEquals("Guid cannot be empty", ise.getMessage());
-    }
+  public void getAllMetaAlertsForAlertShouldThrowExceptionForEmptyGuid() {
+    InvalidSearchException ise = assertThrows(InvalidSearchException.class, () -> metaDao.getAllMetaAlertsForAlert(""));
+    assertEquals("Guid cannot be empty", ise.getMessage());
   }
 
   @Test
@@ -313,14 +313,14 @@
       expectedMetaAlert.put(getThreatTriageField(), 3.0d);
       {
         // Verify metaAlert was created
-        assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+        assertDocumentEquals(expectedMetaAlert, actualMetaAlert.getDocument());
         findCreatedDoc(actualMetaAlert.getGuid(), METAALERT_TYPE);
       }
       {
         // Verify alert 0 was not updated with metaalert field
         Document alert = metaDao.getLatest("message_0", SENSOR_NAME);
-        Assert.assertEquals(4, alert.getDocument().size());
-        Assert.assertNull(alert.getDocument().get(METAALERT_FIELD));
+        assertEquals(4, alert.getDocument().size());
+        assertNull(alert.getDocument().get(METAALERT_FIELD));
       }
       {
         // Verify alert 1 was properly updated with metaalert field
@@ -390,7 +390,7 @@
       Document actualMetaAlert = metaDao.addAlertsToMetaAlert("meta_alert", Arrays
               .asList(new GetRequest("message_1", SENSOR_NAME),
                       new GetRequest("message_2", SENSOR_NAME)));
-      assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+      assertDocumentEquals(expectedMetaAlert, actualMetaAlert.getDocument());
       findUpdatedDoc(expectedMetaAlert, "meta_alert", METAALERT_TYPE);
     }
 
@@ -399,7 +399,7 @@
       Document actualMetaAlert = metaDao.addAlertsToMetaAlert("meta_alert", Arrays
               .asList(new GetRequest("message_0", SENSOR_NAME),
                       new GetRequest("message_1", SENSOR_NAME)));
-      assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+      assertDocumentEquals(expectedMetaAlert, actualMetaAlert.getDocument());
       findUpdatedDoc(expectedMetaAlert, "meta_alert", METAALERT_TYPE);
     }
 
@@ -422,7 +422,7 @@
       Document actualMetaAlert = metaDao.addAlertsToMetaAlert("meta_alert", Arrays
               .asList(new GetRequest("message_2", SENSOR_NAME),
                       new GetRequest("message_3", SENSOR_NAME)));
-      assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+      assertDocumentEquals(expectedMetaAlert, actualMetaAlert.getDocument());
       findUpdatedDoc(expectedMetaAlert, "meta_alert", METAALERT_TYPE);
     }
   }
@@ -475,7 +475,7 @@
       Document actualMetaAlert = metaDao.removeAlertsFromMetaAlert("meta_alert", Arrays
               .asList(new GetRequest("message_0", SENSOR_NAME),
                       new GetRequest("message_1", SENSOR_NAME)));
-      assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+      assertDocumentEquals(expectedMetaAlert, actualMetaAlert.getDocument());
       findUpdatedDoc(expectedMetaAlert, "meta_alert", METAALERT_TYPE);
     }
 
@@ -484,7 +484,7 @@
       Document actualMetaAlert = metaDao.removeAlertsFromMetaAlert("meta_alert", Arrays
               .asList(new GetRequest("message_0", SENSOR_NAME),
                       new GetRequest("message_1", SENSOR_NAME)));
-      assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+      assertDocumentEquals(expectedMetaAlert, actualMetaAlert.getDocument());
       findUpdatedDoc(expectedMetaAlert, "meta_alert", METAALERT_TYPE);
     }
 
@@ -506,7 +506,7 @@
       Document actualMetaAlert = metaDao.removeAlertsFromMetaAlert("meta_alert", Arrays
               .asList(new GetRequest("message_0", SENSOR_NAME),
                       new GetRequest("message_2", SENSOR_NAME)));
-      assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+      assertDocumentEquals(expectedMetaAlert, actualMetaAlert.getDocument());
       findUpdatedDoc(expectedMetaAlert, "meta_alert", METAALERT_TYPE);
     }
 
@@ -538,14 +538,10 @@
       }
 
       // Verify removing alerts cannot result in an empty meta alert
-      try {
-        metaDao.removeAlertsFromMetaAlert("meta_alert",
-                Collections.singletonList(new GetRequest("message_3", SENSOR_NAME)));
-        Assert.fail("Removing these alerts will result in an empty meta alert.  Empty meta alerts are not allowed.");
-      } catch (IllegalStateException ise) {
-        Assert.assertEquals("Removing these alerts will result in an empty meta alert.  Empty meta alerts are not allowed.",
-                ise.getMessage());
-      }
+      IllegalStateException ise = assertThrows(IllegalStateException.class, () -> metaDao.removeAlertsFromMetaAlert("meta_alert",
+          Collections.singletonList(new GetRequest("message_3", SENSOR_NAME))));
+      assertEquals("Removing these alerts will result in an empty meta alert.  Empty meta alerts are not allowed.",
+          ise.getMessage());
     }
   }
 
@@ -567,29 +563,15 @@
         new GetRequest("message_1", SENSOR_NAME),
         new GetRequest("meta_alert", METAALERT_TYPE)));
 
-    {
-      // Verify alerts cannot be added to an INACTIVE meta alert
-      try {
-        metaDao.addAlertsToMetaAlert("meta_alert",
-            Collections.singletonList(new GetRequest("message_1", SENSOR_NAME)));
-        Assert.fail("Adding alerts to an inactive meta alert should throw an exception");
-      } catch (IllegalStateException ise) {
-        Assert.assertEquals("Adding alerts to an INACTIVE meta alert is not allowed",
-            ise.getMessage());
-      }
-    }
+    // Verify alerts cannot be added to an INACTIVE meta alert
+    IllegalStateException ise = assertThrows(IllegalStateException.class, () -> metaDao.addAlertsToMetaAlert("meta_alert",
+        Collections.singletonList(new GetRequest("message_1", SENSOR_NAME))));
+    assertEquals("Adding alerts to an INACTIVE meta alert is not allowed", ise.getMessage());
 
-    {
-      // Verify alerts cannot be removed from an INACTIVE meta alert
-      try {
-        metaDao.removeAlertsFromMetaAlert("meta_alert",
-            Collections.singletonList(new GetRequest("message_0", SENSOR_NAME)));
-        Assert.fail("Removing alerts from an inactive meta alert should throw an exception");
-      } catch (IllegalStateException ise) {
-        Assert.assertEquals("Removing alerts from an INACTIVE meta alert is not allowed",
-            ise.getMessage());
-      }
-    }
+    // Verify alerts cannot be removed from an INACTIVE meta alert
+    ise = assertThrows(IllegalStateException.class, () -> metaDao.removeAlertsFromMetaAlert("meta_alert",
+        Collections.singletonList(new GetRequest("message_0", SENSOR_NAME))));
+    assertEquals("Removing alerts from an INACTIVE meta alert is not allowed", ise.getMessage());
   }
 
   @Test
@@ -629,7 +611,7 @@
       expectedMetaAlert.put(STATUS_FIELD, MetaAlertStatus.INACTIVE.getStatusString());
 
       Document actualMetaAlert = metaDao.updateMetaAlertStatus("meta_alert", MetaAlertStatus.INACTIVE);
-      Assert.assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+      assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
       findUpdatedDoc(expectedMetaAlert, "meta_alert", METAALERT_TYPE);
 
       for (int i = 0; i < numChildAlerts; ++i) {
@@ -652,7 +634,7 @@
       expectedMetaAlert.put(STATUS_FIELD, MetaAlertStatus.ACTIVE.getStatusString());
 
       Document actualMetaAlert = metaDao.updateMetaAlertStatus("meta_alert", MetaAlertStatus.ACTIVE);
-      Assert.assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+      assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
       findUpdatedDoc(expectedMetaAlert, "meta_alert", METAALERT_TYPE);
 
       for (int i = 0; i < numChildAlerts; ++i) {
@@ -675,7 +657,7 @@
         expectedMetaAlert.put(STATUS_FIELD, MetaAlertStatus.ACTIVE.getStatusString());
 
         Document actualMetaAlert = metaDao.updateMetaAlertStatus("meta_alert", MetaAlertStatus.ACTIVE);
-        Assert.assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
+        assertEquals(expectedMetaAlert, actualMetaAlert.getDocument());
         findUpdatedDoc(expectedMetaAlert, "meta_alert", METAALERT_TYPE);
 
         for (int i = 0; i < numChildAlerts; ++i) {
@@ -731,8 +713,8 @@
     });
 
     // Verify only active meta alerts are returned
-    Assert.assertEquals(1, searchResponse.getTotal());
-    Assert.assertEquals(MetaAlertStatus.ACTIVE.getStatusString(),
+    assertEquals(1, searchResponse.getTotal());
+    assertEquals(MetaAlertStatus.ACTIVE.getStatusString(),
         searchResponse.getResults().get(0).getSource().get(STATUS_FIELD));
   }
 
@@ -747,15 +729,15 @@
     sortField.setSortOrder("asc");
 
     // when no meta-alerts exist, it should work
-    Assert.assertEquals(0, searchForSortedMetaAlerts(sortField).getTotal());
+    assertEquals(0, searchForSortedMetaAlerts(sortField).getTotal());
 
     // when meta-alert just created, it should work
     createMetaAlert(guid);
-    Assert.assertEquals(1, searchForSortedMetaAlerts(sortField).getTotal());
+    assertEquals(1, searchForSortedMetaAlerts(sortField).getTotal());
 
     // when meta-alert 'esclated', it should work
     escalateMetaAlert(guid);
-    Assert.assertEquals(1, searchForSortedMetaAlerts(sortField).getTotal());
+    assertEquals(1, searchForSortedMetaAlerts(sortField).getTotal());
   }
 
   private Map<String, Object> createMetaAlert(String guid) throws Exception {
@@ -795,7 +777,7 @@
     // ensure the alert status was changed to 'escalate'
     assertEventually(() -> {
       Document updated = metaDao.getLatest(guid, METAALERT_TYPE);
-      Assert.assertEquals("escalate", updated.getDocument().get("alert_status"));
+      assertEquals("escalate", updated.getDocument().get("alert_status"));
     });
   }
 
@@ -846,14 +828,16 @@
 
     // Should only return the standalone alert in the group
     GroupResult result = groupResponse.getGroupResults().get(0);
-    Assert.assertEquals(1, result.getTotal());
-    Assert.assertEquals("192.168.1.1", result.getKey());
+    assertEquals(1, result.getTotal());
+    assertEquals("192.168.1.1", result.getKey());
     // No delta, since no ops happen
-    Assert.assertEquals(10.0d, result.getScore(), 0.0d);
+    assertEquals(10.0d, result.getScore(), 0.0d);
   }
 
   // This test is important enough that everyone should implement it, but is pretty specific to
   // implementation
+  // The function is provided for any store specific translation of queryIndice in parameterized tests, e.g. ES appends "_index"
+  // and "*"
   @Test
   public abstract void shouldSearchByNestedAlert() throws Exception;
 
@@ -900,8 +884,8 @@
     // ensure the original 'normal' alert was itself updated
     assertEventually(() -> {
       Document message0 = metaDao.getLatest("message_0", SENSOR_NAME);
-      Assert.assertNotNull(message0);
-      Assert.assertEquals(expectedFieldValue, message0.getDocument().get(NEW_FIELD));
+      assertNotNull(message0);
+      assertEquals(expectedFieldValue, message0.getDocument().get(NEW_FIELD));
     });
 
     // the 'active' meta-alert, which contains a copy of the updated alert should also be updated
@@ -909,9 +893,9 @@
       Document active = metaDao.getLatest("meta_active", METAALERT_TYPE);
       Object value = active.getDocument().get(ALERT_FIELD);
       List<Map<String, Object>> children = List.class.cast(value);
-      Assert.assertNotNull(children);
-      Assert.assertEquals(1, children.size());
-      Assert.assertEquals(expectedFieldValue, children.get(0).get(NEW_FIELD));
+      assertNotNull(children);
+      assertEquals(1, children.size());
+      assertEquals(expectedFieldValue, children.get(0).get(NEW_FIELD));
     });
 
     // the 'inactive' meta-alert, which contains a copy of the updated alert should NOT be updated
@@ -919,22 +903,19 @@
       Document inactive = metaDao.getLatest("meta_inactive", METAALERT_TYPE);
       Object value = inactive.getDocument().get(ALERT_FIELD);
       List<Map<String, Object>> children = List.class.cast(value);
-      Assert.assertNotNull(children);
-      Assert.assertEquals(1, children.size());
-      Assert.assertFalse(children.get(0).containsKey(NEW_FIELD));
+      assertNotNull(children);
+      assertEquals(1, children.size());
+      assertFalse(children.get(0).containsKey(NEW_FIELD));
     });
   }
 
   @Test
   public void shouldThrowExceptionOnMetaAlertUpdate() throws Exception {
     Document metaAlert = new Document(new HashMap<>(), "meta_alert", METAALERT_TYPE, 0L);
-    try {
-      // Verify a meta alert cannot be updated in the meta alert dao
-      metaDao.update(metaAlert, Optional.empty());
-      Assert.fail("Direct meta alert update should throw an exception");
-    } catch (UnsupportedOperationException uoe) {
-      Assert.assertEquals("Meta alerts cannot be directly updated", uoe.getMessage());
-    }
+    // Verify a meta alert cannot be updated in the meta alert dao
+    UnsupportedOperationException uoe = assertThrows(UnsupportedOperationException.class,
+        () -> metaDao.update(metaAlert, Optional.empty()));
+    assertEquals("Meta alerts cannot be directly updated", uoe.getMessage());
   }
 
   @Test
@@ -968,7 +949,7 @@
     // ensure the alert was patched
     assertEventually(() -> {
       Document updated = metaDao.getLatest("meta_alert", METAALERT_TYPE);
-      Assert.assertEquals("New Meta Alert", updated.getDocument().get(NAME_FIELD));
+      assertEquals("New Meta Alert", updated.getDocument().get(NAME_FIELD));
     });
   }
 
@@ -994,22 +975,18 @@
             new GetRequest("meta_alert", METAALERT_TYPE)));
 
     // attempt to patch the alert field
-    try {
-      String alertPatch = alertPatchRequest.replace(META_INDEX_FLAG, getMetaAlertIndex());
-      PatchRequest patchRequest = JSONUtils.INSTANCE.load(alertPatch, PatchRequest.class);
-      metaDao.patch(metaDao, patchRequest, Optional.of(System.currentTimeMillis()));
-      Assert.fail("A patch on the alert field should throw an exception");
-
-    } catch (IllegalArgumentException iae) {
-      Assert.assertEquals("Meta alert patches are not allowed for /alert or /status paths.  "
-                      + "Please use the add/remove alert or update status functions instead.",
-              iae.getMessage());
-    }
+    String alertPatch = alertPatchRequest.replace(META_INDEX_FLAG, getMetaAlertIndex());
+    PatchRequest patchRequest = JSONUtils.INSTANCE.load(alertPatch, PatchRequest.class);
+    IllegalArgumentException iae = assertThrows(IllegalArgumentException.class,
+        () -> metaDao.patch(metaDao, patchRequest, Optional.of(System.currentTimeMillis())));
+    assertEquals("Meta alert patches are not allowed for /alert or /status paths.  "
+            + "Please use the add/remove alert or update status functions instead.",
+        iae.getMessage());
 
     // ensure the alert field was NOT changed
     assertEventually(() -> {
       Document updated = metaDao.getLatest("meta_alert", METAALERT_TYPE);
-      Assert.assertEquals(metaAlert.get(ALERT_FIELD), updated.getDocument().get(ALERT_FIELD));
+      assertEquals(metaAlert.get(ALERT_FIELD), updated.getDocument().get(ALERT_FIELD));
     });
   }
 
@@ -1035,22 +1012,19 @@
             new GetRequest("meta_alert", METAALERT_TYPE)));
 
     // Verify a patch to a status field should throw an exception
-    try {
-      String statusPatch = statusPatchRequest.replace(META_INDEX_FLAG, getMetaAlertIndex());
-      PatchRequest patchRequest = JSONUtils.INSTANCE.load(statusPatch, PatchRequest.class);
-      metaDao.patch(metaDao, patchRequest, Optional.of(System.currentTimeMillis()));
-      Assert.fail("A patch on the status field should throw an exception");
+    String statusPatch = statusPatchRequest.replace(META_INDEX_FLAG, getMetaAlertIndex());
+    PatchRequest patchRequest = JSONUtils.INSTANCE.load(statusPatch, PatchRequest.class);
+    IllegalArgumentException iae = assertThrows(IllegalArgumentException.class,
+        () -> metaDao.patch(metaDao, patchRequest, Optional.of(System.currentTimeMillis())));
 
-    } catch (IllegalArgumentException iae) {
-      Assert.assertEquals("Meta alert patches are not allowed for /alert or /status paths.  "
-                      + "Please use the add/remove alert or update status functions instead.",
-              iae.getMessage());
-    }
+    assertEquals("Meta alert patches are not allowed for /alert or /status paths.  "
+            + "Please use the add/remove alert or update status functions instead.",
+        iae.getMessage());
 
     // ensure the status field was NOT changed
     assertEventually(() -> {
       Document updated = metaDao.getLatest("meta_alert", METAALERT_TYPE);
-      Assert.assertEquals(metaAlert.get(STATUS_FIELD), updated.getDocument().get(STATUS_FIELD));
+      assertEquals(metaAlert.get(STATUS_FIELD), updated.getDocument().get(STATUS_FIELD));
     });
   }
 
@@ -1125,27 +1099,27 @@
   }
 
   @SuppressWarnings("unchecked")
-  protected void assertEquals(Map<String, Object> expected, Map<String, Object> actual) {
-    Assert.assertEquals(expected.get(Constants.GUID), actual.get(Constants.GUID));
-    Assert.assertEquals(expected.get(getSourceTypeField()), actual.get(getSourceTypeField()));
+  protected void assertDocumentEquals(Map<String, Object> expected, Map<String, Object> actual) {
+    assertEquals(expected.get(Constants.GUID), actual.get(Constants.GUID));
+    assertEquals(expected.get(getSourceTypeField()), actual.get(getSourceTypeField()));
     Double actualThreatTriageField = actual.get(getThreatTriageField()) instanceof Float ?
             ((Float) actual.get(getThreatTriageField())).doubleValue() : (Double) actual.get(getThreatTriageField());
-    Assert.assertEquals(expected.get(getThreatTriageField()), actualThreatTriageField);
+    assertEquals(expected.get(getThreatTriageField()), actualThreatTriageField);
 
     List<Map<String, Object>> expectedAlerts = (List<Map<String, Object>>) expected.get(ALERT_FIELD);
     List<Map<String, Object>> actualAlerts = (List<Map<String, Object>>) actual.get(ALERT_FIELD);
     expectedAlerts.sort(Comparator.comparing(o -> ((String) o.get(Constants.GUID))));
     actualAlerts.sort(Comparator.comparing(o -> ((String) o.get(Constants.GUID))));
-    Assert.assertEquals(expectedAlerts, actualAlerts);
-    Assert.assertEquals(expected.get(STATUS_FIELD), actual.get(STATUS_FIELD));
-    Assert.assertEquals(expected.get("average"), actual.get("average"));
-    Assert.assertEquals(expected.get("min"), actual.get("min"));
-    Assert.assertEquals(expected.get("median"), actual.get("median"));
-    Assert.assertEquals(expected.get("max"), actual.get("max"));
+    assertEquals(expectedAlerts, actualAlerts);
+    assertEquals(expected.get(STATUS_FIELD), actual.get(STATUS_FIELD));
+    assertEquals(expected.get("average"), actual.get("average"));
+    assertEquals(expected.get("min"), actual.get("min"));
+    assertEquals(expected.get("median"), actual.get("median"));
+    assertEquals(expected.get("max"), actual.get("max"));
     Integer actualCountField = actual.get("count") instanceof Long ? ((Long) actual.get("count")).intValue() :
             (Integer) actual.get("count");
-    Assert.assertEquals(expected.get("count"), actualCountField);
-    Assert.assertEquals(expected.get("sum"), actual.get("sum"));
+    assertEquals(expected.get("count"), actualCountField);
+    assertEquals(expected.get("sum"), actual.get("sum"));
   }
 
   protected List<Map<String, Object>> buildAlerts(int count) {
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/MetaScoresTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/MetaScoresTest.java
index 6ebfad8..b7a5451 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/MetaScoresTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/MetaScoresTest.java
@@ -22,9 +22,9 @@
 import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.METAALERT_TYPE;
 import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.THREAT_FIELD_DEFAULT;
 import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.THREAT_SORT_DEFAULT;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -35,7 +35,7 @@
 import org.apache.metron.common.Constants;
 import org.apache.metron.indexing.dao.AccessConfig;
 import org.apache.metron.indexing.dao.update.Document;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class MetaScoresTest {
   @Test
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDaoTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDaoTest.java
index ec241e4..35f2330 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDaoTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/metaalert/lucene/AbstractLuceneMetaAlertUpdateDaoTest.java
@@ -18,32 +18,6 @@
 
 package org.apache.metron.indexing.dao.metaalert.lucene;
 
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.ALERT_FIELD;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.GROUPS_FIELD;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.METAALERT_FIELD;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.METAALERT_TYPE;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.STATUS_FIELD;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.THREAT_FIELD_DEFAULT;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.THREAT_SORT_DEFAULT;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertStatus.ACTIVE;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertStatus.INACTIVE;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Optional;
-import java.util.UUID;
-
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.math.util.MathUtils;
@@ -51,12 +25,7 @@
 import org.apache.metron.common.Constants.Fields;
 import org.apache.metron.indexing.dao.IndexDao;
 import org.apache.metron.indexing.dao.RetrieveLatestDao;
-import org.apache.metron.indexing.dao.metaalert.MetaAlertConfig;
-import org.apache.metron.indexing.dao.metaalert.MetaAlertConstants;
-import org.apache.metron.indexing.dao.metaalert.MetaAlertCreateRequest;
-import org.apache.metron.indexing.dao.metaalert.MetaAlertRetrieveLatestDao;
-import org.apache.metron.indexing.dao.metaalert.MetaAlertStatus;
-import org.apache.metron.indexing.dao.metaalert.MetaScores;
+import org.apache.metron.indexing.dao.metaalert.*;
 import org.apache.metron.indexing.dao.search.GetRequest;
 import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
 import org.apache.metron.indexing.dao.update.Document;
@@ -65,22 +34,28 @@
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
+import org.mockito.MockitoAnnotations;
 
-@RunWith(MockitoJUnitRunner.class)
+import java.io.IOException;
+import java.util.*;
+import java.util.Map.Entry;
+
+import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.*;
+import static org.apache.metron.indexing.dao.metaalert.MetaAlertStatus.ACTIVE;
+import static org.apache.metron.indexing.dao.metaalert.MetaAlertStatus.INACTIVE;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
 public class AbstractLuceneMetaAlertUpdateDaoTest {
-
-  @Mock
   IndexDao indexDao;
 
-  @Before
+  @BeforeEach
   public void setup() {
+    indexDao = mock(IndexDao.class);
     dao = new TestLuceneMetaAlertUpdateDao();
   }
 
@@ -133,7 +108,7 @@
 
   TestMetaAlertRetrieveLatestDao retrieveLatestDao = new TestMetaAlertRetrieveLatestDao();
 
-  private class TestMetaAlertRetrieveLatestDao implements MetaAlertRetrieveLatestDao {
+  private static class TestMetaAlertRetrieveLatestDao implements MetaAlertRetrieveLatestDao {
 
     @Override
     public Document getLatest(String guid, String sensorType) {
@@ -242,12 +217,9 @@
   @Multiline
   public static String namePatchRequest;
 
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
-  @Test(expected = UnsupportedOperationException.class)
+  @Test
   public void testBatchUpdateThrowsException() {
-    dao.batchUpdate(null);
+    assertThrows(UnsupportedOperationException.class, () -> dao.batchUpdate(null));
   }
 
   @Test
@@ -406,14 +378,12 @@
   }
 
   @Test
-  public void testBuildRemoveAlertsFromMetaAlertThrowsException() throws Exception {
-    thrown.expect(IllegalStateException.class);
-    thrown.expectMessage("Removing these alerts will result in an empty meta alert.  Empty meta alerts are not allowed.");
-
+  public void testBuildRemoveAlertsFromMetaAlertThrowsException() {
     List<Document> alerts = buildChildAlerts(1, METAALERT_GUID, null);
     Document metaDoc = buildMetaAlert(alerts);
 
-    dao.buildRemoveAlertsFromMetaAlert(metaDoc, alerts);
+    IllegalStateException e = assertThrows(IllegalStateException.class, () -> dao.buildRemoveAlertsFromMetaAlert(metaDoc, alerts));
+    assertEquals("Removing these alerts will result in an empty meta alert.  Empty meta alerts are not allowed.", e.getMessage());
   }
 
   @Test
@@ -593,9 +563,9 @@
     assertTrue(actual);
   }
 
-  @Test(expected = IllegalStateException.class)
-  public void testRemoveAlertsFromMetaAlertInactive() throws IOException {
-    dao.removeAlertsFromMetaAlert(INACTIVE.getStatusString(), null);
+  @Test
+  public void testRemoveAlertsFromMetaAlertInactive() {
+    assertThrows(IllegalStateException.class, () -> dao.removeAlertsFromMetaAlert(INACTIVE.getStatusString(), null));
   }
 
   @Test
@@ -757,27 +727,22 @@
   }
 
   @Test
-  public void addAlertsToMetaAlertShouldThrowExceptionOnMissingMetaAlert() throws Exception {
-    thrown.expect(IOException.class);
-    thrown.expectMessage("Unable to add alerts to meta alert.  Meta alert with guid some_guid cannot be found.");
-
-    dao.addAlertsToMetaAlert("some_guid", new ArrayList<>());
+  public void addAlertsToMetaAlertShouldThrowExceptionOnMissingMetaAlert() {
+    IOException e = assertThrows(IOException.class, () -> dao.addAlertsToMetaAlert("some_guid", new ArrayList<>()));
+    assertEquals("Unable to add alerts to meta alert.  Meta alert with guid some_guid cannot be found.", e.getMessage());
   }
 
   @Test
-  public void removeAlertsFromMetaAlertShouldThrowExceptionOnMissingMetaAlert() throws Exception {
-    thrown.expect(IOException.class);
-    thrown.expectMessage("Unable to remove alerts from meta alert.  Meta alert with guid some_guid cannot be found.");
-
-    dao.removeAlertsFromMetaAlert("some_guid", new ArrayList<>());
+  public void removeAlertsFromMetaAlertShouldThrowExceptionOnMissingMetaAlert() {
+    IOException e = assertThrows(IOException.class, () -> dao.removeAlertsFromMetaAlert("some_guid", new ArrayList<>()));
+    assertEquals("Unable to remove alerts from meta alert.  Meta alert with guid some_guid cannot be found.", e.getMessage());
   }
 
   @Test
-  public void updateMetaAlertStatusShouldThrowExceptionOnMissingMetaAlert() throws Exception {
-    thrown.expect(IOException.class);
-    thrown.expectMessage("Unable to update meta alert status.  Meta alert with guid some_guid cannot be found.");
+  public void updateMetaAlertStatusShouldThrowExceptionOnMissingMetaAlert() {
+    IOException e = assertThrows(IOException.class, () -> dao.updateMetaAlertStatus("some_guid", MetaAlertStatus.INACTIVE));
+    assertEquals("Unable to update meta alert status.  Meta alert with guid some_guid cannot be found.", e.getMessage());
 
-    dao.updateMetaAlertStatus("some_guid", MetaAlertStatus.INACTIVE);
   }
 
   // Utility method to manage comparing update maps
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/update/PatchUtilsTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/update/PatchUtilsTest.java
index b2bb173..d917d0f 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/update/PatchUtilsTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/dao/update/PatchUtilsTest.java
@@ -19,22 +19,14 @@
 
 package org.apache.metron.indexing.dao.update;
 
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Test;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class PatchUtilsTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   @Test
   public void addOperationShouldAddValue() {
     List<Map<String, Object>> patches = new ArrayList<>();
@@ -48,7 +40,7 @@
       put("path", "value");
     }};
 
-    Assert.assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<>()));
+    assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<>()));
   }
 
   @Test
@@ -64,7 +56,7 @@
       put("remove", new HashMap<>());
     }};
 
-    Assert.assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+    assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
       put("path", "value");
       put("remove", new HashMap<String, Object>() {{
         put("path", "removeValue");
@@ -86,7 +78,7 @@
       put("path", "value");
     }};
 
-    Assert.assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+    assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
       put("from", "value");
     }}));
   }
@@ -107,7 +99,7 @@
       }});
     }};
 
-    Assert.assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+    assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
       put("nested", new HashMap<String, Object>() {{
         put("from", "value");
       }});
@@ -127,7 +119,7 @@
       put("path", "value");
     }};
 
-    Assert.assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+    assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
       put("from", "value");
     }}));
   }
@@ -145,7 +137,7 @@
       put("path", "value");
     }};
 
-    Assert.assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+    assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
       put("path", "value");
     }}));
   }
@@ -163,7 +155,7 @@
       put("path", 100);
     }};
 
-    Assert.assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+    assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
       put("path", 100);
     }}));
   }
@@ -181,7 +173,7 @@
       put("path", Arrays.asList(1, 2, 3));
     }};
 
-    Assert.assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+    assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
       put("path", Arrays.asList(1, 2, 3));
     }}));
   }
@@ -203,7 +195,7 @@
       }});
     }};
 
-    Assert.assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+    assertEquals(expected, PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
       put("path", new HashMap<String, Object>() {{
         put("key", "value");
       }});
@@ -212,9 +204,6 @@
 
   @Test
   public void testOperationShouldThrowExceptionOnFailedCompare() {
-    exception.expect(PatchException.class);
-    exception.expectMessage("TEST operation failed: supplied value [value1] != target value [value2]");
-
     List<Map<String, Object>> patches = new ArrayList<>();
     patches.add(new HashMap<String, Object>() {{
       put(PatchUtils.OP, PatchOperation.TEST.name());
@@ -222,42 +211,41 @@
       put(PatchUtils.VALUE, "value1");
     }});
 
-    PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
-      put("path", "value2");
-    }});
+    PatchException e = assertThrows(PatchException.class,
+            () -> PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+              put("path", "value2"); }})
+    );
+    assertEquals("TEST operation failed: supplied value [value1] != target value [value2]", e.getMessage());
   }
 
   @Test
   public void shouldThrowExceptionOnInvalidPath() {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("Invalid path: /missing/path");
-
     List<Map<String, Object>> patches = new ArrayList<>();
     patches.add(new HashMap<String, Object>() {{
       put(PatchUtils.OP, PatchOperation.REMOVE.name());
       put(PatchUtils.PATH, "/missing/path");
     }});
 
-    PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
-      put("path", "value");
-    }});
-
+    IllegalArgumentException e = assertThrows(IllegalArgumentException.class,
+            () -> PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+              put("path", "value"); }})
+    );
+    assertEquals("Invalid path: /missing/path", e.getMessage());
   }
 
   @Test
   public void shouldThrowExceptionOnInvalidOperation() {
-    exception.expect(UnsupportedOperationException.class);
-    exception.expectMessage("The invalid operation is not supported");
-
     List<Map<String, Object>> patches = new ArrayList<>();
     patches.add(new HashMap<String, Object>() {{
       put(PatchUtils.OP, "invalid");
       put(PatchUtils.PATH, "/path");
     }});
 
-    PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
-      put("path", "value");
-    }});
+    UnsupportedOperationException e = assertThrows(UnsupportedOperationException.class,
+            () -> PatchUtils.INSTANCE.applyPatch(patches, new HashMap<String, Object>() {{
+              put("path", "value"); }})
+    );
+    assertEquals("The invalid operation is not supported", e.getMessage());
 
   }
 }
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/integration/HBaseDaoIntegrationTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/integration/HBaseDaoIntegrationTest.java
index 75e88f4..0ab5453 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/integration/HBaseDaoIntegrationTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/integration/HBaseDaoIntegrationTest.java
@@ -18,20 +18,7 @@
 
 package org.apache.metron.indexing.integration;
 
-import static org.apache.metron.indexing.dao.HBaseDao.HBASE_CF;
-import static org.apache.metron.indexing.dao.HBaseDao.HBASE_TABLE;
-import static org.apache.metron.indexing.dao.IndexDao.COMMENTS_FIELD;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
-import org.apache.metron.hbase.mock.MockHTable;
 import org.apache.metron.indexing.dao.AccessConfig;
 import org.apache.metron.indexing.dao.HBaseDao;
 import org.apache.metron.indexing.dao.IndexDao;
@@ -39,10 +26,18 @@
 import org.apache.metron.indexing.dao.search.AlertComment;
 import org.apache.metron.indexing.dao.search.GetRequest;
 import org.apache.metron.indexing.dao.update.Document;
-import org.junit.After;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static org.apache.metron.indexing.dao.HBaseDao.HBASE_CF;
+import static org.apache.metron.indexing.dao.HBaseDao.HBASE_TABLE;
+import static org.apache.metron.indexing.dao.IndexDao.COMMENTS_FIELD;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class HBaseDaoIntegrationTest extends UpdateIntegrationTest  {
 
@@ -60,8 +55,8 @@
           0x54,0x79,0x70,0x65
   };
 
-  @Before
-  public void startHBase() throws Exception {
+  @BeforeEach
+  public void startHBase() {
     AccessConfig accessConfig = new AccessConfig();
     accessConfig.setMaxSearchResults(1000);
     accessConfig.setMaxSearchGroups(1000);
@@ -76,8 +71,8 @@
     hbaseDao.init(accessConfig);
   }
 
-  @After
-  public void clearTable() throws Exception {
+  @AfterEach
+  public void clearTable() {
     MockHBaseTableProvider.clear();
   }
 
@@ -86,32 +81,32 @@
    * caused a key to change serialization, so keys from previous releases will not be able to be found
    * under your scheme.  Please either provide a migration plan or undo this change.  DO NOT CHANGE THIS
    * TEST BLITHELY!
-   * @throws Exception
+   * @throws IOException
    */
   @Test
   public void testKeySerializationRemainsConstant() throws IOException {
     HBaseDao.Key k = new HBaseDao.Key("guid", "sensorType");
     byte[] raw = k.toBytes();
-    Assert.assertArrayEquals(raw, expectedKeySerialization);
+    assertArrayEquals(raw, expectedKeySerialization);
   }
 
 
   @Test
   public void testKeySerialization() throws Exception {
     HBaseDao.Key k = new HBaseDao.Key("guid", "sensorType");
-    Assert.assertEquals(k, HBaseDao.Key.fromBytes(HBaseDao.Key.toBytes(k)));
+    assertEquals(k, HBaseDao.Key.fromBytes(HBaseDao.Key.toBytes(k)));
   }
 
-  @Test(expected = IllegalStateException.class)
-  public void testKeySerializationWithInvalidGuid() throws Exception {
+  @Test
+  public void testKeySerializationWithInvalidGuid() {
     HBaseDao.Key k = new HBaseDao.Key(null, "sensorType");
-    Assert.assertEquals(k, HBaseDao.Key.fromBytes(HBaseDao.Key.toBytes(k)));
+    assertThrows(IllegalStateException.class, () ->  HBaseDao.Key.fromBytes(HBaseDao.Key.toBytes(k)));
   }
 
-  @Test(expected = IllegalStateException.class)
-  public void testKeySerializationWithInvalidSensorType() throws Exception {
+  @Test
+  public void testKeySerializationWithInvalidSensorType() {
     HBaseDao.Key k = new HBaseDao.Key("guid", null);
-    Assert.assertEquals(k, HBaseDao.Key.fromBytes(HBaseDao.Key.toBytes(k)));
+    assertThrows(IllegalStateException.class, () -> HBaseDao.Key.fromBytes(HBaseDao.Key.toBytes(k)));
   }
 
   @Test
@@ -124,7 +119,7 @@
 
     Document actualDocument = hbaseDao.getLatest("message_1", SENSOR_TYPE);
     Document expectedDocument = alerts.get(1);
-    Assert.assertEquals(expectedDocument, actualDocument);
+    assertEquals(expectedDocument, actualDocument);
   }
 
   @Test
@@ -134,14 +129,14 @@
     hbaseDao.update(alert, Optional.empty());
 
     Document actualDocument = hbaseDao.getLatest("message_0", SENSOR_TYPE);
-    Assert.assertEquals(alert, actualDocument);
+    assertEquals(alert, actualDocument);
 
     alert.getDocument().put("field", "value");
     alert.setTimestamp(0L);
     hbaseDao.update(alert, Optional.empty());
 
     actualDocument = hbaseDao.getLatest("message_0", SENSOR_TYPE);
-    Assert.assertEquals(alert.getDocument(), actualDocument.getDocument());
+    assertEquals(alert.getDocument(), actualDocument.getDocument());
   }
 
   @Test
@@ -163,10 +158,10 @@
     for (int i = 0; i < expectedCount; i++) {
       Document expectedDocument = alerts.get(i + 1);
       Document actualDocument = results.next();
-      Assert.assertEquals(expectedDocument, actualDocument);
+      assertEquals(expectedDocument, actualDocument);
     }
 
-    Assert.assertFalse("Result size should be 12 but was greater", results.hasNext());
+    assertFalse(results.hasNext(), "Result size should be 12 but was greater");
   }
 
   protected List<Document> buildAlerts(int count) throws IOException {
@@ -181,7 +176,6 @@
   }
 
   @Test
-  @SuppressWarnings("unchecked")
   public void testRemoveComments() throws Exception {
     Map<String, Object> fields = new HashMap<>();
     fields.put("guid", "add_comment");
diff --git a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/util/IndexingCacheUtilTest.java b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/util/IndexingCacheUtilTest.java
index 3d6ee85..065ca92 100644
--- a/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/util/IndexingCacheUtilTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-common/src/test/java/org/apache/metron/indexing/util/IndexingCacheUtilTest.java
@@ -20,12 +20,12 @@
 
 import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.zookeeper.ConfigurationsCache;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -60,7 +60,7 @@
     when(indexingConfigs.getSensorIndexingConfig("bro")).thenReturn(broIndexingConfig);
     when(cache.get(IndexingConfigurations.class)).thenReturn(indexingConfigs);
 
-    assertEquals("Should default to sensor type on missing sensor config", "snort", IndexingCacheUtil.getIndexLookupFunction(cache, "writer").apply("snort"));
-    assertEquals("Should default to sensor type on missing writer config", "bro", IndexingCacheUtil.getIndexLookupFunction(cache, "someWriter").apply("bro"));
+    assertEquals("snort", IndexingCacheUtil.getIndexLookupFunction(cache, "writer").apply("snort"), "Should default to sensor type on missing sensor config");
+    assertEquals("bro", IndexingCacheUtil.getIndexLookupFunction(cache, "someWriter").apply("bro"), "Should default to sensor type on missing writer config");
   }
 }
diff --git a/metron-platform/metron-indexing/metron-indexing-storm/src/test/java/org/apache/metron/indexing/integration/IndexingIntegrationTest.java b/metron-platform/metron-indexing/metron-indexing-storm/src/test/java/org/apache/metron/indexing/integration/IndexingIntegrationTest.java
index b8719b6..2ca0ab8 100644
--- a/metron-platform/metron-indexing/metron-indexing-storm/src/test/java/org/apache/metron/indexing/integration/IndexingIntegrationTest.java
+++ b/metron-platform/metron-indexing/metron-indexing-storm/src/test/java/org/apache/metron/indexing/integration/IndexingIntegrationTest.java
@@ -18,28 +18,39 @@
 
 package org.apache.metron.indexing.integration;
 
+import static org.apache.metron.common.configuration.ConfigurationsUtils.getClient;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
+
+import java.io.File;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Properties;
+import java.util.TreeMap;
+import java.util.concurrent.atomic.AtomicBoolean;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.metron.TestConstants;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.configuration.ConfigurationsUtils;
 import org.apache.metron.common.field.FieldNameConverter;
 import org.apache.metron.common.utils.JSONUtils;
-import org.apache.metron.integration.*;
+import org.apache.metron.integration.BaseIntegrationTest;
+import org.apache.metron.integration.ComponentRunner;
+import org.apache.metron.integration.InMemoryComponent;
+import org.apache.metron.integration.Processor;
+import org.apache.metron.integration.ProcessorResult;
 import org.apache.metron.integration.components.ConfigUploadComponent;
 import org.apache.metron.integration.components.FluxTopologyComponent;
 import org.apache.metron.integration.components.KafkaComponent;
 import org.apache.metron.integration.components.ZKServerComponent;
 import org.apache.metron.integration.utils.TestUtils;
 import org.apache.zookeeper.KeeperException;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.File;
-import java.nio.charset.StandardCharsets;
-import java.util.*;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import static org.apache.metron.common.configuration.ConfigurationsUtils.getClient;
+import org.junit.jupiter.api.Test;
 
 public abstract class IndexingIntegrationTest extends BaseIntegrationTest {
   protected static final String ERROR_TOPIC = "indexing_error";
@@ -133,7 +144,7 @@
       fluxComponent.submitTopology();
       kafkaComponent.writeMessages(Constants.INDEXING_TOPIC, inputMessages);
       List<Map<String, Object>> docs = cleanDocs(runner.process(getProcessor(inputMessages)));
-      Assert.assertEquals(docs.size(), inputMessages.size());
+      assertEquals(docs.size(), inputMessages.size());
       //assert that our input docs are equivalent to the output docs, converting the input docs keys based
       // on the field name converter
       assertInputDocsMatchOutputs(inputDocs, docs, getFieldNameConverter());
@@ -167,10 +178,8 @@
   public List<Map<String, Object>> cleanDocs(ProcessorResult<List<Map<String, Object>>> result) {
     List<Map<String,Object>> docs = result.getResult();
     StringBuffer buffer = new StringBuffer();
-    boolean failed = false;
     List<Map<String, Object>> ret = new ArrayList<>();
     if(result.failed()) {
-      failed = true;
       result.getBadResults(buffer);
       buffer.append(String.format("%d Valid messages processed", docs.size())).append("\n");
       for (Map<String, Object> doc : docs) {
@@ -180,7 +189,7 @@
             buffer.append(cleanField(kv.getKey())).append(kv.getValue().toString()).append("\n");
           }
         }
-      Assert.fail(buffer.toString());
+      fail(buffer.toString());
     }else {
       for (Map<String, Object> doc : docs) {
         Map<String, Object> msg = new HashMap<>();
@@ -212,7 +221,7 @@
         printMessage(indexDoc);
         dumpMessages("INPUT DOCS:", inputDocs);
       }
-      Assert.assertTrue(foundMatch);
+      assertTrue(foundMatch);
     }
   }
 
diff --git a/metron-platform/metron-integration-test/pom.xml b/metron-platform/metron-integration-test/pom.xml
index c89bce0..4129bcc 100644
--- a/metron-platform/metron-integration-test/pom.xml
+++ b/metron-platform/metron-integration-test/pom.xml
@@ -32,10 +32,18 @@
       <artifactId>log4j</artifactId>
       <version>1.2.17</version>
     </dependency>
+
+    <!-- We use JUnit in src, so we can't scope these -->
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>${global_junit_version}</version>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <version>${global_junit_jupiter_version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <version>${global_junit_jupiter_version}</version>
+      <scope>test</scope>
     </dependency>
 
     <dependency>
diff --git a/metron-platform/metron-integration-test/src/main/java/org/apache/metron/integration/StellarClasspathFunctionResolver.java b/metron-platform/metron-integration-test/src/main/java/org/apache/metron/integration/StellarClasspathFunctionResolver.java
index fb4ec75..9ddf15b 100644
--- a/metron-platform/metron-integration-test/src/main/java/org/apache/metron/integration/StellarClasspathFunctionResolver.java
+++ b/metron-platform/metron-integration-test/src/main/java/org/apache/metron/integration/StellarClasspathFunctionResolver.java
@@ -18,28 +18,28 @@
 
 package org.apache.metron.integration;
 
+import static org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver.Config.STELLAR_VFS_PATHS;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+
 import com.google.common.collect.Lists;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Properties;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.metron.integration.components.MRComponent;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
-
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.Properties;
-
-import static org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver.Config.STELLAR_VFS_PATHS;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 public class StellarClasspathFunctionResolver {
   static MRComponent component;
   static Configuration configuration;
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
     component = new MRComponent().withBasePath("target");
     component.start();
@@ -54,7 +54,7 @@
     }
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() {
     component.stop();
   }
@@ -77,7 +77,7 @@
     config.put(STELLAR_VFS_PATHS.param(), configuration.get("fs.defaultFS") + "/classpath-resources/.*.jar");
     ClasspathFunctionResolver resolver = create(config);
     HashSet<String> functions = new HashSet<>(Lists.newArrayList(resolver.getFunctions()));
-    Assert.assertTrue(functions.contains("NOW"));
+    assertTrue(functions.contains("NOW"));
   }
 
 }
diff --git a/metron-platform/metron-integration-test/src/main/java/org/apache/metron/integration/components/FluxTopologyComponent.java b/metron-platform/metron-integration-test/src/main/java/org/apache/metron/integration/components/FluxTopologyComponent.java
index 1a1ceb0..e2136f3 100644
--- a/metron-platform/metron-integration-test/src/main/java/org/apache/metron/integration/components/FluxTopologyComponent.java
+++ b/metron-platform/metron-integration-test/src/main/java/org/apache/metron/integration/components/FluxTopologyComponent.java
@@ -17,22 +17,6 @@
  */
 package org.apache.metron.integration.components;
 
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.OutputStreamWriter;
-import java.io.Writer;
-import java.lang.invoke.MethodHandles;
-import java.lang.reflect.InvocationTargetException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.Comparator;
-import java.util.Map;
-import java.util.Properties;
-import java.util.regex.Pattern;
 import org.apache.commons.io.FileUtils;
 import org.apache.curator.RetryPolicy;
 import org.apache.curator.framework.CuratorFramework;
@@ -51,10 +35,23 @@
 import org.apache.storm.thrift.TException;
 import org.apache.storm.thrift.protocol.TProtocolException;
 import org.apache.zookeeper.data.Stat;
-import org.junit.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.*;
+import java.lang.invoke.MethodHandles;
+import java.lang.reflect.InvocationTargetException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+import java.util.Comparator;
+import java.util.Map;
+import java.util.Properties;
+import java.util.regex.Pattern;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 public class FluxTopologyComponent implements InMemoryComponent {
 
   protected static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -253,7 +250,7 @@
     Config conf = FluxBuilder.buildConfig(topologyDef);
     ExecutionContext context = new ExecutionContext(topologyDef, conf);
     StormTopology topology = FluxBuilder.buildTopology(context);
-    Assert.assertNotNull(topology);
+    assertNotNull(topology);
     topology.validate();
     try {
       stormCluster.submitTopology(topologyName, conf, topology);
diff --git a/metron-platform/metron-job/pom.xml b/metron-platform/metron-job/pom.xml
index 5eb2bf6..fbcd504 100644
--- a/metron-platform/metron-job/pom.xml
+++ b/metron-platform/metron-job/pom.xml
@@ -34,6 +34,23 @@
       <artifactId>metron-common</artifactId>
       <version>${project.parent.version}</version>
     </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.hamcrest</groupId>
+      <artifactId>hamcrest-core</artifactId>
+      <version>${global_hamcrest_version}</version>
+      <scope>test</scope>
+    </dependency>
+      <dependency>
+          <groupId>org.junit.jupiter</groupId>
+          <artifactId>junit-jupiter-migrationsupport</artifactId>
+          <version>${global_junit_jupiter_version}</version>
+          <scope>test</scope>
+      </dependency>
   </dependencies>
 
 </project>
diff --git a/metron-platform/metron-job/src/test/java/org/apache/metron/job/JobStatusTest.java b/metron-platform/metron-job/src/test/java/org/apache/metron/job/JobStatusTest.java
index 67c5c52..bc0457a 100644
--- a/metron-platform/metron-job/src/test/java/org/apache/metron/job/JobStatusTest.java
+++ b/metron-platform/metron-job/src/test/java/org/apache/metron/job/JobStatusTest.java
@@ -18,11 +18,11 @@
 
 package org.apache.metron.job;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
 import org.apache.metron.job.JobStatus.State;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class JobStatusTest {
 
diff --git a/metron-platform/metron-job/src/test/java/org/apache/metron/job/manager/InMemoryJobManagerTest.java b/metron-platform/metron-job/src/test/java/org/apache/metron/job/manager/InMemoryJobManagerTest.java
index b1fab4e..3f11718 100644
--- a/metron-platform/metron-job/src/test/java/org/apache/metron/job/manager/InMemoryJobManagerTest.java
+++ b/metron-platform/metron-job/src/test/java/org/apache/metron/job/manager/InMemoryJobManagerTest.java
@@ -18,32 +18,31 @@
 
 package org.apache.metron.job.manager;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
+import org.apache.hadoop.fs.Path;
+import org.apache.metron.job.*;
+import org.apache.metron.job.JobStatus.State;
+import org.apache.metron.job.Statusable.JobType;
+import org.junit.Rule;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
+import org.junit.rules.TemporaryFolder;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Supplier;
-import org.apache.hadoop.fs.Path;
-import org.apache.metron.job.Finalizer;
-import org.apache.metron.job.JobException;
-import org.apache.metron.job.JobStatus;
-import org.apache.metron.job.JobStatus.State;
-import org.apache.metron.job.Pageable;
-import org.apache.metron.job.Statusable;
-import org.apache.metron.job.Statusable.JobType;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
 
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+@EnableRuleMigrationSupport
 public class InMemoryJobManagerTest {
 
   @Rule
@@ -68,7 +67,7 @@
   private String emptyJobId;
   private String basePath;
 
-  @Before
+  @BeforeEach
   public void setup() throws JobException {
     MockitoAnnotations.initMocks(this);
     jm = new InMemoryJobManager<Path>();
diff --git a/metron-platform/metron-management/pom.xml b/metron-platform/metron-management/pom.xml
index c3f8f8f..906b868 100644
--- a/metron-platform/metron-management/pom.xml
+++ b/metron-platform/metron-management/pom.xml
@@ -204,6 +204,12 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/ConfigurationFunctionsTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/ConfigurationFunctionsTest.java
index d7d6515..e39c422 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/ConfigurationFunctionsTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/ConfigurationFunctionsTest.java
@@ -35,9 +35,9 @@
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
 import java.util.Map;
@@ -49,10 +49,7 @@
 import static org.apache.metron.common.configuration.ConfigurationsUtils.writeProfilerConfigToZookeeper;
 import static org.apache.metron.management.utils.FileUtils.slurp;
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the ConfigurationFunctions class.
@@ -87,7 +84,7 @@
   @Multiline
   private static String goodProfilerConfig;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupZookeeper() throws Exception {
 
     // zookeeper server
@@ -99,7 +96,7 @@
     client.start();
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     context = new Context.Builder()
@@ -409,16 +406,12 @@
     assertEquals(expected, actual);
   }
 
-  @Test(expected=ParseException.class)
+  @Test
   public void testPutGlobalBad() {
     {
       UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.FATAL);
-      try {
-        run("CONFIG_PUT('GLOBAL', 'foo bar')", context);
-      } catch(ParseException e) {
-        UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.ERROR);
-        throw e;
-      }
+      assertThrows(ParseException.class, () -> run("CONFIG_PUT('GLOBAL', 'foo bar')", context));
+      UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.ERROR);
     }
   }
 
@@ -438,17 +431,19 @@
     assertTrue(foundMatch);
   }
 
-  @Test(expected= ParseException.class)
-  public void testPutIndexingBad() throws InterruptedException {
+  @Test
+  public void testPutIndexingBad() {
     {
       {
         UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.FATAL);
-        try {
-          run("CONFIG_PUT('INDEXING', config, 'brop')", ImmutableMap.of("config", "foo bar"), context);
-        } catch(ParseException e) {
-          UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.ERROR);
-          throw e;
-        }
+        assertThrows(
+            ParseException.class,
+            () ->
+                run(
+                    "CONFIG_PUT('INDEXING', config, 'brop')",
+                    ImmutableMap.of("config", "foo bar"),
+                    context));
+        UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.ERROR);
       }
     }
   }
@@ -472,17 +467,19 @@
     assertTrue(foundMatch);
   }
 
-  @Test(expected= ParseException.class)
-  public void testPutEnrichmentBad() throws InterruptedException {
+  @Test
+  public void testPutEnrichmentBad() {
     {
       {
         UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.FATAL);
-        try {
-          run("CONFIG_PUT('ENRICHMENT', config, 'brop')", ImmutableMap.of("config", "foo bar"), context);
-        } catch(ParseException e) {
-          UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.ERROR);
-          throw e;
-        }
+        assertThrows(
+            ParseException.class,
+            () ->
+                run(
+                    "CONFIG_PUT('ENRICHMENT', config, 'brop')",
+                    ImmutableMap.of("config", "foo bar"),
+                    context));
+        UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.ERROR);
       }
     }
   }
@@ -503,16 +500,18 @@
     assertTrue(foundMatch);
   }
 
-  @Test(expected= ParseException.class)
-  public void testPutParserBad() throws InterruptedException {
+  @Test
+  public void testPutParserBad() {
     {
       UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.FATAL);
-      try {
-        run("CONFIG_PUT('PARSER', config, 'brop')", ImmutableMap.of("config", "foo bar"), context);
-      } catch(ParseException e) {
-        UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.ERROR);
-        throw e;
-      }
+      assertThrows(
+          ParseException.class,
+          () ->
+              run(
+                  "CONFIG_PUT('PARSER', config, 'brop')",
+                  ImmutableMap.of("config", "foo bar"),
+                  context));
+      UnitTestHelper.setLog4jLevel(ConfigurationFunctions.class, Level.ERROR);
     }
   }
 }
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/EnrichmentConfigFunctionsTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/EnrichmentConfigFunctionsTest.java
index d552aa1..c07f4ff 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/EnrichmentConfigFunctionsTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/EnrichmentConfigFunctionsTest.java
@@ -16,6 +16,7 @@
  * limitations under the License.
  */
 package org.apache.metron.management;
+
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
@@ -27,11 +28,9 @@
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import java.util.Arrays;
 import java.util.Collection;
@@ -39,19 +38,13 @@
 import java.util.Map;
 
 import static org.apache.metron.common.configuration.ConfigurationType.ENRICHMENT;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-@RunWith(Parameterized.class)
 public class EnrichmentConfigFunctionsTest {
 
   String configStr = emptyTransformationsConfig();
   Map<String, VariableResult> variables;
   Context context = null;
-  String enrichmentType = null;
-  String group = null;
-  public EnrichmentConfigFunctionsTest(String enrichmentType, String group) {
-    this.enrichmentType = enrichmentType;
-    this.group = group;
-  }
 
   public static String emptyTransformationsConfig() {
     SensorEnrichmentConfig config = new SensorEnrichmentConfig();
@@ -62,7 +55,6 @@
     }
   }
 
-  @Parameterized.Parameters
   public static Collection<Object[]> types() {
     // each test will be run against these values for windowSize
     return Arrays.asList(new Object[][]{
@@ -73,7 +65,7 @@
     });
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     variables = ImmutableMap.of(
             "upper", VariableResult.withExpression("FOO", "TO_UPPER('foo')"),
@@ -92,7 +84,7 @@
     }
     return ret;
   }
-  private int size(Map<String, Object> stellarFunctions) {
+  private int size(Map<String, Object> stellarFunctions, String group) {
     if(group == null) {
       return stellarFunctions.size();
     }
@@ -100,7 +92,7 @@
       return ((Map<String, Object>)stellarFunctions.getOrDefault(group, new HashMap<>())).size();
     }
   }
-  private Object get(Map<String, Object> stellarFunctions, String key) {
+  private Object get(Map<String, Object> stellarFunctions, String key, String group) {
     if(group == null) {
       return stellarFunctions.get(key);
     }
@@ -109,7 +101,7 @@
     }
   }
 
-  private EnrichmentConfig getEnrichmentConfig(String configStr) {
+  private EnrichmentConfig getEnrichmentConfig(String configStr, String enrichmentType) {
     SensorEnrichmentConfig sensorConfig = (SensorEnrichmentConfig) ENRICHMENT.deserialize(configStr);
     switch (enrichmentType) {
       case "ENRICHMENT":
@@ -137,8 +129,9 @@
     return processor.parse(rule, new DefaultVariableResolver(x -> variables.get(x),x -> variables.containsKey(x)), StellarFunctions.FUNCTION_RESOLVER(), context);
   }
 
-  @Test
-  public void testAddEmpty() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testAddEmpty(String enrichmentType, String group) {
 
     String newConfig = (String) run(
             "ENRICHMENT_STELLAR_TRANSFORM_ADD(config, type, SHELL_VARS2MAP('upper'), group)"
@@ -147,13 +140,14 @@
                     , "group", group
             )
     );
-    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig));
-    Assert.assertEquals(1, size(stellarFunctions));
-    Assert.assertEquals(variables.get("upper").getExpression().get(), get(stellarFunctions,"upper"));
+    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig, enrichmentType));
+    assertEquals(1, size(stellarFunctions, group));
+    assertEquals(variables.get("upper").getExpression().get(), get(stellarFunctions,"upper", group));
   }
 
-  @Test
-  public void testAddHasExisting() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testAddHasExisting(String enrichmentType, String group) {
     String newConfig = (String) run(
             "ENRICHMENT_STELLAR_TRANSFORM_ADD(config, type, SHELL_VARS2MAP('upper'), group)"
             ,toMap( "config", configStr
@@ -169,14 +163,15 @@
                     , "group", group
             )
     );
-    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig));
-    Assert.assertEquals(2, size(stellarFunctions));
-    Assert.assertEquals(variables.get("upper").getExpression().get(), get(stellarFunctions,"upper"));
-    Assert.assertEquals(variables.get("lower").getExpression().get(), get(stellarFunctions,"lower"));
+    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig, enrichmentType));
+    assertEquals(2, size(stellarFunctions, group));
+    assertEquals(variables.get("upper").getExpression().get(), get(stellarFunctions,"upper", group));
+    assertEquals(variables.get("lower").getExpression().get(), get(stellarFunctions,"lower", group));
   }
 
-  @Test
-  public void testAddMalformed() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testAddMalformed(String enrichmentType, String group) {
     String newConfig = (String) run(
             "ENRICHMENT_STELLAR_TRANSFORM_ADD(config, type, SHELL_VARS2MAP('foo'), group)"
             , toMap("config", configStr
@@ -184,12 +179,13 @@
                     , "group", group
             )
     );
-    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig));
-    Assert.assertEquals(0, size(stellarFunctions));
+    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig, enrichmentType));
+    assertEquals(0, size(stellarFunctions, group));
   }
 
-  @Test
-  public void testAddDuplicate() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testAddDuplicate(String enrichmentType, String group) {
     String newConfig = (String) run(
             "ENRICHMENT_STELLAR_TRANSFORM_ADD(config, type, SHELL_VARS2MAP('upper'), group)"
             , toMap("config", configStr
@@ -204,13 +200,14 @@
                     , "group", group
             )
     );
-    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig));
-    Assert.assertEquals(1, size(stellarFunctions));
-    Assert.assertEquals(variables.get("upper").getExpression().get(), get(stellarFunctions,"upper"));
+    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig, enrichmentType));
+    assertEquals(1, size(stellarFunctions, group));
+    assertEquals(variables.get("upper").getExpression().get(), get(stellarFunctions,"upper", group));
   }
 
-  @Test
-  public void testRemove() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testRemove(String enrichmentType, String group) {
     String newConfig = (String) run(
             "ENRICHMENT_STELLAR_TRANSFORM_ADD(config, type, SHELL_VARS2MAP('upper', 'lower'), group)"
             , toMap("config", configStr
@@ -225,13 +222,14 @@
                     , "group", group
             )
     );
-    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig));
-    Assert.assertEquals(1, size(stellarFunctions));
-    Assert.assertEquals(variables.get("lower").getExpression().get(), get(stellarFunctions,"lower"));
+    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig, enrichmentType));
+    assertEquals(1, size(stellarFunctions, group));
+    assertEquals(variables.get("lower").getExpression().get(), get(stellarFunctions,"lower", group));
   }
 
-  @Test
-  public void testRemoveMultiple() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testRemoveMultiple(String enrichmentType, String group) {
     String newConfig = (String) run(
             "ENRICHMENT_STELLAR_TRANSFORM_ADD(config, type, SHELL_VARS2MAP('upper', 'lower'), group)"
             , toMap("config", configStr
@@ -246,12 +244,13 @@
                     , "group", group
             )
     );
-    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig));
-    Assert.assertEquals(0, size(stellarFunctions));
+    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig, enrichmentType));
+    assertEquals(0, size(stellarFunctions, group));
   }
 
-  @Test
-  public void testRemoveMissing() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testRemoveMissing(String enrichmentType, String group) {
     String newConfig = (String) run(
             "ENRICHMENT_STELLAR_TRANSFORM_ADD(config, type, SHELL_VARS2MAP('lower'), group)"
             , toMap("config", configStr
@@ -266,9 +265,9 @@
                     , "group", group
             )
     );
-    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig));
-    Assert.assertEquals(1, size(stellarFunctions));
-    Assert.assertEquals(variables.get("lower").getExpression().get(), get(stellarFunctions,"lower"));
+    Map<String, Object> stellarFunctions = getStellarMappings(getEnrichmentConfig(newConfig, enrichmentType));
+    assertEquals(1, size(stellarFunctions, group));
+    assertEquals(variables.get("lower").getExpression().get(), get(stellarFunctions,"lower", group));
   }
 
   /**
@@ -289,8 +288,10 @@
    */
   @Multiline
   static String testPrintExpectedWithoutGroup;
-  @Test
-  public void testPrint() {
+
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testPrint(String enrichmentType, String group) {
     String newConfig = (String) run(
             "ENRICHMENT_STELLAR_TRANSFORM_ADD(config, type, SHELL_VARS2MAP('upper'), group)"
             , toMap("config", configStr
@@ -304,10 +305,10 @@
                   )
     );
     if(group == null) {
-      Assert.assertEquals(testPrintExpectedWithoutGroup, out);
+      assertEquals(testPrintExpectedWithoutGroup, out);
     }
     else {
-      Assert.assertEquals(testPrintExpectedWithGroup, out);
+      assertEquals(testPrintExpectedWithGroup, out);
     }
   }
 
@@ -321,23 +322,25 @@
   @Multiline
   static String testPrintEmptyExpected;
 
-  @Test
-  public void testPrintEmpty() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testPrintEmpty(String enrichmentType) {
     String out = (String) run("ENRICHMENT_STELLAR_TRANSFORM_PRINT(config, type)"
             , toMap("config", configStr
                    ,"type", enrichmentType
                   )
     );
-    Assert.assertEquals(testPrintEmptyExpected, out);
+    assertEquals(testPrintEmptyExpected, out);
   }
 
-  @Test
-  public void testPrintNull() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testPrintNull(String enrichmentType) {
 
     String out = (String) run("ENRICHMENT_STELLAR_TRANSFORM_PRINT(config, type)"
             , toMap("config", configStr ,"type", enrichmentType)
     );
-    Assert.assertEquals(testPrintEmptyExpected, out);
+    assertEquals(testPrintEmptyExpected, out);
   }
 
 
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/FileSystemFunctionsTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/FileSystemFunctionsTest.java
index 92bf79a..60c5776 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/FileSystemFunctionsTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/FileSystemFunctionsTest.java
@@ -17,22 +17,27 @@
  */
 package org.apache.metron.management;
 
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileUtil;
-import org.apache.hadoop.hdfs.MiniDFSCluster;
-import org.apache.metron.stellar.dsl.Context;
-import org.junit.*;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.hadoop.fs.FileUtil;
+import org.apache.hadoop.hdfs.MiniDFSCluster;
+import org.apache.metron.stellar.dsl.Context;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
-@RunWith(Parameterized.class)
 public class FileSystemFunctionsTest {
-  private FileSystemFunctions.FS_TYPE type;
   private FileSystemFunctions.FileSystemGetter fsGetter = null;
   private static File hdfsBaseDir;
   private static File localBaseDir;
@@ -47,11 +52,6 @@
   private FileSystemFunctions.FileSystemPut put;
   private FileSystemFunctions.FileSystemRm rm;
 
-  public FileSystemFunctionsTest(FileSystemFunctions.FS_TYPE type) {
-    this.type = type;
-  }
-
-  @Parameterized.Parameters
   public static Collection<Object[]> types() {
     return Arrays.asList(new Object[][]{
       {FileSystemFunctions.FS_TYPE.HDFS}
@@ -59,7 +59,7 @@
     });
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setupFS() throws IOException {
     {
       hdfsBaseDir = Files.createTempDirectory("test_hdfs").toFile().getAbsoluteFile();
@@ -78,8 +78,18 @@
     }
   }
 
-  @Before
-  public void setup() throws IOException {
+  @AfterAll
+  public static void teardown() {
+    {
+      hdfsCluster.shutdown();
+      FileUtil.fullyDelete(hdfsBaseDir);
+    }
+    {
+      new File(localPrefix).delete();
+    }
+  }
+
+  private void setupFsTypeAndFunctions(FileSystemFunctions.FS_TYPE type) {
     if(type == FileSystemFunctions.FS_TYPE.HDFS) {
       prefix=hdfsPrefix;
       fsGetter = () -> hdfsCluster.getFileSystem();
@@ -88,7 +98,6 @@
       prefix=localPrefix;
       fsGetter = FileSystemFunctions.FS_TYPE.LOCAL;
     }
-
     get = new FileSystemFunctions.FileSystemGet(fsGetter);
     get.initialize(null);
     getList = new FileSystemFunctions.FileSystemGetList(fsGetter);
@@ -101,75 +110,74 @@
     rm.initialize(null);
   }
 
-  @AfterClass
-  public static void teardown() {
-    {
-      hdfsCluster.shutdown();
-      FileUtil.fullyDelete(hdfsBaseDir);
-    }
-    {
-      new File(localPrefix).delete();
-    }
-  }
-
-  @Test
-  public void testHappyPath() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testHappyPath(FileSystemFunctions.FS_TYPE type) {
+    setupFsTypeAndFunctions(type);
     Object putOut = put.apply(Arrays.asList("foo", prefix + "testPut.dat"), null);
-    Assert.assertTrue((Boolean) putOut);
+    assertTrue((Boolean) putOut);
     String getOut = (String)get.apply(Arrays.asList(prefix + "testPut.dat"), null);
-    Assert.assertEquals("foo", getOut);
+    assertEquals("foo", getOut);
     String lsOut = (String) ls.apply(Arrays.asList(prefix), null);
-    Assert.assertFalse(lsOut.contains("(empty)"));
+    assertFalse(lsOut.contains("(empty)"));
     Boolean rmRet = (Boolean)rm.apply(Arrays.asList(prefix + "testPut.dat"), null);
-    Assert.assertTrue(rmRet);
+    assertTrue(rmRet);
     lsOut = (String) ls.apply(Arrays.asList(prefix), null);
-    Assert.assertTrue(lsOut.contains("(empty)"));
+    assertTrue(lsOut.contains("(empty)"));
   }
 
-  @Test
-  public void testGetList() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testGetList(FileSystemFunctions.FS_TYPE type) {
+    setupFsTypeAndFunctions(type);
     Object putOut = put.apply(Arrays.asList("foo\nbar", prefix + "testPut.dat"), null);
-    Assert.assertTrue((Boolean) putOut);
+    assertTrue((Boolean) putOut);
     String getOut = (String)get.apply(Arrays.asList(prefix + "testPut.dat"), null);
-    Assert.assertEquals("foo\nbar", getOut);
+    assertEquals("foo\nbar", getOut);
     List<String> list = (List<String>) getList.apply(Arrays.asList(prefix + "testPut.dat"), null);
-    Assert.assertEquals(2,list.size());
-    Assert.assertEquals("foo",list.get(0));
-    Assert.assertEquals("bar",list.get(1));
+    assertEquals(2,list.size());
+    assertEquals("foo",list.get(0));
+    assertEquals("bar",list.get(1));
   }
 
-  @Test
-  public void testPutMissingFile() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testPutMissingFile(FileSystemFunctions.FS_TYPE type) {
+    setupFsTypeAndFunctions(type);
     Object o = put.apply(Arrays.asList("foo", null), null);
-    Assert.assertFalse((Boolean) o);
+    assertFalse((Boolean) o);
     String lsOut = (String) ls.apply(Arrays.asList(prefix), null);
-    Assert.assertTrue(lsOut.contains("(empty)"));
+    assertTrue(lsOut.contains("(empty)"));
   }
 
-  @Test
-  public void testRmTwice() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testRmTwice(FileSystemFunctions.FS_TYPE type) {
+    setupFsTypeAndFunctions(type);
     Object putOut = put.apply(Arrays.asList("foo", prefix + "testPut.dat"), null);
-    Assert.assertTrue((Boolean) putOut);
+    assertTrue((Boolean) putOut);
     Boolean rmRet = (Boolean)rm.apply(Arrays.asList(prefix + "testPut.dat"), null);
-    Assert.assertTrue(rmRet);
+    assertTrue(rmRet);
     rmRet = (Boolean)rm.apply(Arrays.asList(prefix + "testPut.dat"), null);
-    Assert.assertTrue(rmRet);
+    assertTrue(rmRet);
     String lsOut = (String) ls.apply(Arrays.asList(prefix), null);
-    Assert.assertTrue(lsOut.contains("(empty)"));
+    assertTrue(lsOut.contains("(empty)"));
   }
 
-  @Test
-  public void testRecursiveRm() {
+  @ParameterizedTest
+  @MethodSource("types")
+  public void testRecursiveRm(FileSystemFunctions.FS_TYPE type) {
+    setupFsTypeAndFunctions(type);
     Object putOut = put.apply(Arrays.asList("foo", prefix + "blah/testPut.dat"), null);
-    Assert.assertTrue((Boolean) putOut);
+    assertTrue((Boolean) putOut);
     putOut = put.apply(Arrays.asList("grok", prefix + "blah/testPut2.dat"), null);
-    Assert.assertTrue((Boolean) putOut);
-    Assert.assertEquals("foo", (String)get.apply(Arrays.asList(prefix + "blah/testPut.dat"), null));
-    Assert.assertEquals("grok", (String)get.apply(Arrays.asList(prefix + "blah/testPut2.dat"), null));
+    assertTrue((Boolean) putOut);
+    assertEquals("foo", get.apply(Arrays.asList(prefix + "blah/testPut.dat"), null));
+    assertEquals("grok", get.apply(Arrays.asList(prefix + "blah/testPut2.dat"), null));
     boolean rmRet = (Boolean)rm.apply(Arrays.asList(prefix + "blah", true), null);
-    Assert.assertTrue(rmRet);
+    assertTrue(rmRet);
     String lsOut = (String) ls.apply(Arrays.asList(prefix), null);
-    Assert.assertTrue(lsOut.contains("(empty)"));
+    assertTrue(lsOut.contains("(empty)"));
   }
 
 }
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/GrokFunctionsTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/GrokFunctionsTest.java
index 52c5e5f..a91287f 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/GrokFunctionsTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/GrokFunctionsTest.java
@@ -20,11 +20,13 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.apache.metron.stellar.dsl.Context;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
+
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class GrokFunctionsTest {
   private String grokExpr = "%{NUMBER:timestamp}[^0-9]*%{INT:elapsed} %{IP:ip_src_addr} %{WORD:action}/%{NUMBER:code} %{NUMBER:bytes} %{WORD:method} %{NOTSPACE:url}[^0-9]*(%{IP:ip_dst_addr})?";
@@ -37,9 +39,9 @@
                                                       , ImmutableMap.of("messages", ImmutableList.of(message), "grok", grokExpr)
                                                       , Context.EMPTY_CONTEXT()
                                                       );
-    Assert.assertTrue(out.contains("TCP_MISS"));
-    Assert.assertTrue(out.contains(" 494 "));
-    Assert.assertTrue(out.contains("157.166.226.26"));
+    assertTrue(out.contains("TCP_MISS"));
+    assertTrue(out.contains(" 494 "));
+    assertTrue(out.contains("157.166.226.26"));
   }
 
   @Test
@@ -50,10 +52,10 @@
                                                       , ImmutableMap.of("messages", ImmutableList.of(message, message2), "grok", grokExpr)
                                                       , Context.EMPTY_CONTEXT()
                                                       );
-    Assert.assertTrue(out.contains("TCP_MISS"));
-    Assert.assertTrue(out.contains(" 494 "));
-    Assert.assertTrue(out.contains("157.166.226.26"));
-    Assert.assertTrue(out.contains("404"));
+    assertTrue(out.contains("TCP_MISS"));
+    assertTrue(out.contains(" 494 "));
+    assertTrue(out.contains("157.166.226.26"));
+    assertTrue(out.contains("404"));
   }
 
   @Test
@@ -63,7 +65,7 @@
                                                       , ImmutableMap.of("message", message, "grok", grokExpr)
                                                       , Context.EMPTY_CONTEXT()
                                                       );
-    Assert.assertEquals("NO MATCH", out);
+    assertEquals("NO MATCH", out);
   }
 
   @Test
@@ -74,8 +76,8 @@
                                                       , ImmutableMap.of("messages", ImmutableList.of(message, message2), "grok", grokExpr)
                                                       , Context.EMPTY_CONTEXT()
                                                       );
-    Assert.assertTrue(out.contains("MISSING"));
-    Assert.assertTrue(out.contains("404"));
+    assertTrue(out.contains("MISSING"));
+    assertTrue(out.contains("404"));
   }
 
   @Test
@@ -84,6 +86,6 @@
                                                       , new HashMap<>()
                                                       , Context.EMPTY_CONTEXT()
                                                       );
-    Assert.assertEquals("%{BASE10NUM}    142 %{IP} TCP_MISS%{PATH}", out);
+    assertEquals("%{BASE10NUM}    142 %{IP} TCP_MISS%{PATH}", out);
   }
 }
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/IndexingConfigFunctionsTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/IndexingConfigFunctionsTest.java
index 6ecf90f..5ded464 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/IndexingConfigFunctionsTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/IndexingConfigFunctionsTest.java
@@ -19,21 +19,21 @@
 
 import com.google.common.collect.ImmutableMap;
 import org.apache.metron.common.configuration.IndexingConfigurations;
+import org.apache.metron.stellar.common.StellarProcessor;
 import org.apache.metron.stellar.common.shell.VariableResult;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.apache.metron.stellar.common.StellarProcessor;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.apache.metron.common.configuration.ConfigurationType.INDEXING;
 import static org.apache.metron.management.EnrichmentConfigFunctionsTest.toMap;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class IndexingConfigFunctionsTest {
 
@@ -45,7 +45,7 @@
     return processor.parse(rule, new DefaultVariableResolver(x -> variables.get(x),x -> variables.containsKey(x)), StellarFunctions.FUNCTION_RESOLVER(), context);
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     variables = ImmutableMap.of(
             "upper", VariableResult.withExpression("FOO", "TO_UPPER('foo')"),
@@ -63,7 +63,7 @@
                              , toMap("config", "{}")
     );
     Map<String, Object> config = (Map<String, Object>)INDEXING.deserialize(out);
-    Assert.assertEquals(10, IndexingConfigurations.getBatchSize((Map<String, Object>) config.get("hdfs")));
+    assertEquals(10, IndexingConfigurations.getBatchSize((Map<String, Object>) config.get("hdfs")));
   }
 
   @Test
@@ -72,18 +72,16 @@
                              , toMap("config", "{}")
     );
     Map<String, Object> config = (Map<String, Object>)INDEXING.deserialize(out);
-    Assert.assertEquals(10, IndexingConfigurations.getBatchSize((Map<String, Object>) config.get("hdfs")));
-    Assert.assertEquals(2,  IndexingConfigurations.getBatchTimeout((Map<String, Object>) config.get("hdfs")));
+    assertEquals(10, IndexingConfigurations.getBatchSize((Map<String, Object>) config.get("hdfs")));
+    assertEquals(2,  IndexingConfigurations.getBatchTimeout((Map<String, Object>) config.get("hdfs")));
   }
 
-  @Test(expected=ParseException.class)
+  @Test
   public void testSetBatchBad() {
     Map<String,Object> variables = new HashMap<String,Object>(){{
       put("config",null);
     }};
-    run("INDEXING_SET_BATCH(config, 'hdfs', 10)"
-                             , variables
-    );
+    assertThrows(ParseException.class, () -> run("INDEXING_SET_BATCH(config, 'hdfs', 10)", variables));
   }
 
   @Test
@@ -92,17 +90,15 @@
                              , toMap("config", "{}")
     );
     Map<String, Object> config = (Map<String, Object>)INDEXING.deserialize(out);
-    Assert.assertTrue(IndexingConfigurations.isEnabled((Map<String, Object>) config.get("hdfs")));
+    assertTrue(IndexingConfigurations.isEnabled((Map<String, Object>) config.get("hdfs")));
   }
 
-  @Test(expected=ParseException.class)
+  @Test
   public void testSetEnabledBad() {
     Map<String,Object> variables = new HashMap<String,Object>(){{
       put("config",null);
     }};
-    run("INDEXING_SET_ENABLED(config, 'hdfs', 10)"
-                             , variables
-    );
+    assertThrows(ParseException.class, () -> run("INDEXING_SET_ENABLED(config, 'hdfs', 10)", variables));
   }
 
   @Test
@@ -111,16 +107,14 @@
             , toMap("config", "{}")
     );
     Map<String, Object> config = (Map<String, Object>)INDEXING.deserialize(out);
-    Assert.assertEquals("foo", IndexingConfigurations.getIndex((Map<String, Object>)config.get("hdfs"), null));
+    assertEquals("foo", IndexingConfigurations.getIndex((Map<String, Object>)config.get("hdfs"), null));
   }
 
-  @Test(expected= ParseException.class)
+  @Test
   public void testSetIndexBad() {
     Map<String,Object> variables = new HashMap<String,Object>(){{
       put("config",null);
     }};
-    run("INDEXING_SET_INDEX(config, 'hdfs', NULL)"
-            , variables
-    );
+    assertThrows(ParseException.class, () -> run("INDEXING_SET_INDEX(config, 'hdfs', NULL)", variables));
   }
 }
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/KafkaFunctionsIntegrationTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/KafkaFunctionsIntegrationTest.java
index 09bce17..4954507 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/KafkaFunctionsIntegrationTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/KafkaFunctionsIntegrationTest.java
@@ -28,29 +28,15 @@
 import org.apache.metron.stellar.dsl.functions.MapFunctions;
 import org.apache.metron.stellar.dsl.functions.resolver.FunctionResolver;
 import org.apache.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TestName;
+import org.junit.jupiter.api.*;
 
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
+import java.util.*;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the KafkaFunctions class.
@@ -72,22 +58,19 @@
   private static FunctionResolver functionResolver;
   private static ExecutorService executor;
 
-  @Rule
-  public TestName testName = new TestName();
-
-  @BeforeClass
+  @BeforeAll
   public static void setupExecutor() {
     executor = Executors.newFixedThreadPool(2);
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownExecutor() {
     if(executor != null && !executor.isShutdown()) {
       executor.shutdown();
     }
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setupKafka() throws Exception {
 
     Properties properties = new Properties();
@@ -103,7 +86,7 @@
     runner.start();
   }
 
-  @BeforeClass
+  @BeforeAll
   public static void setupFunctionResolver() {
 
     // used when executing Stellar expressions
@@ -117,7 +100,7 @@
             .withClass(MapFunctions.MapGet.class);
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
 
     // messages that will be read/written during the tests
@@ -134,12 +117,12 @@
     global.put("auto.offset.reset", "earliest");
   }
 
-  @AfterClass
-  public static void tearDownAfterClass() throws Exception {
+  @AfterAll
+  public static void tearDownAfterClass() {
     runner.stop();
   }
 
-  @After
+  @AfterEach
   public void tearDown() {
     runner.reset();
   }
@@ -149,10 +132,10 @@
    * KAFKA_GET should be able to read one message from a topic.
    */
   @Test
-  public void testKafkaPut() {
+  public void testKafkaPut(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put a message onto the topic
@@ -166,10 +149,10 @@
    * KAFKA_PUT should be able to write multiple message to a topic.
    */
   @Test
-  public void testKafkaPutMultipleMessages() {
+  public void testKafkaPutMultipleMessages(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put a message onto the topic
@@ -187,10 +170,10 @@
    * KAFKA_PUT should be able to write a message passed as a String, rather than a List.
    */
   @Test
-  public void testKafkaPutOneMessagePassedAsString() {
+  public void testKafkaPutOneMessagePassedAsString(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put a message onto the topic - the message is just a string, not a list
@@ -207,13 +190,13 @@
    * KAFKA_PUT should be able to write a message passed as a String, rather than a List.
    */
   @Test
-  public void testKafkaPutWithRichView() {
+  public void testKafkaPutWithRichView(TestInfo testInfo) {
 
     // configure a detailed view of each message
     global.put(KafkaFunctions.MESSAGE_VIEW_PROPERTY, KafkaFunctions.MESSAGE_VIEW_RICH);
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put a message onto the topic - the message is just a string, not a list
@@ -237,13 +220,13 @@
    * KAFKA_GET should allow a user to see a detailed view of each Kafka record.
    */
   @Test
-  public void testKafkaGetWithRichView() {
+  public void testKafkaGetWithRichView(TestInfo testInfo) {
 
     // configure a detailed view of each message
     global.put(KafkaFunctions.MESSAGE_VIEW_PROPERTY, KafkaFunctions.MESSAGE_VIEW_RICH);
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put a message onto the topic - the message is just a string, not a list
@@ -271,10 +254,10 @@
    * KAFKA_GET should be able to read multiple messages at once.
    */
   @Test
-  public void testKafkaPutThenGetWithMultipleMessages() {
+  public void testKafkaPutThenGetWithMultipleMessages(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put multiple messages onto the topic
@@ -301,10 +284,10 @@
    * across separate executions of KAKFA_GET
    */
   @Test
-  public void testKafkaGetWithSequentialReads() {
+  public void testKafkaGetWithSequentialReads(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put multiple messages onto the topic
@@ -327,10 +310,10 @@
    * KAFKA_GET should return nothing if a topic does not exist
    */
   @Test
-  public void testKafkaGetWithNonExistentTopic() {
+  public void testKafkaGetWithNonExistentTopic(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // no more messages left to read
@@ -341,10 +324,10 @@
    * KAFKA_TAIL should return new messages from the end of a topic.
    */
   @Test
-  public void testKafkaTail() throws Exception {
+  public void testKafkaTail(TestInfo testInfo) throws Exception {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put multiple messages onto the topic; KAFKA tail should NOT retrieve these
@@ -367,13 +350,13 @@
    * then no messages will be returned.
    */
   @Test
-  public void testKafkaTailNone() {
+  public void testKafkaTailNone(TestInfo testInfo) {
 
     // shorten the max wait time so we do not have to wait so long
     global.put(KafkaFunctions.MAX_WAIT_PROPERTY, 2000);
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put multiple messages onto the topic
@@ -387,13 +370,13 @@
    * KAFKA_TAIL should allow a user to see a rich view of each Kafka record.
    */
   @Test
-  public void testKafkaTailWithRichView() throws Exception {
+  public void testKafkaTailWithRichView(TestInfo testInfo) throws Exception {
 
     // configure a detailed view of each message
     global.put(KafkaFunctions.MESSAGE_VIEW_PROPERTY, KafkaFunctions.MESSAGE_VIEW_RICH);
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put multiple messages onto the topic; KAFKA tail should NOT retrieve these
@@ -467,10 +450,10 @@
    * KAFKA_FIND should only return messages that satisfy a filter expression.
    */
   @Test
-  public void testKafkaFind() throws Exception {
+  public void testKafkaFind(TestInfo testInfo) throws Exception {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // find all messages satisfying the filter expression
@@ -489,10 +472,10 @@
    * KAFKA_FIND should return no messages, if none match the filter expression.
    */
   @Test
-  public void testKafkaFindNone() throws Exception {
+  public void testKafkaFindNone(TestInfo testInfo) throws Exception {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // find all messages satisfying the filter expression
@@ -511,13 +494,13 @@
    * KAFKA_FIND should allow a user to see a detailed view of each Kafka record.
    */
   @Test
-  public void testKafkaFindWithRichView() throws Exception {
+  public void testKafkaFindWithRichView(TestInfo testInfo) throws Exception {
 
     // configure a detailed view of each message
     global.put(KafkaFunctions.MESSAGE_VIEW_PROPERTY, KafkaFunctions.MESSAGE_VIEW_RICH);
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // find all messages satisfying the filter expression
@@ -545,10 +528,10 @@
    * KAFKA_FIND should return no more messages than its limit.
    */
   @Test
-  public void testKafkaFindMultiple() throws Exception {
+  public void testKafkaFindMultiple(TestInfo testInfo) throws Exception {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // find all messages satisfying the filter expression
@@ -571,10 +554,10 @@
    * messages are found.
    */
   @Test
-  public void testKafkaFindExceedsMaxWait() {
+  public void testKafkaFindExceedsMaxWait(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // write all 3 messages to the topic
@@ -586,7 +569,7 @@
 
     // expect not to have waited more than roughly 1000 millis
     long wait = System.currentTimeMillis() - before;
-    assertTrue("Expected wait not to exceed max wait; actual wait = " + wait, wait < 2 * 1000);
+    assertTrue(wait < 2 * 1000, "Expected wait not to exceed max wait; actual wait = " + wait);
 
     // expect no messages
     List<String> expected = Collections.emptyList();
@@ -597,10 +580,10 @@
    * KAFKA_SEEK should return the message at a given offset.
    */
   @Test
-  public void testKafkaSeek() throws Exception {
+  public void testKafkaSeek(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put 3 messages into the topic
@@ -626,10 +609,10 @@
    * KAFKA_SEEK should return null if the offset does not exist
    */
   @Test
-  public void testKafkaSeekToMissingOffset() throws Exception {
+  public void testKafkaSeekToMissingOffset(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put 3 messages into the topic
@@ -644,10 +627,10 @@
    * KAFKA_SEEK should return null if the partition does not exist
    */
   @Test
-  public void testKafkaSeekToMissingPartition() throws Exception {
+  public void testKafkaSeekToMissingPartition(TestInfo testInfo) {
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     // put 3 messages into the topic
@@ -662,13 +645,13 @@
    * KAFKA_SEEK should allow a user to see a detailed view of each Kafka record.
    */
   @Test
-  public void testKafkaSeekWithRichView() throws Exception {
+  public void testKafkaSeekWithRichView(TestInfo testInfo) {
 
     // configure a detailed view of each message
     global.put(KafkaFunctions.MESSAGE_VIEW_PROPERTY, KafkaFunctions.MESSAGE_VIEW_RICH);
 
     // use a unique topic name for this test
-    final String topicName = testName.getMethodName();
+    final String topicName = testInfo.getTestMethod().get().getName();
     variables.put("topic", topicName);
 
     run("KAFKA_PUT(topic, [ message1, message2, message3 ])");
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/ParserConfigFunctionsTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/ParserConfigFunctionsTest.java
index e27a7ad..a852d04 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/ParserConfigFunctionsTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/ParserConfigFunctionsTest.java
@@ -24,17 +24,18 @@
 import org.apache.metron.stellar.common.shell.VariableResult;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.apache.metron.TestConstants.PARSER_CONFIGS_PATH;
-import static org.apache.metron.management.utils.FileUtils.slurp;
 import static org.apache.metron.common.configuration.ConfigurationType.PARSER;
+import static org.apache.metron.management.utils.FileUtils.slurp;
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class ParserConfigFunctionsTest {
 
@@ -42,7 +43,7 @@
   String existingTransformationsConfig = slurp(PARSER_CONFIGS_PATH + "/parsers/squid.json");
   Map<String, VariableResult> variables ;
   Context context = null;
-  @Before
+  @BeforeEach
   public void setup() {
     variables = ImmutableMap.of(
             "upper" , VariableResult.withExpression("FOO", "TO_UPPER('foo')"),
@@ -74,8 +75,8 @@
   public void testAddEmpty() {
     String newConfig = (String)run("PARSER_STELLAR_TRANSFORM_ADD(config, SHELL_VARS2MAP('upper'))", ImmutableMap.of("config", emptyTransformationsConfig), context);
     Map<String, Object> transformations = transform(newConfig);
-    Assert.assertEquals(1, transformations.size());
-    Assert.assertEquals("FOO", transformations.get("upper") );
+    assertEquals(1, transformations.size());
+    assertEquals("FOO", transformations.get("upper") );
   }
 
   @Test
@@ -86,15 +87,15 @@
     );
     Map<String, Object> transformations = transform(newConfig, ImmutableMap.of("url", "http://www.google.com"));
     //squid already has 2 transformations, we just added url, which makes 3
-    Assert.assertEquals(4, transformations.size());
-    Assert.assertEquals("FOO", transformations.get("upper") );
+    assertEquals(4, transformations.size());
+    assertEquals("FOO", transformations.get("upper") );
   }
 
   @Test
   public void testAddMalformed() {
     String newConfig = (String)run("PARSER_STELLAR_TRANSFORM_ADD(config, SHELL_VARS2MAP('blah'))", ImmutableMap.of("config", emptyTransformationsConfig), context);
     Map<String, Object> transformations = transform(newConfig);
-    Assert.assertEquals(0, transformations.size());
+    assertEquals(0, transformations.size());
   }
 
   @Test
@@ -102,8 +103,8 @@
     String newConfig = (String)run("PARSER_STELLAR_TRANSFORM_ADD(config, SHELL_VARS2MAP('upper'))", ImmutableMap.of("config", emptyTransformationsConfig), context);
     newConfig = (String)run("PARSER_STELLAR_TRANSFORM_ADD(config, SHELL_VARS2MAP('upper'))", ImmutableMap.of("config", newConfig), context);
     Map<String, Object> transformations = transform(newConfig);
-    Assert.assertEquals(1, transformations.size());
-    Assert.assertEquals("FOO", transformations.get("upper") );
+    assertEquals(1, transformations.size());
+    assertEquals("FOO", transformations.get("upper") );
   }
 
   @Test
@@ -111,7 +112,7 @@
     String newConfig = (String)run("PARSER_STELLAR_TRANSFORM_ADD(config, SHELL_VARS2MAP('upper'))", ImmutableMap.of("config", emptyTransformationsConfig), context);
     newConfig = (String)run("PARSER_STELLAR_TRANSFORM_REMOVE(config, ['upper'])", ImmutableMap.of("config", newConfig), context);
     Map<String, Object> transformations = transform(newConfig);
-    Assert.assertEquals(0, transformations.size());
+    assertEquals(0, transformations.size());
   }
 
   @Test
@@ -119,7 +120,7 @@
     String newConfig = (String)run("PARSER_STELLAR_TRANSFORM_ADD(config, SHELL_VARS2MAP('upper', 'lower'))", ImmutableMap.of("config", emptyTransformationsConfig), context);
     newConfig = (String)run("PARSER_STELLAR_TRANSFORM_REMOVE(config, ['upper', 'lower'])", ImmutableMap.of("config", newConfig), context);
     Map<String, Object> transformations = transform(newConfig);
-    Assert.assertEquals(0, transformations.size());
+    assertEquals(0, transformations.size());
   }
 
   @Test
@@ -128,15 +129,15 @@
       String newConfig = (String) run("PARSER_STELLAR_TRANSFORM_ADD(config, SHELL_VARS2MAP('upper'))", ImmutableMap.of("config", emptyTransformationsConfig), context);
       newConfig = (String) run("PARSER_STELLAR_TRANSFORM_REMOVE(config, ['lower'])", ImmutableMap.of("config", newConfig), context);
       Map<String, Object> transformations = transform(newConfig);
-      Assert.assertEquals(1, transformations.size());
-      Assert.assertEquals("FOO", transformations.get("upper"));
+      assertEquals(1, transformations.size());
+      assertEquals("FOO", transformations.get("upper"));
     }
     {
       String newConfig = (String) run("PARSER_STELLAR_TRANSFORM_ADD(config, SHELL_VARS2MAP('upper'))", ImmutableMap.of("config", emptyTransformationsConfig), context);
       newConfig = (String) run("PARSER_STELLAR_TRANSFORM_REMOVE(config, [''])", ImmutableMap.of("config", newConfig), context);
       Map<String, Object> transformations = transform(newConfig);
-      Assert.assertEquals(1, transformations.size());
-      Assert.assertEquals("FOO", transformations.get("upper"));
+      assertEquals(1, transformations.size());
+      assertEquals("FOO", transformations.get("upper"));
     }
   }
 
@@ -153,7 +154,7 @@
   public void testPrint() {
     String newConfig = (String) run("PARSER_STELLAR_TRANSFORM_ADD(config, SHELL_VARS2MAP('upper'))", ImmutableMap.of("config", emptyTransformationsConfig), context);
     String out = (String) run("PARSER_STELLAR_TRANSFORM_PRINT(config )", ImmutableMap.of("config", newConfig), context);
-    Assert.assertEquals(testPrintExpected, out);
+    assertEquals(testPrintExpected, out);
   }
   /**
 ╔═══════╤════════════════╗
@@ -168,7 +169,7 @@
   @Test
   public void testPrintEmpty() {
     String out = (String) run("PARSER_STELLAR_TRANSFORM_PRINT(config )", ImmutableMap.of("config", emptyTransformationsConfig), context);
-    Assert.assertEquals(testPrintEmptyExpected, out);
+    assertEquals(testPrintEmptyExpected, out);
   }
 
   @Test
@@ -177,6 +178,6 @@
       put("config",null);
     }};
     String out = (String) run("PARSER_STELLAR_TRANSFORM_PRINT(config )", variables, context);
-    Assert.assertNull( out);
+    assertNull(out);
   }
 }
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/ParserFunctionsTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/ParserFunctionsTest.java
index 807f47d..6a476d4 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/ParserFunctionsTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/ParserFunctionsTest.java
@@ -19,7 +19,6 @@
 
 package org.apache.metron.management;
 
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.curator.framework.api.GetDataBuilder;
@@ -34,27 +33,21 @@
 import org.apache.zookeeper.KeeperException;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.lang.invoke.MethodHandles;
+import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.apache.metron.common.Constants.ErrorFields.ERROR_HASH;
-import static org.apache.metron.common.Constants.ErrorFields.ERROR_TYPE;
-import static org.apache.metron.common.Constants.ErrorFields.EXCEPTION;
-import static org.apache.metron.common.Constants.ErrorFields.MESSAGE;
-import static org.apache.metron.common.Constants.ErrorFields.STACK;
-import static org.apache.metron.common.Constants.Fields.DST_ADDR;
-import static org.apache.metron.common.Constants.Fields.DST_PORT;
-import static org.apache.metron.common.Constants.Fields.SRC_ADDR;
-import static org.apache.metron.common.Constants.Fields.SRC_PORT;
+import static org.apache.metron.common.Constants.ErrorFields.*;
+import static org.apache.metron.common.Constants.Fields.*;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -70,7 +63,7 @@
   Context context = null;
   StellarStatefulExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() {
     variables = new HashMap<>();
     functionResolver = new SimpleFunctionResolver()
@@ -134,14 +127,14 @@
     List<JSONObject> messages = execute("PARSER_PARSE(parser, message)", List.class);
 
     // validate the parsed message
-    Assert.assertEquals(1, messages.size());
+    assertEquals(1, messages.size());
     JSONObject message = messages.get(0);
-    Assert.assertEquals("bro", message.get(Constants.SENSOR_TYPE));
-    Assert.assertEquals("10.122.196.204", message.get(SRC_ADDR.getName()));
-    Assert.assertEquals(33976L, message.get(SRC_PORT.getName()));
-    Assert.assertEquals("144.254.71.184", message.get(DST_ADDR.getName()));
-    Assert.assertEquals(53L, message.get(DST_PORT.getName()));
-    Assert.assertEquals("dns", message.get("protocol"));
+    assertEquals("bro", message.get(Constants.SENSOR_TYPE));
+    assertEquals("10.122.196.204", message.get(SRC_ADDR.getName()));
+    assertEquals(33976L, message.get(SRC_PORT.getName()));
+    assertEquals("144.254.71.184", message.get(DST_ADDR.getName()));
+    assertEquals(53L, message.get(DST_PORT.getName()));
+    assertEquals("dns", message.get("protocol"));
   }
 
   @Test
@@ -157,15 +150,15 @@
     List<JSONObject> messages = execute("PARSER_PARSE(parser, [msg1, msg2, msg3])", List.class);
 
     // expect a parsed message
-    Assert.assertEquals(3, messages.size());
+    assertEquals(3, messages.size());
     for(JSONObject message: messages) {
-      Assert.assertEquals("bro", message.get(Constants.SENSOR_TYPE));
-      Assert.assertTrue(message.containsKey(Constants.GUID));
-      Assert.assertEquals("10.122.196.204", message.get(SRC_ADDR.getName()));
-      Assert.assertEquals(33976L, message.get(SRC_PORT.getName()));
-      Assert.assertEquals("144.254.71.184", message.get(DST_ADDR.getName()));
-      Assert.assertEquals(53L, message.get(DST_PORT.getName()));
-      Assert.assertEquals("dns", message.get("protocol"));
+      assertEquals("bro", message.get(Constants.SENSOR_TYPE));
+      assertTrue(message.containsKey(Constants.GUID));
+      assertEquals("10.122.196.204", message.get(SRC_ADDR.getName()));
+      assertEquals(33976L, message.get(SRC_PORT.getName()));
+      assertEquals("144.254.71.184", message.get(DST_ADDR.getName()));
+      assertEquals(53L, message.get(DST_PORT.getName()));
+      assertEquals("dns", message.get("protocol"));
     }
   }
 
@@ -181,18 +174,18 @@
     List<JSONObject> messages = execute("PARSER_PARSE(parser, message)", List.class);
 
     // validate the parsed message
-    Assert.assertEquals(1, messages.size());
+    assertEquals(1, messages.size());
 
     // expect an error message to be returned
     JSONObject error = messages.get(0);
-    Assert.assertEquals(invalidMessage, error.get("raw_message"));
-    Assert.assertEquals(Constants.ERROR_TYPE, error.get(Constants.SENSOR_TYPE));
-    Assert.assertEquals("parser_error", error.get(ERROR_TYPE.getName()));
-    Assert.assertTrue(error.containsKey(MESSAGE.getName()));
-    Assert.assertTrue(error.containsKey(EXCEPTION.getName()));
-    Assert.assertTrue(error.containsKey(STACK.getName()));
-    Assert.assertTrue(error.containsKey(ERROR_HASH.getName()));
-    Assert.assertTrue(error.containsKey(Constants.GUID));
+    assertEquals(invalidMessage, error.get("raw_message"));
+    assertEquals(Constants.ERROR_TYPE, error.get(Constants.SENSOR_TYPE));
+    assertEquals("parser_error", error.get(ERROR_TYPE.getName()));
+    assertTrue(error.containsKey(MESSAGE.getName()));
+    assertTrue(error.containsKey(EXCEPTION.getName()));
+    assertTrue(error.containsKey(STACK.getName()));
+    assertTrue(error.containsKey(ERROR_HASH.getName()));
+    assertTrue(error.containsKey(Constants.GUID));
   }
 
   @Test
@@ -208,9 +201,9 @@
     List<JSONObject> messages = execute("PARSER_PARSE(parser, [msg1, msg2])", List.class);
 
     // expect 2 messages to be returned - 1 success and 1 error
-    Assert.assertEquals(2, messages.size());
-    Assert.assertEquals(1, messages.stream().filter(msg -> isBro(msg)).count());
-    Assert.assertEquals(1, messages.stream().filter(msg -> isError(msg)).count());
+    assertEquals(2, messages.size());
+    assertEquals(1, messages.stream().filter(msg -> isBro(msg)).count());
+    assertEquals(1, messages.stream().filter(msg -> isError(msg)).count());
   }
 
   @Test
@@ -220,8 +213,8 @@
     assign("parser", "PARSER_INIT('bro', config)");
 
     String config = execute("PARSER_CONFIG(parser)", String.class);
-    Assert.assertNotNull(config);
-    Assert.assertNotNull(SensorParserConfig.fromBytes(config.getBytes(StandardCharsets.UTF_8)));
+    assertNotNull(config);
+    assertNotNull(SensorParserConfig.fromBytes(config.getBytes(StandardCharsets.UTF_8)));
   }
 
   @Test
@@ -229,11 +222,11 @@
     set("configAsString", broParserConfig);
     StellarParserRunner runner = execute("PARSER_INIT('bro', configAsString)", StellarParserRunner.class);
 
-    Assert.assertNotNull(runner);
+    assertNotNull(runner);
     SensorParserConfig actual = runner.getParserConfigurations().getSensorParserConfig("bro");
     SensorParserConfig expected = SensorParserConfig.fromBytes(broParserConfig.getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertEquals(expected, actual);
+    assertEquals(expected, actual);
   }
 
   @Test
@@ -242,17 +235,16 @@
     set("configAsMap", configAsMap);
     StellarParserRunner runner = execute("PARSER_INIT('bro', configAsMap)", StellarParserRunner.class);
 
-    Assert.assertNotNull(runner);
+    assertNotNull(runner);
     SensorParserConfig actual = runner.getParserConfigurations().getSensorParserConfig("bro");
     SensorParserConfig expected = SensorParserConfig.fromBytes(broParserConfig.getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertEquals(expected, actual);
+    assertEquals(expected, actual);
   }
 
-  @Test(expected = ParseException.class)
-  public void testInitFromInvalidValue() throws Exception {
-    execute("PARSER_INIT('bro', 22)", StellarParserRunner.class);
-    Assert.fail("expected exception");
+  @Test
+  public void testInitFromInvalidValue() {
+    assertThrows(ParseException.class, () -> execute("PARSER_INIT('bro', 22)", StellarParserRunner.class));
   }
 
   @Test
@@ -263,21 +255,20 @@
 
     StellarParserRunner runner = execute("PARSER_INIT('bro')", StellarParserRunner.class);
 
-    Assert.assertNotNull(runner);
+    assertNotNull(runner);
     SensorParserConfig actual = runner.getParserConfigurations().getSensorParserConfig("bro");
     SensorParserConfig expected = SensorParserConfig.fromBytes(broParserConfig.getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertEquals(expected, actual);
+    assertEquals(expected, actual);
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testInitMissingFromZookeeper() throws Exception {
     // there is no config for 'bro' in zookeeper
     CuratorFramework zkClient = zkClientMissingPath("/metron/topology/parsers/bro");
     context.addCapability(Context.Capabilities.ZOOKEEPER_CLIENT, () -> zkClient);
 
-    execute("PARSER_INIT('bro')", StellarParserRunner.class);
-    Assert.fail("expected exception");
+    assertThrows(ParseException.class, () -> execute("PARSER_INIT('bro')", StellarParserRunner.class));
   }
 
   /**
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/StellarParserRunnerTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/StellarParserRunnerTest.java
index 07168b7..a167738 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/StellarParserRunnerTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/StellarParserRunnerTest.java
@@ -21,21 +21,15 @@
 import org.apache.metron.common.Constants;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.apache.metron.common.Constants.ErrorFields.ERROR_HASH;
-import static org.apache.metron.common.Constants.ErrorFields.ERROR_TYPE;
-import static org.apache.metron.common.Constants.ErrorFields.EXCEPTION;
-import static org.apache.metron.common.Constants.ErrorFields.MESSAGE;
-import static org.apache.metron.common.Constants.ErrorFields.STACK;
-import static org.apache.metron.common.Constants.Fields.DST_ADDR;
-import static org.apache.metron.common.Constants.Fields.DST_PORT;
-import static org.apache.metron.common.Constants.Fields.SRC_ADDR;
-import static org.apache.metron.common.Constants.Fields.SRC_PORT;
+import static org.apache.metron.common.Constants.ErrorFields.*;
+import static org.apache.metron.common.Constants.Fields.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class StellarParserRunnerTest {
 
@@ -95,15 +89,15 @@
         List<JSONObject> messages = runner.parse(toParse);
 
         // expect 3 successfully parsed message
-        Assert.assertEquals(3, messages.size());
+        assertEquals(3, messages.size());
         for(JSONObject message: messages) {
-            Assert.assertEquals("bro", message.get(Constants.SENSOR_TYPE));
-            Assert.assertTrue(message.containsKey(Constants.GUID));
-            Assert.assertEquals("10.122.196.204", message.get(SRC_ADDR.getName()));
-            Assert.assertEquals(33976L, message.get(SRC_PORT.getName()));
-            Assert.assertEquals("144.254.71.184", message.get(DST_ADDR.getName()));
-            Assert.assertEquals(53L, message.get(DST_PORT.getName()));
-            Assert.assertEquals("dns", message.get("protocol"));
+            assertEquals("bro", message.get(Constants.SENSOR_TYPE));
+            assertTrue(message.containsKey(Constants.GUID));
+            assertEquals("10.122.196.204", message.get(SRC_ADDR.getName()));
+            assertEquals(33976L, message.get(SRC_PORT.getName()));
+            assertEquals("144.254.71.184", message.get(DST_ADDR.getName()));
+            assertEquals(53L, message.get(DST_PORT.getName()));
+            assertEquals("dns", message.get("protocol"));
         }
     }
 
@@ -120,14 +114,14 @@
 
         // expect an error message to be returned
         JSONObject error = messages.get(0);
-        Assert.assertEquals(toParse.get(0), error.get("raw_message"));
-        Assert.assertEquals(Constants.ERROR_TYPE, error.get(Constants.SENSOR_TYPE));
-        Assert.assertEquals("parser_error", error.get(ERROR_TYPE.getName()));
-        Assert.assertTrue(error.containsKey(MESSAGE.getName()));
-        Assert.assertTrue(error.containsKey(EXCEPTION.getName()));
-        Assert.assertTrue(error.containsKey(STACK.getName()));
-        Assert.assertTrue(error.containsKey(ERROR_HASH.getName()));
-        Assert.assertTrue(error.containsKey(Constants.GUID));
+        assertEquals(toParse.get(0), error.get("raw_message"));
+        assertEquals(Constants.ERROR_TYPE, error.get(Constants.SENSOR_TYPE));
+        assertEquals("parser_error", error.get(ERROR_TYPE.getName()));
+        assertTrue(error.containsKey(MESSAGE.getName()));
+        assertTrue(error.containsKey(EXCEPTION.getName()));
+        assertTrue(error.containsKey(STACK.getName()));
+        assertTrue(error.containsKey(ERROR_HASH.getName()));
+        assertTrue(error.containsKey(Constants.GUID));
     }
 
     @Test
@@ -143,6 +137,6 @@
         List<JSONObject> messages = runner.parse(toParse);
 
         // toString() should tally the number of successes and failures
-        Assert.assertEquals("Parser{1 successful, 1 error(s)}", runner.toString());
+        assertEquals("Parser{1 successful, 1 error(s)}", runner.toString());
     }
 }
diff --git a/metron-platform/metron-management/src/test/java/org/apache/metron/management/ThreatTriageFunctionsTest.java b/metron-platform/metron-management/src/test/java/org/apache/metron/management/ThreatTriageFunctionsTest.java
index fc7558e..ad680fa 100644
--- a/metron-platform/metron-management/src/test/java/org/apache/metron/management/ThreatTriageFunctionsTest.java
+++ b/metron-platform/metron-management/src/test/java/org/apache/metron/management/ThreatTriageFunctionsTest.java
@@ -23,15 +23,10 @@
 import org.apache.metron.common.configuration.enrichment.threatintel.RiskLevelRule;
 import org.apache.metron.stellar.common.StellarProcessor;
 import org.apache.metron.stellar.common.shell.VariableResult;
-import org.apache.metron.stellar.dsl.Context;
-import org.apache.metron.stellar.dsl.DefaultVariableResolver;
-import org.apache.metron.stellar.dsl.MapVariableResolver;
-import org.apache.metron.stellar.dsl.ParseException;
-import org.apache.metron.stellar.dsl.StellarFunctions;
+import org.apache.metron.stellar.dsl.*;
 import org.apache.metron.threatintel.triage.ThreatTriageProcessor;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
 import java.util.HashMap;
@@ -41,6 +36,7 @@
 import static org.apache.metron.common.configuration.ConfigurationType.ENRICHMENT;
 import static org.apache.metron.management.EnrichmentConfigFunctionsTest.emptyTransformationsConfig;
 import static org.apache.metron.management.EnrichmentConfigFunctionsTest.toMap;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ThreatTriageFunctionsTest {
 
@@ -48,7 +44,7 @@
   Map<String, VariableResult> variables;
   Context context = null;
 
- @Before
+ @BeforeEach
   public void setup() {
     variables = ImmutableMap.of(
             "less", VariableResult.withExpression(true, "1 < 2"),
@@ -94,7 +90,7 @@
   public void testSetAggregation() {
     String newConfig = (String) run("THREAT_TRIAGE_SET_AGGREGATOR(config, 'MIN' )", toMap("config", configStr));
     SensorEnrichmentConfig sensorConfig = (SensorEnrichmentConfig) ENRICHMENT.deserialize(newConfig);
-    Assert.assertEquals("MIN", sensorConfig.getThreatIntel().getTriageConfig().getAggregator().toString());
+    assertEquals("MIN", sensorConfig.getThreatIntel().getTriageConfig().getAggregator().toString());
   }
 
 
@@ -110,10 +106,10 @@
 
     // validate the return configuration
     SensorEnrichmentConfig sensorConfig = (SensorEnrichmentConfig) ENRICHMENT.deserialize(newConfig);
-    Assert.assertEquals("MIN", sensorConfig.getThreatIntel().getTriageConfig().getAggregator().toString());
+    assertEquals("MIN", sensorConfig.getThreatIntel().getTriageConfig().getAggregator().toString());
 
     // validate that the engine was updated
-    Assert.assertEquals("MIN", engine.getSensorConfig().getThreatIntel().getTriageConfig().getAggregator().toString());
+    assertEquals("MIN", engine.getSensorConfig().getThreatIntel().getTriageConfig().getAggregator().toString());
   }
 
   @Test
@@ -126,10 +122,10 @@
     );
 
     List<RiskLevelRule> triageRules = getTriageRules(newConfig);
-    Assert.assertEquals(1, triageRules.size());
+    assertEquals(1, triageRules.size());
     RiskLevelRule rule = triageRules.get(0);
-    Assert.assertEquals(variables.get("less").getExpression().get(), rule.getRule() );
-    Assert.assertEquals("10", rule.getScoreExpression());
+    assertEquals(variables.get("less").getExpression().get(), rule.getRule() );
+    assertEquals("10", rule.getScoreExpression());
   }
 
   @Test
@@ -142,10 +138,10 @@
 
     // validate the returned configuration
     List<RiskLevelRule> triageRules = getTriageRules(newConfig);
-    Assert.assertEquals(1, triageRules.size());
+    assertEquals(1, triageRules.size());
 
     // validate that the engine was updated
-    Assert.assertEquals(1, engine.getSensorConfig().getThreatIntel().getTriageConfig().getRiskLevelRules().size());
+    assertEquals(1, engine.getSensorConfig().getThreatIntel().getTriageConfig().getRiskLevelRules().size());
   }
 
   @Test
@@ -164,24 +160,24 @@
     );
 
     List<RiskLevelRule> triageRules = getTriageRules(newConfig);
-    Assert.assertEquals(2, triageRules.size());
+    assertEquals(2, triageRules.size());
     RiskLevelRule less = triageRules.get(0);
-    Assert.assertEquals(variables.get("less").getExpression().get(), less.getRule());
-    Assert.assertEquals("10", less.getScoreExpression());
+    assertEquals(variables.get("less").getExpression().get(), less.getRule());
+    assertEquals("10", less.getScoreExpression());
 
     RiskLevelRule greater = triageRules.get(1);
-    Assert.assertEquals(variables.get("greater").getExpression().get(), greater.getRule());
-    Assert.assertEquals("20", greater.getScoreExpression());
+    assertEquals(variables.get("greater").getExpression().get(), greater.getRule());
+    assertEquals("20", greater.getScoreExpression());
   }
 
-  @Test(expected=ParseException.class)
+  @Test
   public void testAddMalformed() {
-    Object o = run(
-            "THREAT_TRIAGE_ADD(config, { 'rule': SHELL_GET_EXPRESSION('foo'), 'score' : 10 } )"
-            , toMap("config", configStr
-            )
-    );
-    Assert.assertEquals(configStr, o);
+    assertThrows(
+        ParseException.class,
+        () ->
+            run(
+                "THREAT_TRIAGE_ADD(config, { 'rule': SHELL_GET_EXPRESSION('foo'), 'score' : 10 } )",
+                toMap("config", configStr)));
   }
 
   @Test
@@ -199,10 +195,10 @@
     );
 
     List<RiskLevelRule> triageRules = getTriageRules(newConfig);
-    Assert.assertEquals(1, triageRules.size());
+    assertEquals(1, triageRules.size());
     RiskLevelRule rule = triageRules.get(0);
-    Assert.assertEquals(variables.get("less").getExpression().get(), rule.getRule() );
-    Assert.assertEquals("10", rule.getScoreExpression());
+    assertEquals(variables.get("less").getExpression().get(), rule.getRule() );
+    assertEquals("10", rule.getScoreExpression());
   }
 
   @Test
@@ -219,7 +215,7 @@
             toMap("config", newConfig));
 
     List<RiskLevelRule> triageRules = getTriageRules(newConfig);
-    Assert.assertEquals(2, triageRules.size());
+    assertEquals(2, triageRules.size());
   }
 
   @Test
@@ -237,7 +233,7 @@
     run("THREAT_TRIAGE_ADD(engine, { 'name':'rule2', 'rule':'value < 4', 'score':10 } )", vars);
 
     List<RiskLevelRule> triageRules = engine.getRiskLevelRules();
-    Assert.assertEquals(2, triageRules.size());
+    assertEquals(2, triageRules.size());
   }
 
   @Test
@@ -255,10 +251,10 @@
     );
 
     List<RiskLevelRule> triageRules = getTriageRules(newConfig);
-    Assert.assertEquals(1, triageRules.size());
+    assertEquals(1, triageRules.size());
     RiskLevelRule rule = triageRules.get(0);
-    Assert.assertEquals(variables.get("less").getExpression().get(), rule.getRule() );
-    Assert.assertEquals("10", rule.getScoreExpression());
+    assertEquals(variables.get("less").getExpression().get(), rule.getRule() );
+    assertEquals("10", rule.getScoreExpression());
   }
 
   @Test
@@ -280,10 +276,10 @@
             "SHELL_GET_EXPRESSION('greater')] )", vars);
 
     List<RiskLevelRule> triageRules = engine.getRiskLevelRules();
-    Assert.assertEquals(1, triageRules.size());
+    assertEquals(1, triageRules.size());
     RiskLevelRule rule = triageRules.get(0);
-    Assert.assertEquals(variables.get("less").getExpression().get(), rule.getRule() );
-    Assert.assertEquals("10", rule.getScoreExpression());
+    assertEquals(variables.get("less").getExpression().get(), rule.getRule() );
+    assertEquals("10", rule.getScoreExpression());
   }
 
   @Test
@@ -300,7 +296,7 @@
     );
 
     List<RiskLevelRule> triageRules = getTriageRules(newConfig);
-    Assert.assertEquals(0, triageRules.size());
+    assertEquals(0, triageRules.size());
   }
 
   @Test
@@ -319,14 +315,14 @@
     );
 
     List<RiskLevelRule> triageRules = getTriageRules(newConfig);
-    Assert.assertEquals(2, triageRules.size());
+    assertEquals(2, triageRules.size());
     RiskLevelRule less = triageRules.get(0);
-    Assert.assertEquals(variables.get("less").getExpression().get(), less.getRule() );
-    Assert.assertEquals("10", less.getScoreExpression());
+    assertEquals(variables.get("less").getExpression().get(), less.getRule() );
+    assertEquals("10", less.getScoreExpression());
 
     RiskLevelRule greater = triageRules.get(1);
-    Assert.assertEquals(variables.get("greater").getExpression().get(), greater.getRule() );
-    Assert.assertEquals("20", greater.getScoreExpression());
+    assertEquals(variables.get("greater").getExpression().get(), greater.getRule() );
+    assertEquals("20", greater.getScoreExpression());
   }
 
   /**
@@ -356,7 +352,7 @@
             , toMap("config",newConfig
             )
     );
-    Assert.assertEquals(testPrintExpected, out);
+    assertEquals(testPrintExpected, out);
   }
 
   @Test
@@ -375,7 +371,7 @@
 
     // print
     String out = (String) run("THREAT_TRIAGE_PRINT(engine)", vars);
-    Assert.assertEquals(testPrintExpected, out);
+    assertEquals(testPrintExpected, out);
   }
 
 
@@ -396,16 +392,15 @@
             , toMap("config",configStr
             )
     );
-    Assert.assertEquals(testPrintEmptyExpected, out);
+    assertEquals(testPrintEmptyExpected, out);
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testPrintNull() {
     Map<String,Object> variables = new HashMap<String,Object>(){{
       put("config", null);
     }};
-    String out = (String) run("THREAT_TRIAGE_PRINT(config)", variables);
-    Assert.assertEquals(out, testPrintEmptyExpected);
+    assertThrows(ParseException.class, () -> run("THREAT_TRIAGE_PRINT(config)", variables));
   }
 
   /**
@@ -421,12 +416,12 @@
   @Test
   public void testTriageInitNoArg() {
     Object result = run("THREAT_TRIAGE_INIT()");
-    Assert.assertNotNull(result);
-    Assert.assertTrue(result instanceof ThreatTriageProcessor);
+    assertNotNull(result);
+    assertTrue(result instanceof ThreatTriageProcessor);
 
     // there should be no triage rules defined
     ThreatTriageProcessor engine = (ThreatTriageProcessor) result;
-    Assert.assertEquals(0, engine.getRiskLevelRules().size());
+    assertEquals(0, engine.getRiskLevelRules().size());
   }
 
   @Test
@@ -440,17 +435,17 @@
     Object result = run("THREAT_TRIAGE_INIT(confWithRule)",
             toMap("confWithRule", confWithRule));
 
-    Assert.assertNotNull(result);
-    Assert.assertTrue(result instanceof ThreatTriageProcessor);
+    assertNotNull(result);
+    assertTrue(result instanceof ThreatTriageProcessor);
 
     // validate that there is 1 triage rule
     ThreatTriageProcessor engine = (ThreatTriageProcessor) result;
-    Assert.assertEquals(1, engine.getRiskLevelRules().size());
+    assertEquals(1, engine.getRiskLevelRules().size());
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testTriageInitWithBadArg() {
-    run("THREAT_TRIAGE_INIT(missing)");
+      assertThrows(ParseException.class, () -> run("THREAT_TRIAGE_INIT(missing)"));
   }
 
   @Test
@@ -465,17 +460,17 @@
 
     // score the message
     Object result = run("THREAT_TRIAGE_SCORE(msg, engine)", vars);
-    Assert.assertNotNull(result);
-    Assert.assertTrue(result instanceof Map);
+    assertNotNull(result);
+    assertTrue(result instanceof Map);
 
     // validate the rules that were scored
     Map<String, Object> score = (Map) result;
-    Assert.assertEquals(0, ((List) score.get(ThreatTriageFunctions.RULES_KEY)).size());
+    assertEquals(0, ((List) score.get(ThreatTriageFunctions.RULES_KEY)).size());
 
     // validate the total score
     Object totalScore = score.get(ThreatTriageFunctions.SCORE_KEY);
-    Assert.assertTrue(totalScore instanceof Double);
-    Assert.assertEquals(0.0, (Double) totalScore, 0.001);
+    assertTrue(totalScore instanceof Double);
+    assertEquals(0.0, (Double) totalScore, 0.001);
   }
 
   @Test
@@ -495,20 +490,20 @@
 
     // score the message
     Object result = run("THREAT_TRIAGE_SCORE(msg, engine)", vars);
-    Assert.assertNotNull(result);
-    Assert.assertTrue(result instanceof Map);
+    assertNotNull(result);
+    assertTrue(result instanceof Map);
 
     // validate the rules that were scored
     Map<String, Object> score = (Map) result;
-    Assert.assertEquals(1, ((List) score.get(ThreatTriageFunctions.RULES_KEY)).size());
+    assertEquals(1, ((List) score.get(ThreatTriageFunctions.RULES_KEY)).size());
 
     // validate the total score
     Object totalScore = score.get(ThreatTriageFunctions.SCORE_KEY);
-    Assert.assertTrue(totalScore instanceof Double);
-    Assert.assertEquals(10.0, (Double) totalScore, 0.001);
+    assertTrue(totalScore instanceof Double);
+    assertEquals(10.0, (Double) totalScore, 0.001);
 
     // validate the aggregator
-    Assert.assertEquals("MAX", score.get(ThreatTriageFunctions.AGG_KEY));
+    assertEquals("MAX", score.get(ThreatTriageFunctions.AGG_KEY));
   }
 
   @Test
@@ -528,23 +523,23 @@
 
     // score the message
     Object result = run("THREAT_TRIAGE_SCORE(msg, engine)", vars);
-    Assert.assertNotNull(result);
-    Assert.assertTrue(result instanceof Map);
+    assertNotNull(result);
+    assertTrue(result instanceof Map);
 
     // validate the rules that were scored
     Map<String, Object> score = (Map) result;
-    Assert.assertEquals(1, ((List) score.get(ThreatTriageFunctions.RULES_KEY)).size());
+    assertEquals(1, ((List) score.get(ThreatTriageFunctions.RULES_KEY)).size());
 
     // validate the total score
     Object totalScore = score.get(ThreatTriageFunctions.SCORE_KEY);
-    Assert.assertTrue(totalScore instanceof Double);
-    Assert.assertEquals(220.0, (Double) totalScore, 0.001);
+    assertTrue(totalScore instanceof Double);
+    assertEquals(220.0, (Double) totalScore, 0.001);
 
     // validate the aggregator
-    Assert.assertEquals("MAX", score.get(ThreatTriageFunctions.AGG_KEY));
+    assertEquals("MAX", score.get(ThreatTriageFunctions.AGG_KEY));
   }
 
-  @Test(expected = Exception.class)
+  @Test
   public void testTriageScoreWithNoMessage() {
 
     // add a triage rule
@@ -559,7 +554,7 @@
     vars.put("engine", engine);
 
     // score the message
-    run("THREAT_TRIAGE_SCORE(11, engine)", vars);
+    assertThrows(Exception.class, () -> run("THREAT_TRIAGE_SCORE(11, engine)", vars));
   }
 
   @Test
@@ -573,11 +568,11 @@
 
     // score the message
     Object result = run("THREAT_TRIAGE_CONFIG(engine)", vars);
-    Assert.assertNotNull(result);
-    Assert.assertTrue(result instanceof String);
+    assertNotNull(result);
+    assertTrue(result instanceof String);
 
     // validate the configuration
     String json = (String) result;
-    Assert.assertEquals(emptyTransformationsConfig(), json);
+    assertEquals(emptyTransformationsConfig(), json);
   }
 }
diff --git a/metron-platform/metron-parsing/metron-parsers-common/pom.xml b/metron-platform/metron-parsing/metron-parsers-common/pom.xml
index 4d0c489..282c615 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/pom.xml
+++ b/metron-platform/metron-parsing/metron-parsers-common/pom.xml
@@ -118,9 +118,15 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${global_junit_version}</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${global_junit_jupiter_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -203,6 +209,18 @@
             <artifactId>simple-syslog</artifactId>
             <version>${global_simple_syslog_version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.adrianwalker</groupId>
+            <artifactId>multiline-string</artifactId>
+            <version>0.1.2</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-migrationsupport</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
     <build>
         <plugins>
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/main/java/org/apache/metron/parsers/ParserRunnerImpl.java b/metron-platform/metron-parsing/metron-parsers-common/src/main/java/org/apache/metron/parsers/ParserRunnerImpl.java
index edab2b9..9b05094 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/main/java/org/apache/metron/parsers/ParserRunnerImpl.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/main/java/org/apache/metron/parsers/ParserRunnerImpl.java
@@ -201,18 +201,12 @@
               sensorType, parserConfig.getParserClassName(), parserConfig.getFilterClassName());
 
       // create message parser
-      MessageParser<JSONObject> parser = ReflectionUtils
-              .createInstance(parserConfig.getParserClassName());
+      MessageParser<JSONObject> parser = createParserInstance(parserConfig);
 
       // create message filter
       MessageFilter<JSONObject> filter = null;
       parserConfig.getParserConfig().putIfAbsent("stellarContext", stellarContext);
-      if (!StringUtils.isEmpty(parserConfig.getFilterClassName())) {
-        filter = Filters.get(
-                parserConfig.getFilterClassName(),
-                parserConfig.getParserConfig()
-        );
-      }
+      filter = getMessageFilter(parserConfig, filter);
 
       parser.configure(parserConfig.getParserConfig());
       parser.init();
@@ -220,6 +214,22 @@
     }
   }
 
+  // Can be mocked for testing
+  protected MessageParser<JSONObject> createParserInstance(SensorParserConfig parserConfig) {
+    return ReflectionUtils.createInstance(parserConfig.getParserClassName());
+  }
+
+  // Can be mocked for testing
+  protected MessageFilter<JSONObject> getMessageFilter(SensorParserConfig parserConfig, MessageFilter<JSONObject> filter) {
+    if (!StringUtils.isEmpty(parserConfig.getFilterClassName())) {
+      filter = Filters.get(
+              parserConfig.getFilterClassName(),
+              parserConfig.getParserConfig()
+      );
+    }
+    return filter;
+  }
+
   /**
    * Post-processes parsed messages by:
    * <ul>
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/filters/FiltersTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/filters/FiltersTest.java
index 2f3784a..ff9df9a 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/filters/FiltersTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/filters/FiltersTest.java
@@ -19,31 +19,32 @@
 package org.apache.metron.filters;
 
 import com.google.common.collect.ImmutableMap;
-import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.parsers.filters.Filters;
 import org.apache.metron.parsers.interfaces.MessageFilter;
+import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class FiltersTest {
   @Test
   public void testDefault() {
-    Assert.assertNull(Filters.get("DEFAULT", null));
+    assertNull(Filters.get("DEFAULT", null));
   }
 
   @Test
-  public void testSingleQueryFilter() throws Exception {
+  public void testSingleQueryFilter() {
     {
       Map<String, Object> config = new HashMap<String, Object>() {{
         put("filter.query", "exists(foo)");
       }};
       MessageFilter<JSONObject> filter = Filters.get(Filters.STELLAR.name(), config);
-      Assert.assertTrue(filter.emit(new JSONObject(ImmutableMap.of("foo", 1)), Context.EMPTY_CONTEXT()));
-      Assert.assertFalse(filter.emit(new JSONObject(ImmutableMap.of("bar", 1)), Context.EMPTY_CONTEXT()));
+      assertTrue(filter.emit(new JSONObject(ImmutableMap.of("foo", 1)), Context.EMPTY_CONTEXT()));
+      assertFalse(filter.emit(new JSONObject(ImmutableMap.of("bar", 1)), Context.EMPTY_CONTEXT()));
     }
   }
 
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/BasicParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/BasicParserTest.java
index 05ac15c..5512c63 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/BasicParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/BasicParserTest.java
@@ -18,27 +18,27 @@
 
 package org.apache.metron.parsers;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.not;
-import static org.junit.Assert.assertThat;
+import org.apache.commons.io.FileUtils;
+import org.apache.metron.parsers.interfaces.MessageParser;
+import org.apache.metron.parsers.interfaces.MessageParserResult;
+import org.json.simple.JSONObject;
+import org.junit.Rule;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
+import org.junit.rules.TemporaryFolder;
 
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import org.apache.commons.io.FileUtils;
-import org.apache.metron.parsers.interfaces.MessageParser;
-import org.apache.metron.parsers.interfaces.MessageParserResult;
-import org.json.simple.JSONObject;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
+import java.util.*;
 
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.not;
+import static org.hamcrest.MatcherAssert.assertThat;
+
+@EnableRuleMigrationSupport
 public class BasicParserTest {
 
   private static final String KEY1 = "key1";
@@ -60,8 +60,8 @@
       String message = new String(parseMessage, getReadCharset());
       Map<String, Object> out = new HashMap<>();
       out.put(KEY1, message);
-      MessageParserResult<JSONObject> result = new DefaultMessageParserResult<JSONObject>(
-          Arrays.asList(new JSONObject(out)));
+      MessageParserResult<JSONObject> result = new DefaultMessageParserResult<>(
+              Collections.singletonList(new JSONObject(out)));
       return Optional.of(result);
     }
   }
@@ -84,8 +84,8 @@
   @Rule
   public TemporaryFolder tempFolder = new TemporaryFolder();
 
-  @Before
-  public void setup() throws IOException, InterruptedException {
+  @BeforeEach
+  public void setup() throws IOException {
     tempFolder.create();
     parserWithCharset = new SomeParserWithCharset();
     parserNoCharset = new SomeParserNoCharset();
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/GrokParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/GrokParserTest.java
index 352de0a..1e43a4d 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/GrokParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/GrokParserTest.java
@@ -17,27 +17,30 @@
  */
 package org.apache.metron.parsers;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.fail;
+
+
 import com.google.common.collect.MapDifference;
 import com.google.common.collect.Maps;
 import java.nio.charset.StandardCharsets;
-import org.apache.metron.parsers.interfaces.MessageParserResult;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
-
-import java.io.IOException;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
+import org.apache.metron.parsers.interfaces.MessageParserResult;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+import org.junit.jupiter.api.Test;
 
 public abstract class GrokParserTest {
 
   @Test
-  public void test() throws IOException, ParseException {
+  public void test() throws ParseException {
 
     Map<String, Object> parserConfig = new HashMap<>();
     parserConfig.put("grokPath", getGrokPath());
@@ -57,10 +60,10 @@
       JSONObject expected = (JSONObject) jsonParser.parse(e.getValue());
       byte[] rawMessage = e.getKey().getBytes(StandardCharsets.UTF_8);
       Optional<MessageParserResult<JSONObject>> resultOptional = grokParser.parseOptionalResult(rawMessage);
-      Assert.assertNotNull(resultOptional);
-      Assert.assertTrue(resultOptional.isPresent());
+      assertNotNull(resultOptional);
+      assertTrue(resultOptional.isPresent());
       List<JSONObject> parsedList = resultOptional.get().getMessages();
-      Assert.assertEquals(1, parsedList.size());
+      assertEquals(1, parsedList.size());
       compare(expected, parsedList.get(0));
     }
 
@@ -68,8 +71,12 @@
 
   public boolean compare(JSONObject expected, JSONObject actual) {
     MapDifference mapDifferences = Maps.difference(expected, actual);
-    if (mapDifferences.entriesOnlyOnLeft().size() > 0) Assert.fail("Expected JSON has extra parameters: " + mapDifferences.entriesOnlyOnLeft());
-    if (mapDifferences.entriesOnlyOnRight().size() > 0) Assert.fail("Actual JSON has extra parameters: " + mapDifferences.entriesOnlyOnRight());
+    if (mapDifferences.entriesOnlyOnLeft().size() > 0) {
+      fail("Expected JSON has extra parameters: " + mapDifferences.entriesOnlyOnLeft());
+    }
+    if (mapDifferences.entriesOnlyOnRight().size() > 0) {
+      fail("Actual JSON has extra parameters: " + mapDifferences.entriesOnlyOnRight());
+    }
     Map actualDifferences = new HashMap();
     if (mapDifferences.entriesDiffering().size() > 0) {
       Map differences = Collections.unmodifiableMap(mapDifferences.entriesDiffering());
@@ -87,7 +94,9 @@
         }
       }
     }
-    if (actualDifferences.size() > 0) Assert.fail("Expected and Actual JSON values don't match: " + actualDifferences);
+    if (actualDifferences.size() > 0) {
+      fail("Expected and Actual JSON values don't match: " + actualDifferences);
+    }
     return true;
   }
 
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MessageParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MessageParserTest.java
index 1d4de5b..65bc357 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MessageParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MessageParserTest.java
@@ -18,19 +18,15 @@
 
 package org.apache.metron.parsers;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.apache.metron.parsers.interfaces.MessageParserResult;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MessageParserTest {
 
@@ -51,29 +47,29 @@
   }
 
   @Test
-  public void testNullable() throws Exception {
+  public void testNullable() {
     MessageParser parser = new TestMessageParser() {
       @Override
       public List<JSONObject> parse(byte[] rawMessage) {
         return null;
       }
     };
-    Assert.assertNotNull(parser.parseOptionalResult(null));
-    Assert.assertFalse(parser.parseOptionalResult(null).isPresent());
+    assertNotNull(parser.parseOptionalResult(null));
+    assertFalse(parser.parseOptionalResult(null).isPresent());
   }
 
   @Test
-  public void testNotNullable() throws Exception {
+  public void testNotNullable() {
     MessageParser<JSONObject> parser = new TestMessageParser() {
       @Override
       public List<JSONObject> parse(byte[] rawMessage) {
         return new ArrayList<>();
       }
     };
-    Assert.assertNotNull(parser.parseOptionalResult(null));
+    assertNotNull(parser.parseOptionalResult(null));
     Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult(null);
-    Assert.assertTrue(ret.isPresent());
-    Assert.assertEquals(0, ret.get().getMessages().size());
+    assertTrue(ret.isPresent());
+    assertEquals(0, ret.get().getMessages().size());
   }
 
   @Test
@@ -87,9 +83,9 @@
     };
     Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult("message".getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertTrue(ret.isPresent());
-    Assert.assertEquals(1, ret.get().getMessages().size());
-    Assert.assertEquals(message, ret.get().getMessages().get(0));
+    assertTrue(ret.isPresent());
+    assertEquals(1, ret.get().getMessages().size());
+    assertEquals(message, ret.get().getMessages().get(0));
   }
 
   @Test
@@ -103,9 +99,9 @@
     };
     Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult("message".getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertTrue(ret.isPresent());
-    Assert.assertEquals(1, ret.get().getMessages().size());
-    Assert.assertEquals(message, ret.get().getMessages().get(0));
+    assertTrue(ret.isPresent());
+    assertEquals(1, ret.get().getMessages().size());
+    assertEquals(message, ret.get().getMessages().get(0));
   }
 
   @Test
@@ -118,9 +114,9 @@
     };
     Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult("message".getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertTrue(ret.isPresent());
-    Assert.assertTrue(ret.get().getMasterThrowable().isPresent());
-    Assert.assertEquals("parse exception", ret.get().getMasterThrowable().get().getMessage());
+    assertTrue(ret.isPresent());
+    assertTrue(ret.get().getMasterThrowable().isPresent());
+    assertEquals("parse exception", ret.get().getMasterThrowable().get().getMessage());
   }
 
   @Test
@@ -133,9 +129,9 @@
     };
     Optional<MessageParserResult<JSONObject>> ret = parser.parseOptionalResult("message".getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertTrue(ret.isPresent());
-    Assert.assertTrue(ret.get().getMasterThrowable().isPresent());
-    Assert.assertEquals("parse exception", ret.get().getMasterThrowable().get().getMessage());
+    assertTrue(ret.isPresent());
+    assertTrue(ret.get().getMasterThrowable().isPresent());
+    assertEquals("parse exception", ret.get().getMasterThrowable().get().getMessage());
   }
 
 }
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MultiLineGrokParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MultiLineGrokParserTest.java
index 8d346c3..e69b652 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MultiLineGrokParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MultiLineGrokParserTest.java
@@ -17,35 +17,29 @@
  */
 package org.apache.metron.parsers;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.commons.io.IOUtils;
 import org.apache.metron.parsers.interfaces.MessageParserResult;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MultiLineGrokParserTest {
 
   /**
    * Test that if a byte[] with multiple lines of log is passed in
    * it will be parsed into the correct number of messages.
-   * @throws IOException if we can't read from disk
-   * @throws ParseException if we can't parse
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void testLegacyInterfaceReturnsMultiline() throws IOException, ParseException {
+  public void testLegacyInterfaceReturnsMultiline() {
 
     Map<String, Object> parserConfig = new HashMap<>();
     parserConfig.put("grokPath", getGrokPath());
@@ -63,10 +57,10 @@
     for (Map.Entry<String, String> e : testData.entrySet()) {
       byte[] rawMessage = e.getKey().getBytes(StandardCharsets.UTF_8);
       Optional<MessageParserResult<JSONObject>> resultOptional = grokParser.parseOptionalResult(rawMessage);
-      Assert.assertNotNull(resultOptional);
-      Assert.assertTrue(resultOptional.isPresent());
+      assertNotNull(resultOptional);
+      assertTrue(resultOptional.isPresent());
       List<JSONObject> parsedList = resultOptional.get().getMessages();
-      Assert.assertEquals(10, parsedList.size());
+      assertEquals(10, parsedList.size());
     }
   }
 
@@ -74,12 +68,10 @@
    * Test that if a byte[] with multiple lines of log is passed in
    * it will be parsed into the correct number of messages using the
    * parseOptionalResult call.
-   * @throws IOException if we can't read from disk
-   * @throws ParseException if we can't parse
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void testOptionalResultReturnsMultiline() throws IOException, ParseException {
+  public void testOptionalResultReturnsMultiline() {
 
     Map<String, Object> parserConfig = new HashMap<>();
     parserConfig.put("grokPath", getGrokPath());
@@ -98,13 +90,13 @@
     for (Map.Entry<String, String> e : testData.entrySet()) {
       byte[] rawMessage = e.getKey().getBytes(StandardCharsets.UTF_8);
       Optional<MessageParserResult<JSONObject>> resultOptional = grokParser.parseOptionalResult(rawMessage);
-      Assert.assertTrue(resultOptional.isPresent());
+      assertTrue(resultOptional.isPresent());
       Optional<Throwable> throwableOptional = resultOptional.get().getMasterThrowable();
       List<JSONObject>  resultList = resultOptional.get().getMessages();
       Map<Object,Throwable> errorMap = resultOptional.get().getMessageThrowables();
-      Assert.assertFalse(throwableOptional.isPresent());
-      Assert.assertEquals(0, errorMap.size());
-      Assert.assertEquals(10, resultList.size());
+      assertFalse(throwableOptional.isPresent());
+      assertEquals(0, errorMap.size());
+      assertEquals(10, resultList.size());
     }
   }
 
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MultiLineWithErrorsGrokParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MultiLineWithErrorsGrokParserTest.java
index 7ce0802..d3dcac0 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MultiLineWithErrorsGrokParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/MultiLineWithErrorsGrokParserTest.java
@@ -17,35 +17,29 @@
  */
 package org.apache.metron.parsers;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.commons.io.IOUtils;
 import org.apache.metron.parsers.interfaces.MessageParserResult;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MultiLineWithErrorsGrokParserTest {
 
   /**
    * Test that if a byte[] with multiple lines of log is passed in
    * it will be parsed into the correct number of messages.
-   * @throws IOException if we can't read from disk
-   * @throws ParseException if we can't parse
    */
-  @Test(expected = RuntimeException.class)
+  @Test
   @SuppressWarnings("unchecked")
-  public void testLegacyInterfaceThrowsOneExceptionWithMultiline() throws IOException, ParseException {
+  public void testLegacyInterfaceThrowsOneExceptionWithMultiline() {
 
     Map<String, Object> parserConfig = new HashMap<>();
     parserConfig.put("grokPath", getGrokPath());
@@ -63,7 +57,7 @@
     Map<String, String> testData = getTestData();
     for (Map.Entry<String, String> e : testData.entrySet()) {
       byte[] rawMessage = e.getKey().getBytes(StandardCharsets.UTF_8);
-      List<JSONObject> parsedList = grokParser.parse(rawMessage);
+      assertThrows(RuntimeException.class, () -> grokParser.parse(rawMessage));
     }
   }
 
@@ -71,12 +65,10 @@
    * Test that if a byte[] with multiple lines of log is passed in
    * it will be parsed into the correct number of messages using the
    * parseOptionalResult call.
-   * @throws IOException if we can't read from disk
-   * @throws ParseException if we can't parse
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void testResultInterfaceReturnsErrorsAndMessagesWithMultiline() throws IOException, ParseException {
+  public void testResultInterfaceReturnsErrorsAndMessagesWithMultiline() {
 
     Map<String, Object> parserConfig = new HashMap<>();
     parserConfig.put("grokPath", getGrokPath());
@@ -95,13 +87,13 @@
     for (Map.Entry<String, String> e : testData.entrySet()) {
       byte[] rawMessage = e.getKey().getBytes(StandardCharsets.UTF_8);
       Optional<MessageParserResult<JSONObject>> resultOptional = grokParser.parseOptionalResult(rawMessage);
-      Assert.assertTrue(resultOptional.isPresent());
+      assertTrue(resultOptional.isPresent());
       Optional<Throwable> throwableOptional = resultOptional.get().getMasterThrowable();
       List<JSONObject>  resultList = resultOptional.get().getMessages();
       Map<Object,Throwable> errorMap = resultOptional.get().getMessageThrowables();
-      Assert.assertFalse(throwableOptional.isPresent());
-      Assert.assertEquals(3, errorMap.size());
-      Assert.assertEquals(10, resultList.size());
+      assertFalse(throwableOptional.isPresent());
+      assertEquals(3, errorMap.size());
+      assertEquals(10, resultList.size());
     }
   }
 
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/ParserRunnerImplTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/ParserRunnerImplTest.java
index 88996d8..01582a1 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/ParserRunnerImplTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/ParserRunnerImplTest.java
@@ -17,24 +17,6 @@
  */
 package org.apache.metron.parsers;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
-
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Optional;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.Constants.Fields;
@@ -43,31 +25,24 @@
 import org.apache.metron.common.error.MetronError;
 import org.apache.metron.common.message.metadata.RawMessage;
 import org.apache.metron.common.utils.JSONUtils;
-import org.apache.metron.common.utils.ReflectionUtils;
 import org.apache.metron.parsers.ParserRunnerImpl.ProcessResult;
-import org.apache.metron.parsers.filters.Filters;
 import org.apache.metron.parsers.filters.StellarFilter;
 import org.apache.metron.parsers.interfaces.MessageFilter;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.apache.metron.parsers.interfaces.MessageParserResult;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ParserRunnerImpl.class, ReflectionUtils.class, Filters.class})
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
+
 public class ParserRunnerImplTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   /**
    {
    "fieldValidations" : [
@@ -117,7 +92,8 @@
   private ParserRunnerImpl parserRunner;
 
 
-  @Before
+  @BeforeEach
+  @SuppressWarnings("unchecked")
   public void setup() throws IOException {
     parserConfigurations = new ParserConfigurations();
     SensorParserConfig broConfig = SensorParserConfig.fromBytes(broConfigString.getBytes(
@@ -131,95 +107,96 @@
     broParser = mock(MessageParser.class);
     snortParser = mock(MessageParser.class);
     stellarFilter = mock(StellarFilter.class);
-    mockStatic(ReflectionUtils.class);
-    mockStatic(Filters.class);
+//    mockStatic(ReflectionUtils.class);
+//    mockStatic(Filters.class);
     when(broParser.getReadCharset()).thenReturn(StandardCharsets.UTF_8);
 
-    when(ReflectionUtils.createInstance("org.apache.metron.parsers.bro.BasicBroParser")).thenReturn(broParser);
-    when(ReflectionUtils.createInstance("org.apache.metron.parsers.snort.BasicSnortParser")).thenReturn(snortParser);
-    when(Filters.get("org.apache.metron.parsers.filters.StellarFilter", broConfig.getParserConfig()))
-            .thenReturn(stellarFilter);
+//    when(ReflectionUtils.createInstance("org.apache.metron.parsers.bro.BasicBroParser")).thenReturn(broParser);
+//    when(ReflectionUtils.createInstance("org.apache.metron.parsers.snort.BasicSnortParser")).thenReturn(snortParser);
+//    when(Filters.get("org.apache.metron.parsers.filters.StellarFilter", broConfig.getParserConfig()))
+//            .thenReturn(stellarFilter);
 
   }
 
   @Test
   public void shouldThrowExceptionOnEmptyParserSupplier() {
-    exception.expect(IllegalStateException.class);
-    exception.expectMessage("A parser config supplier must be set before initializing the ParserRunner.");
-
-    parserRunner.init(null, null);
+    IllegalStateException e = assertThrows(IllegalStateException.class, () -> parserRunner.init(null, null));
+    assertEquals("A parser config supplier must be set before initializing the ParserRunner.", e.getMessage());
   }
 
   @Test
   public void shouldThrowExceptionOnEmptyStellarContext() {
-    exception.expect(IllegalStateException.class);
-    exception.expectMessage("A stellar context must be set before initializing the ParserRunner.");
+    IllegalStateException e = assertThrows(IllegalStateException.class, () -> parserRunner.init(() -> parserConfigurations, null));
+    assertEquals("A stellar context must be set before initializing the ParserRunner.", e.getMessage());
 
-    parserRunner.init(() -> parserConfigurations, null);
   }
 
   @Test
   public void initShouldThrowExceptionOnMissingSensorParserConfig() {
-    exception.expect(IllegalStateException.class);
-    exception.expectMessage("Could not initialize parsers.  Cannot find configuration for sensor test.");
-
     parserRunner = new ParserRunnerImpl(new HashSet<String>() {{
       add("test");
     }});
 
-    parserRunner.init(() -> parserConfigurations, mock(Context.class));
+    IllegalStateException e = assertThrows(IllegalStateException.class, () -> parserRunner.init(() -> parserConfigurations, mock(Context.class)));
+    assertEquals("Could not initialize parsers.  Cannot find configuration for sensor test.", e.getMessage());
   }
 
   @Test
   public void executeShouldThrowExceptionOnMissingSensorParserConfig() {
-    exception.expect(IllegalStateException.class);
-    exception.expectMessage("Could not execute parser.  Cannot find configuration for sensor test.");
-
     parserRunner = new ParserRunnerImpl(new HashSet<String>() {{
       add("test");
     }});
 
-    parserRunner.execute("test", mock(RawMessage.class), parserConfigurations);
+    IllegalStateException e = assertThrows(IllegalStateException.class, () -> parserRunner.execute("test", mock(RawMessage.class), parserConfigurations));
+    assertEquals("Could not execute parser.  Cannot find configuration for sensor test.", e.getMessage());
   }
 
   @Test
-  public void shouldInit() throws Exception {
+  public void shouldInit() {
     Context stellarContext = mock(Context.class);
-    Map<String, Object> broParserConfig = parserConfigurations.getSensorParserConfig("bro").getParserConfig();
-    Map<String, Object> snortParserConfig = parserConfigurations.getSensorParserConfig("snort").getParserConfig();
+    SensorParserConfig broParserConfig = parserConfigurations.getSensorParserConfig("bro");
+    SensorParserConfig snortParserConfig = parserConfigurations.getSensorParserConfig("snort");
 
+    // Effectively using a spy to avoid calling static methods. However, we're using mock with settings to use the constuctor.
+    // This forces the use of the doReturn Mockito declaration.
+    // This is all because the configurations use parsers from metron-parsers, which are not available in metron-parsers-common
+    parserRunner = mock(ParserRunnerImpl.class,
+            withSettings().useConstructor(new HashSet<>(Arrays.asList("bro", "snort"))).defaultAnswer(CALLS_REAL_METHODS));
+    doReturn(broParser).when(parserRunner).createParserInstance(broParserConfig);
+    doReturn(snortParser).when(parserRunner).createParserInstance(snortParserConfig);
+    doReturn(stellarFilter).when(parserRunner).getMessageFilter(eq(broParserConfig), any());
     parserRunner.init(() -> parserConfigurations, stellarContext);
 
     {
       // Verify Stellar context
-      Assert.assertEquals(stellarContext, parserRunner.getStellarContext());
+      assertEquals(stellarContext, parserRunner.getStellarContext());
     }
 
     Map<String, ParserComponent> sensorToParserComponentMap = parserRunner.getSensorToParserComponentMap();
     {
       // Verify Bro parser initialization
-      Assert.assertEquals(2, sensorToParserComponentMap.size());
+      assertEquals(2, sensorToParserComponentMap.size());
       ParserComponent broComponent = sensorToParserComponentMap.get("bro");
-      Assert.assertEquals(broParser, broComponent.getMessageParser());
-      Assert.assertEquals(stellarFilter, broComponent.getFilter());
+      assertEquals(broParser, broComponent.getMessageParser());
+      assertEquals(stellarFilter, broComponent.getFilter());
       verify(broParser, times(1)).init();
-      verify(broParser, times(1)).configure(broParserConfig);
+      verify(broParser, times(1)).configure(broParserConfig.getParserConfig());
       verifyNoMoreInteractions(broParser);
       verifyNoMoreInteractions(stellarFilter);
     }
     {
       // Verify Snort parser initialization
       ParserComponent snortComponent = sensorToParserComponentMap.get("snort");
-      Assert.assertEquals(snortParser, snortComponent.getMessageParser());
-      Assert.assertNull(snortComponent.getFilter());
+      assertEquals(snortParser, snortComponent.getMessageParser());
+      assertNull(snortComponent.getFilter());
       verify(snortParser, times(1)).init();
-      verify(snortParser, times(1)).configure(snortParserConfig);
+      verify(snortParser, times(1)).configure(snortParserConfig.getParserConfig());
       verifyNoMoreInteractions(snortParser);
     }
   }
 
   /**
-   * This is only testig the execute method. It mocks out processMessage().
+   * This is only testing the execute method. It mocks out processMessage().
    */
   @Test
   public void shouldExecute() {
@@ -269,12 +246,12 @@
     }});
     ParserRunnerResults<JSONObject> parserRunnerResults = parserRunner.execute("bro", rawMessage, parserConfigurations);
 
-    Assert.assertEquals(1, parserRunnerResults.getMessages().size());
-    Assert.assertTrue(parserRunnerResults.getMessages().contains(processedMessage));
-    Assert.assertEquals(3, parserRunnerResults.getErrors().size());
-    Assert.assertTrue(parserRunnerResults.getErrors().contains(processedError));
-    Assert.assertTrue(parserRunnerResults.getErrors().contains(expectedParseError1));
-    Assert.assertTrue(parserRunnerResults.getErrors().contains(expectedParseError2));
+    assertEquals(1, parserRunnerResults.getMessages().size());
+    assertTrue(parserRunnerResults.getMessages().contains(processedMessage));
+    assertEquals(3, parserRunnerResults.getErrors().size());
+    assertTrue(parserRunnerResults.getErrors().contains(processedError));
+    assertTrue(parserRunnerResults.getErrors().contains(expectedParseError1));
+    assertTrue(parserRunnerResults.getErrors().contains(expectedParseError2));
   }
 
   @Test
@@ -300,8 +277,8 @@
             .withThrowable(masterThrowable)
             .withSensorType(Collections.singleton("bro"))
             .addRawMessage(rawMessage.getMessage());
-    Assert.assertEquals(1, parserRunnerResults.getErrors().size());
-    Assert.assertTrue(parserRunnerResults.getErrors().contains(expectedError));
+    assertEquals(1, parserRunnerResults.getErrors().size());
+    assertTrue(parserRunnerResults.getErrors().contains(expectedError));
   }
 
   /**
@@ -330,9 +307,9 @@
     }});
 
     Optional<ParserRunnerImpl.ProcessResult> processResult = parserRunner.processMessage("bro", inputMessage, rawMessage, broParser, parserConfigurations);
-    Assert.assertTrue(processResult.isPresent());
-    Assert.assertFalse(processResult.get().isError());
-    Assert.assertEquals(expectedOutput, processResult.get().getMessage());
+    assertTrue(processResult.isPresent());
+    assertFalse(processResult.get().isError());
+    assertEquals(expectedOutput, processResult.get().getMessage());
   }
 
   /**
@@ -362,9 +339,9 @@
     }});
 
     Optional<ParserRunnerImpl.ProcessResult> processResult = parserRunner.processMessage("bro", inputMessage, rawMessage, broParser, parserConfigurations);
-    Assert.assertTrue(processResult.isPresent());
-    Assert.assertFalse(processResult.get().isError());
-    Assert.assertEquals(expectedOutput, processResult.get().getMessage());
+    assertTrue(processResult.isPresent());
+    assertFalse(processResult.get().isError());
+    assertEquals(expectedOutput, processResult.get().getMessage());
   }
 
   @Test
@@ -398,9 +375,9 @@
 
     Optional<ParserRunnerImpl.ProcessResult> processResult = parserRunner.processMessage("bro", inputMessage, rawMessage, broParser, parserConfigurations);
 
-    Assert.assertTrue(processResult.isPresent());
-    Assert.assertTrue(processResult.get().isError());
-    Assert.assertEquals(expectedMetronError, processResult.get().getError());
+    assertTrue(processResult.isPresent());
+    assertTrue(processResult.get().isError());
+    assertEquals(expectedMetronError, processResult.get().getError());
   }
 
   @Test
@@ -438,8 +415,8 @@
 
     Optional<ParserRunnerImpl.ProcessResult> processResult = parserRunner.processMessage("bro", inputMessage, rawMessage, broParser, parserConfigurations);
 
-    Assert.assertTrue(processResult.isPresent());
-    Assert.assertTrue(processResult.get().isError());
-    Assert.assertEquals(expectedMetronError, processResult.get().getError());
+    assertTrue(processResult.isPresent());
+    assertTrue(processResult.get().isError());
+    assertEquals(expectedMetronError, processResult.get().getError());
   }
 }
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/csv/CSVParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/csv/CSVParserTest.java
index 21a7d26..107b190 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/csv/CSVParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/csv/CSVParserTest.java
@@ -19,7 +19,12 @@
 package org.apache.metron.parsers.csv;
 
 import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;
@@ -32,8 +37,7 @@
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class CSVParserTest {
   /**
@@ -62,66 +66,62 @@
     parser.configure(config.getParserConfig());
     {
       String line = "#foo,bar,grok";
-      Assert.assertEquals(0, parser.parse(Bytes.toBytes(line)).size());
+      assertEquals(0, parser.parse(Bytes.toBytes(line)).size());
     }
     {
       String line = "";
-      Assert.assertEquals(0, parser.parse(Bytes.toBytes(line)).size());
+      assertEquals(0, parser.parse(Bytes.toBytes(line)).size());
     }
     {
       String line = "foo,bar,grok";
       List<JSONObject> results = parser.parse(Bytes.toBytes(line));
-      Assert.assertEquals(1, results.size());
+      assertEquals(1, results.size());
       JSONObject o = results.get(0);
-      Assert.assertTrue(parser.validate(o));
-      Assert.assertEquals(5, o.size());
-      Assert.assertEquals("foo", o.get("col1"));
-      Assert.assertEquals("bar", o.get("col2"));
-      Assert.assertEquals("grok", o.get("col3"));
+      assertTrue(parser.validate(o));
+      assertEquals(5, o.size());
+      assertEquals("foo", o.get("col1"));
+      assertEquals("bar", o.get("col2"));
+      assertEquals("grok", o.get("col3"));
     }
     {
       String line = "\"foo\", \"bar\",\"grok\"";
       List<JSONObject> results = parser.parse(Bytes.toBytes(line));
-      Assert.assertEquals(1, results.size());
+      assertEquals(1, results.size());
       JSONObject o = results.get(0);
-      Assert.assertTrue(parser.validate(o));
-      Assert.assertEquals(5, o.size());
-      Assert.assertEquals("foo", o.get("col1"));
-      Assert.assertEquals("bar", o.get("col2"));
-      Assert.assertEquals("grok", o.get("col3"));
+      assertTrue(parser.validate(o));
+      assertEquals(5, o.size());
+      assertEquals("foo", o.get("col1"));
+      assertEquals("bar", o.get("col2"));
+      assertEquals("grok", o.get("col3"));
     }
     {
       String line = "foo, bar, grok";
       List<JSONObject> results = parser.parse(Bytes.toBytes(line));
-      Assert.assertEquals(1, results.size());
+      assertEquals(1, results.size());
       JSONObject o = results.get(0);
-      Assert.assertTrue(parser.validate(o));
-      Assert.assertEquals(5, o.size());
-      Assert.assertEquals("foo", o.get("col1"));
-      Assert.assertEquals("bar", o.get("col2"));
-      Assert.assertEquals("grok", o.get("col3"));
+      assertTrue(parser.validate(o));
+      assertEquals(5, o.size());
+      assertEquals("foo", o.get("col1"));
+      assertEquals("bar", o.get("col2"));
+      assertEquals("grok", o.get("col3"));
     }
     {
       String line = " foo , bar , grok ";
       List<JSONObject> results = parser.parse(Bytes.toBytes(line));
-      Assert.assertEquals(1, results.size());
+      assertEquals(1, results.size());
       JSONObject o = results.get(0);
-      Assert.assertTrue(parser.validate(o));
-      Assert.assertEquals(5, o.size());
-      Assert.assertEquals("foo", o.get("col1"));
-      Assert.assertEquals("bar", o.get("col2"));
-      Assert.assertEquals("grok", o.get("col3"));
-      Assert.assertEquals(null, o.get(" col2"));
-      Assert.assertEquals(null, o.get("col3 "));
+      assertTrue(parser.validate(o));
+      assertEquals(5, o.size());
+      assertEquals("foo", o.get("col1"));
+      assertEquals("bar", o.get("col2"));
+      assertEquals("grok", o.get("col3"));
+      assertNull(o.get(" col2"));
+      assertNull(o.get("col3 "));
     }
     {
       UnitTestHelper.setLog4jLevel(CSVParser.class, Level.FATAL);
       String line = "foo";
-      try {
-        List<JSONObject> results = parser.parse(Bytes.toBytes(line));
-        Assert.fail("Expected exception");
-      }
-      catch(IllegalStateException iae) {}
+      assertThrows(IllegalStateException.class, () -> parser.parse(Bytes.toBytes(line)));
       UnitTestHelper.setLog4jLevel(CSVParser.class, Level.ERROR);
     }
   }
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/EnvelopedParserIntegrationTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/EnvelopedParserIntegrationTest.java
index 46836a3..2a2db18 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/EnvelopedParserIntegrationTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/EnvelopedParserIntegrationTest.java
@@ -18,18 +18,20 @@
 package org.apache.metron.parsers.integration;
 
 import com.google.common.collect.ImmutableList;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.message.metadata.MetadataUtil;
 import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.integration.ProcessorResult;
 import org.apache.metron.parsers.integration.validation.ParserDriver;
-import org.junit.Assert;
+
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public abstract class EnvelopedParserIntegrationTest {
 
@@ -59,14 +61,14 @@
       put("metadata_field", "metadata_val");
     }};
     ProcessorResult<List<byte[]>> results = driver.run(ImmutableList.of(JSONUtils.INSTANCE.toJSONPretty(inputRecord)));
-    Assert.assertFalse(results.failed());
+    assertFalse(results.failed());
     List<byte[]> resultList = results.getResult();
-    Assert.assertEquals(1, resultList.size());
+    assertEquals(1, resultList.size());
     Map<String, Object> outputRecord = JSONUtils.INSTANCE.load(new String(resultList.get(0),
         StandardCharsets.UTF_8), JSONUtils.MAP_SUPPLIER);
-    Assert.assertEquals("field1_val", outputRecord.get("field1"));
-    Assert.assertEquals(inputRecord.get(Constants.Fields.ORIGINAL.getName()), outputRecord.get(Constants.Fields.ORIGINAL.getName()));
-    Assert.assertEquals(inputRecord.get(MetadataUtil.METADATA_PREFIX + ".metadata_field"), outputRecord.get("metadata_field"));
+    assertEquals("field1_val", outputRecord.get("field1"));
+    assertEquals(inputRecord.get(Constants.Fields.ORIGINAL.getName()), outputRecord.get(Constants.Fields.ORIGINAL.getName()));
+    assertEquals(inputRecord.get(MetadataUtil.METADATA_PREFIX + ".metadata_field"), outputRecord.get("metadata_field"));
 
   }
 
@@ -97,14 +99,14 @@
       put("metadata_field", "metadata_val");
     }};
     ProcessorResult<List<byte[]>> results = driver.run(ImmutableList.of(JSONUtils.INSTANCE.toJSONPretty(inputRecord)));
-    Assert.assertFalse(results.failed());
+    assertFalse(results.failed());
     List<byte[]> resultList = results.getResult();
-    Assert.assertEquals(1, resultList.size());
+    assertEquals(1, resultList.size());
     Map<String, Object> outputRecord = JSONUtils.INSTANCE.load(new String(resultList.get(0),
         StandardCharsets.UTF_8), JSONUtils.MAP_SUPPLIER);
-    Assert.assertEquals("field1_val", outputRecord.get("field1"));
-    Assert.assertEquals(inputRecord.get(Constants.Fields.ORIGINAL.getName()), outputRecord.get(Constants.Fields.ORIGINAL.getName()));
-    Assert.assertEquals(inputRecord.get("metadata_field"), outputRecord.get("metadata_field"));
+    assertEquals("field1_val", outputRecord.get("field1"));
+    assertEquals(inputRecord.get(Constants.Fields.ORIGINAL.getName()), outputRecord.get(Constants.Fields.ORIGINAL.getName()));
+    assertEquals(inputRecord.get("metadata_field"), outputRecord.get("metadata_field"));
 
   }
 /**
@@ -134,14 +136,14 @@
       put("metadata_field", "metadata_val");
     }};
     ProcessorResult<List<byte[]>> results = driver.run(ImmutableList.of(JSONUtils.INSTANCE.toJSONPretty(inputRecord)));
-    Assert.assertFalse(results.failed());
+    assertFalse(results.failed());
     List<byte[]> resultList = results.getResult();
-    Assert.assertEquals(1, resultList.size());
+    assertEquals(1, resultList.size());
     Map<String, Object> outputRecord = JSONUtils.INSTANCE.load(new String(resultList.get(0),
         StandardCharsets.UTF_8), JSONUtils.MAP_SUPPLIER);
-    Assert.assertEquals("field1_val", outputRecord.get("field1"));
-    Assert.assertEquals(inputRecord.get(Constants.Fields.ORIGINAL.getName()), outputRecord.get(Constants.Fields.ORIGINAL.getName()));
-    Assert.assertFalse(outputRecord.containsKey(MetadataUtil.METADATA_PREFIX + ".metadata_field"));
+    assertEquals("field1_val", outputRecord.get("field1"));
+    assertEquals(inputRecord.get(Constants.Fields.ORIGINAL.getName()), outputRecord.get(Constants.Fields.ORIGINAL.getName()));
+    assertFalse(outputRecord.containsKey(MetadataUtil.METADATA_PREFIX + ".metadata_field"));
   }
 
   /**
@@ -185,16 +187,16 @@
     String inputRecord = "Mar 29 2004 09:54:18: %PIX-6-302005: Built UDP connection for faddr 198.207.223.240/53337 gaddr 10.0.0.187/53 laddr 192.168.0.2/53";
     ProcessorResult<List<byte[]>> syslogResult = syslogDriver.run(ImmutableList.of(inputRecord.getBytes(
         StandardCharsets.UTF_8)));
-    Assert.assertFalse(syslogResult.failed());
+    assertFalse(syslogResult.failed());
     List<byte[]> syslogResultList = syslogResult.getResult();
     envelopedData = syslogResultList.get(0);
     ProcessorResult<List<byte[]>> results = driver.run(ImmutableList.of(envelopedData));
-    Assert.assertFalse(results.failed());
+    assertFalse(results.failed());
     List<byte[]> resultList = results.getResult();
-    Assert.assertEquals(1, resultList.size());
+    assertEquals(1, resultList.size());
     Map<String, Object> result = JSONUtils.INSTANCE.load(new String(resultList.get(0),
         StandardCharsets.UTF_8), JSONUtils.MAP_SUPPLIER);
-    Assert.assertEquals("UDP", result.get("protocol"));
-    Assert.assertTrue((long) result.get("timestamp") > 1000);
+    assertEquals("UDP", result.get("protocol"));
+    assertTrue((long) result.get("timestamp") > 1000);
   }
 }
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/ParserIntegrationTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/ParserIntegrationTest.java
index 09b007c..0bb0216 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/ParserIntegrationTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/ParserIntegrationTest.java
@@ -17,12 +17,6 @@
  */
 package org.apache.metron.parsers.integration;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.util.Arrays;
-import java.util.List;
 import org.apache.metron.TestConstants;
 import org.apache.metron.integration.BaseIntegrationTest;
 import org.apache.metron.integration.ProcessorResult;
@@ -30,7 +24,15 @@
 import org.apache.metron.parsers.integration.validation.ParserDriver;
 import org.apache.metron.test.TestDataType;
 import org.apache.metron.test.utils.SampleDataUtils;
-import org.junit.Assert;
+
+import java.io.File;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.util.Arrays;
+import java.util.List;
+
+import static org.junit.jupiter.api.Assertions.fail;
 
 public abstract class ParserIntegrationTest extends BaseIntegrationTest {
   // Contains the list of sensor types to be tested.
@@ -84,13 +86,13 @@
       result.getBadResults(buffer);
       buffer.append(String.format("%d Valid Messages Processed", outputMessages.size())).append("\n");
       dumpParsedMessages(outputMessages,buffer);
-      Assert.fail(buffer.toString());
+      fail(buffer.toString());
     } else {
       List<ParserValidation> validations = getValidations();
       if (validations == null || validations.isEmpty()) {
         buffer.append("No validations configured for sensorType ").append(sensorType).append(".  Dumping parsed messages").append("\n");
         dumpParsedMessages(outputMessages,buffer);
-        Assert.fail(buffer.toString());
+        fail(buffer.toString());
       } else {
         for (ParserValidation validation : validations) {
           System.out.println("Running " + validation.getName() + " on sensorType " + sensorType);
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/validation/SampleDataValidation.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/validation/SampleDataValidation.java
index 44e0d4d..cec052f 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/validation/SampleDataValidation.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/integration/validation/SampleDataValidation.java
@@ -17,16 +17,17 @@
  */
 package org.apache.metron.parsers.integration.validation;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.metron.integration.utils.TestUtils;
 import org.apache.metron.parsers.integration.ParserValidation;
 import org.apache.metron.test.TestDataType;
 import org.apache.metron.test.utils.SampleDataUtils;
 import org.apache.metron.test.utils.ValidationUtils;
-import org.junit.Assert;
 
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class SampleDataValidation implements ParserValidation {
 
   @Override
@@ -37,7 +38,7 @@
   @Override
   public void validate(String sensorType, List<byte[]> actualMessages) throws Exception {
     List<byte[]> expectedMessages = TestUtils.readSampleData(SampleDataUtils.getSampleDataPath("..", sensorType, TestDataType.PARSED));
-    Assert.assertEquals(expectedMessages.size(), actualMessages.size());
+    assertEquals(expectedMessages.size(), actualMessages.size());
     for (int i = 0; i < actualMessages.size(); i++) {
       String expectedMessage = new String(expectedMessages.get(i), StandardCharsets.UTF_8);
       String actualMessage = new String(actualMessages.get(i), StandardCharsets.UTF_8);
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserQueryTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserQueryTest.java
index 6321d90..4605284 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserQueryTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserQueryTest.java
@@ -17,20 +17,22 @@
  */
 package org.apache.metron.parsers.json;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-
 import com.google.common.collect.ImmutableMap;
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.List;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.log4j.Level;
 import org.apache.metron.common.Constants.Fields;
 import org.apache.metron.parsers.BasicParser;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class JSONMapParserQueryTest {
 
@@ -65,31 +67,31 @@
       put(JSONMapParser.JSONP_QUERY, "$.foo");
     }});
     List<JSONObject> output = parser.parse(JSON_LIST.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(2, output.size());
+    assertEquals(2, output.size());
     JSONObject message = output.get(0);
     // account for timestamp field in the size
-    Assert.assertEquals(4, message.size());
-    Assert.assertEquals("foo1", message.get("name"));
-    Assert.assertEquals("bar", message.get("value"));
-    Assert.assertEquals(1.0, message.get("number"));
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
-    Assert.assertNotNull(message.get("number"));
-    Assert.assertTrue(message.get("number") instanceof Number);
-    Assert.assertThat("original_string should be handled external to the parser by default",
+    assertEquals(4, message.size());
+    assertEquals("foo1", message.get("name"));
+    assertEquals("bar", message.get("value"));
+    assertEquals(1.0, message.get("number"));
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("number"));
+    assertTrue(message.get("number") instanceof Number);
+    assertThat("original_string should be handled external to the parser by default",
         message.containsKey(Fields.ORIGINAL.getName()), equalTo(false));
 
     message = output.get(1);
     // account for timestamp field in the size
-    Assert.assertEquals(4, message.size());
-    Assert.assertEquals("foo2", message.get("name"));
-    Assert.assertEquals("baz", message.get("value"));
-    Assert.assertEquals(2.0, message.get("number"));
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
-    Assert.assertNotNull(message.get("number"));
-    Assert.assertTrue(message.get("number") instanceof Number);
-    Assert.assertThat("original_string should be handled external to the parser by default",
+    assertEquals(4, message.size());
+    assertEquals("foo2", message.get("name"));
+    assertEquals("baz", message.get("value"));
+    assertEquals(2.0, message.get("number"));
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("number"));
+    assertTrue(message.get("number") instanceof Number);
+    assertThat("original_string should be handled external to the parser by default",
         message.containsKey(Fields.ORIGINAL.getName()), equalTo(false));
   }
 
@@ -101,43 +103,42 @@
       put(JSONMapParser.OVERRIDE_ORIGINAL_STRING, true);
     }});
     List<JSONObject> output = parser.parse(JSON_LIST.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(2, output.size());
+    assertEquals(2, output.size());
 
     JSONObject message = output.get(0);
     // account for timestamp field in the size
-    Assert.assertEquals(5, message.size());
-    Assert.assertEquals("foo1", message.get("name"));
-    Assert.assertEquals("bar", message.get("value"));
-    Assert.assertEquals(1.0, message.get("number"));
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
-    Assert.assertNotNull(message.get("number"));
-    Assert.assertTrue(message.get("number") instanceof Number);
-    Assert.assertThat("original_string should have been handled by the parser",
+    assertEquals(5, message.size());
+    assertEquals("foo1", message.get("name"));
+    assertEquals("bar", message.get("value"));
+    assertEquals(1.0, message.get("number"));
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("number"));
+    assertTrue(message.get("number") instanceof Number);
+    assertThat("original_string should have been handled by the parser",
         message.get(Fields.ORIGINAL.getName()), equalTo("{\"name\":\"foo1\",\"number\":1.0,\"value\":\"bar\"}"));
 
     message = output.get(1);
     // account for timestamp field in the size
-    Assert.assertEquals(5, message.size());
-    Assert.assertEquals("foo2", message.get("name"));
-    Assert.assertEquals("baz", message.get("value"));
-    Assert.assertEquals(2.0, message.get("number"));
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
-    Assert.assertNotNull(message.get("number"));
-    Assert.assertTrue(message.get("number") instanceof Number);
-    Assert.assertThat("original_string should have been handled by the parser",
+    assertEquals(5, message.size());
+    assertEquals("foo2", message.get("name"));
+    assertEquals("baz", message.get("value"));
+    assertEquals(2.0, message.get("number"));
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("number"));
+    assertTrue(message.get("number") instanceof Number);
+    assertThat("original_string should have been handled by the parser",
         message.get(Fields.ORIGINAL.getName()), equalTo("{\"name\":\"foo2\",\"number\":2.0,\"value\":\"baz\"}"));
   }
 
-  @Test(expected = IllegalStateException.class)
+  @Test
   public void testInvalidJSONPathThrows() {
     JSONMapParser parser = new JSONMapParser();
     parser.configure(new HashMap<String, Object>() {{
       put(JSONMapParser.JSONP_QUERY, "$$..$$SDSE$#$#.");
     }});
-    List<JSONObject> output = parser.parse(JSON_LIST.getBytes(StandardCharsets.UTF_8));
-
+    assertThrows(IllegalStateException.class, () -> parser.parse(JSON_LIST.getBytes(StandardCharsets.UTF_8)));
   }
 
   @Test
@@ -147,7 +148,7 @@
       put(JSONMapParser.JSONP_QUERY, "$.foo");
     }});
     List<JSONObject> output = parser.parse(JSON_SINGLE.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(0, output.size());
+    assertEquals(0, output.size());
   }
 
   /**
@@ -173,28 +174,28 @@
       put(JSONMapParser.JSONP_QUERY, "$.foo");
     }});
     List<JSONObject> output = parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 2);
+    assertEquals(output.size(), 2);
 
     //don't forget the timestamp field!
-    Assert.assertEquals(output.get(0).size(), 1);
+    assertEquals(output.get(0).size(), 1);
 
     JSONObject message = output.get(0);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
 
     message = output.get(1);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
   }
 
-  @Test(expected = IllegalStateException.class)
+  @Test
   public void testCollectionHandlingError() {
     JSONMapParser parser = new JSONMapParser();
     parser.configure(ImmutableMap
         .of(JSONMapParser.MAP_STRATEGY_CONFIG, JSONMapParser.MapStrategy.ERROR.name(),
             JSONMapParser.JSONP_QUERY, "$.foo"));
     UnitTestHelper.setLog4jLevel(BasicParser.class, Level.FATAL);
-    parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
+    assertThrows(IllegalStateException.class, () -> parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8)));
     UnitTestHelper.setLog4jLevel(BasicParser.class, Level.ERROR);
   }
 
@@ -206,16 +207,16 @@
         .of(JSONMapParser.MAP_STRATEGY_CONFIG, JSONMapParser.MapStrategy.ALLOW.name(),
             JSONMapParser.JSONP_QUERY, "$.foo"));
     List<JSONObject> output = parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 2);
-    Assert.assertEquals(output.get(0).size(), 2);
+    assertEquals(output.size(), 2);
+    assertEquals(output.get(0).size(), 2);
     JSONObject message = output.get(0);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
 
-    Assert.assertEquals(output.get(1).size(), 2);
+    assertEquals(output.get(1).size(), 2);
     message = output.get(1);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
   }
 
   @Test
@@ -225,23 +226,23 @@
         .of(JSONMapParser.MAP_STRATEGY_CONFIG, JSONMapParser.MapStrategy.UNFOLD.name(),
             JSONMapParser.JSONP_QUERY, "$.foo"));
     List<JSONObject> output = parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 2);
-    Assert.assertEquals(output.get(0).size(), 5);
+    assertEquals(output.size(), 2);
+    assertEquals(output.get(0).size(), 5);
     JSONObject message = output.get(0);
-    Assert.assertEquals(message.get("collection.blah"), 7);
-    Assert.assertEquals(message.get("collection.blah2"), "foo");
-    Assert.assertEquals(message.get("collection.bigblah.innerBlah"), "baz");
-    Assert.assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"), "grey");
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertEquals(message.get("collection.blah"), 7);
+    assertEquals(message.get("collection.blah2"), "foo");
+    assertEquals(message.get("collection.bigblah.innerBlah"), "baz");
+    assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"), "grey");
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
 
-    Assert.assertEquals(output.get(1).size(), 5);
+    assertEquals(output.get(1).size(), 5);
     message = output.get(1);
-    Assert.assertEquals(message.get("collection.blah"), 8);
-    Assert.assertEquals(message.get("collection.blah2"), "bar");
-    Assert.assertEquals(message.get("collection.bigblah.innerBlah"), "baz2");
-    Assert.assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"), "blue");
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertEquals(message.get("collection.blah"), 8);
+    assertEquals(message.get("collection.blah2"), "bar");
+    assertEquals(message.get("collection.bigblah.innerBlah"), "baz2");
+    assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"), "blue");
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
   }
 }
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserTest.java
index 221bf74..2a98eed 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserTest.java
@@ -17,29 +17,30 @@
  */
 package org.apache.metron.parsers.json;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
 import com.google.common.collect.ImmutableMap;
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.log4j.Level;
 import org.apache.metron.parsers.BasicParser;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class JSONMapParserTest {
 
   private JSONMapParser parser;
 
-  @Before
+  @BeforeEach
   public void setup() {
     parser = new JSONMapParser();
   }
@@ -57,16 +58,16 @@
   @Test
   public void testHappyPath() {
     List<JSONObject> output = parser.parse(happyPathJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 1);
+    assertEquals(output.size(), 1);
     //don't forget the timestamp field!
-    Assert.assertEquals(output.get(0).size(), 4);
+    assertEquals(output.get(0).size(), 4);
     JSONObject message = output.get(0);
-    Assert.assertEquals("bar", message.get("foo"));
-    Assert.assertEquals("blah", message.get("blah"));
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
-    Assert.assertNotNull(message.get("number"));
-    Assert.assertTrue(message.get("number") instanceof Number);
+    assertEquals("bar", message.get("foo"));
+    assertEquals("blah", message.get("blah"));
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("number"));
+    assertTrue(message.get("number") instanceof Number);
   }
 
   /**
@@ -91,19 +92,19 @@
   @Test
   public void testCollectionHandlingDrop() {
     List<JSONObject> output = parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 1);
+    assertEquals(output.size(), 1);
     //don't forget the timestamp field!
-    Assert.assertEquals(output.get(0).size(), 1);
+    assertEquals(output.get(0).size(), 1);
     JSONObject message = output.get(0);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
   }
 
-  @Test(expected=IllegalStateException.class)
+  @Test
   public void testCollectionHandlingError() {
     parser.configure(ImmutableMap.of(JSONMapParser.MAP_STRATEGY_CONFIG, JSONMapParser.MapStrategy.ERROR.name()));
     UnitTestHelper.setLog4jLevel(BasicParser.class, Level.FATAL);
-    parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
+    assertThrows(IllegalStateException.class, () -> parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8)));
     UnitTestHelper.setLog4jLevel(BasicParser.class, Level.ERROR);
   }
 
@@ -112,28 +113,28 @@
   public void testCollectionHandlingAllow() {
     parser.configure(ImmutableMap.of(JSONMapParser.MAP_STRATEGY_CONFIG, JSONMapParser.MapStrategy.ALLOW.name()));
     List<JSONObject> output = parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 1);
+    assertEquals(output.size(), 1);
     //don't forget the timestamp field!
-    Assert.assertEquals(output.get(0).size(), 2);
+    assertEquals(output.get(0).size(), 2);
     JSONObject message = output.get(0);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
   }
 
   @Test
   public void testCollectionHandlingUnfold() {
     parser.configure(ImmutableMap.of(JSONMapParser.MAP_STRATEGY_CONFIG, JSONMapParser.MapStrategy.UNFOLD.name()));
     List<JSONObject> output = parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 1);
+    assertEquals(output.size(), 1);
     //don't forget the timestamp field!
-    Assert.assertEquals(output.get(0).size(), 5);
+    assertEquals(output.get(0).size(), 5);
     JSONObject message = output.get(0);
-    Assert.assertEquals(message.get("collection.blah"), 7);
-    Assert.assertEquals(message.get("collection.blah2"), "foo");
-    Assert.assertEquals(message.get("collection.bigblah.innerBlah"),"baz");
-    Assert.assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"),"grey");
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertEquals(message.get("collection.blah"), 7);
+    assertEquals(message.get("collection.blah2"), "foo");
+    assertEquals(message.get("collection.bigblah.innerBlah"),"baz");
+    assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"),"grey");
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
   }
 
   @Test
@@ -141,12 +142,12 @@
     parser.configure(ImmutableMap.of(JSONMapParser.MAP_STRATEGY_CONFIG,JSONMapParser.MapStrategy.UNFOLD.name()));
       List<JSONObject> output = parser.parse(mixCollectionHandlingJSON.getBytes(
               StandardCharsets.UTF_8));
-    Assert.assertEquals(output.get(0).size(), 3);
+    assertEquals(output.get(0).size(), 3);
     JSONObject message = output.get(0);
-    Assert.assertEquals(message.get("collection.key"), "value");
-    Assert.assertEquals(message.get("key"),"value");
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number );
+    assertEquals(message.get("collection.key"), "value");
+    assertEquals(message.get("key"),"value");
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number );
   }
 
   @Test
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserWrappedQueryTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserWrappedQueryTest.java
index f3e5d98..ff4127e 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserWrappedQueryTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/json/JSONMapParserWrappedQueryTest.java
@@ -18,18 +18,19 @@
 package org.apache.metron.parsers.json;
 
 import com.google.common.collect.ImmutableMap;
-import java.nio.charset.StandardCharsets;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.log4j.Level;
 import org.apache.metron.parsers.BasicParser;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.List;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class JSONMapParserWrappedQueryTest {
 
   /**
@@ -60,36 +61,36 @@
       put(JSONMapParser.JSONP_QUERY, "$.foo");
     }});
     List<JSONObject> output = parser.parse(JSON_LIST.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 2);
+    assertEquals(output.size(), 2);
     //don't forget the timestamp field!
-    Assert.assertEquals(output.get(0).size(), 4);
+    assertEquals(output.get(0).size(), 4);
     JSONObject message = output.get(0);
-    Assert.assertEquals("foo1", message.get("name"));
-    Assert.assertEquals("bar", message.get("value"));
-    Assert.assertEquals(1.0, message.get("number"));
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
-    Assert.assertNotNull(message.get("number"));
-    Assert.assertTrue(message.get("number") instanceof Number);
+    assertEquals("foo1", message.get("name"));
+    assertEquals("bar", message.get("value"));
+    assertEquals(1.0, message.get("number"));
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("number"));
+    assertTrue(message.get("number") instanceof Number);
 
     message = output.get(1);
-    Assert.assertEquals("foo2", message.get("name"));
-    Assert.assertEquals("baz", message.get("value"));
-    Assert.assertEquals(2.0, message.get("number"));
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
-    Assert.assertNotNull(message.get("number"));
-    Assert.assertTrue(message.get("number") instanceof Number);
+    assertEquals("foo2", message.get("name"));
+    assertEquals("baz", message.get("value"));
+    assertEquals(2.0, message.get("number"));
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("number"));
+    assertTrue(message.get("number") instanceof Number);
 
   }
 
-  @Test(expected = IllegalStateException.class)
+  @Test
   public void testInvalidJSONPathThrows() {
     JSONMapParser parser = new JSONMapParser();
     parser.configure(new HashMap<String, Object>() {{
       put(JSONMapParser.JSONP_QUERY, "$$..$$SDSE$#$#.");
     }});
-    List<JSONObject> output = parser.parse(JSON_LIST.getBytes(StandardCharsets.UTF_8));
+    assertThrows(IllegalStateException.class, () -> parser.parse(JSON_LIST.getBytes(StandardCharsets.UTF_8)));
 
   }
 
@@ -100,7 +101,7 @@
       put(JSONMapParser.JSONP_QUERY, "$.foo");
     }});
     List<JSONObject> output = parser.parse(JSON_SINGLE.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(0, output.size());
+    assertEquals(0, output.size());
   }
 
   /**
@@ -126,28 +127,28 @@
       put(JSONMapParser.JSONP_QUERY, "$.foo");
     }});
     List<JSONObject> output = parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 2);
+    assertEquals(output.size(), 2);
 
     //don't forget the timestamp field!
-    Assert.assertEquals(output.get(0).size(), 1);
+    assertEquals(output.get(0).size(), 1);
 
     JSONObject message = output.get(0);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
 
     message = output.get(1);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
   }
 
-  @Test(expected = IllegalStateException.class)
+  @Test
   public void testCollectionHandlingError() {
     JSONMapParser parser = new JSONMapParser();
     parser.configure(ImmutableMap
         .of(JSONMapParser.MAP_STRATEGY_CONFIG, JSONMapParser.MapStrategy.ERROR.name(),
             JSONMapParser.JSONP_QUERY, "$.foo"));
     UnitTestHelper.setLog4jLevel(BasicParser.class, Level.FATAL);
-    parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
+    assertThrows(IllegalStateException.class, () -> parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8)));
     UnitTestHelper.setLog4jLevel(BasicParser.class, Level.ERROR);
   }
 
@@ -159,16 +160,16 @@
         .of(JSONMapParser.MAP_STRATEGY_CONFIG, JSONMapParser.MapStrategy.ALLOW.name(),
             JSONMapParser.JSONP_QUERY, "$.foo"));
     List<JSONObject> output = parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 2);
-    Assert.assertEquals(output.get(0).size(), 2);
+    assertEquals(output.size(), 2);
+    assertEquals(output.get(0).size(), 2);
     JSONObject message = output.get(0);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
 
-    Assert.assertEquals(output.get(1).size(), 2);
+    assertEquals(output.get(1).size(), 2);
     message = output.get(1);
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
   }
 
   @Test
@@ -178,23 +179,23 @@
         .of(JSONMapParser.MAP_STRATEGY_CONFIG, JSONMapParser.MapStrategy.UNFOLD.name(),
             JSONMapParser.JSONP_QUERY, "$.foo"));
     List<JSONObject> output = parser.parse(collectionHandlingJSON.getBytes(StandardCharsets.UTF_8));
-    Assert.assertEquals(output.size(), 2);
-    Assert.assertEquals(output.get(0).size(), 5);
+    assertEquals(output.size(), 2);
+    assertEquals(output.get(0).size(), 5);
     JSONObject message = output.get(0);
-    Assert.assertEquals(message.get("collection.blah"), 7);
-    Assert.assertEquals(message.get("collection.blah2"), "foo");
-    Assert.assertEquals(message.get("collection.bigblah.innerBlah"), "baz");
-    Assert.assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"), "grey");
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertEquals(message.get("collection.blah"), 7);
+    assertEquals(message.get("collection.blah2"), "foo");
+    assertEquals(message.get("collection.bigblah.innerBlah"), "baz");
+    assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"), "grey");
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
 
-    Assert.assertEquals(output.get(1).size(), 5);
+    assertEquals(output.get(1).size(), 5);
     message = output.get(1);
-    Assert.assertEquals(message.get("collection.blah"), 8);
-    Assert.assertEquals(message.get("collection.blah2"), "bar");
-    Assert.assertEquals(message.get("collection.bigblah.innerBlah"), "baz2");
-    Assert.assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"), "blue");
-    Assert.assertNotNull(message.get("timestamp"));
-    Assert.assertTrue(message.get("timestamp") instanceof Number);
+    assertEquals(message.get("collection.blah"), 8);
+    assertEquals(message.get("collection.blah2"), "bar");
+    assertEquals(message.get("collection.bigblah.innerBlah"), "baz2");
+    assertEquals(message.get("collection.bigblah.reallyInnerBlah.color"), "blue");
+    assertNotNull(message.get("timestamp"));
+    assertTrue(message.get("timestamp") instanceof Number);
   }
 }
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/regex/RegularExpressionsParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/regex/RegularExpressionsParserTest.java
index e320be8..0731b79 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/regex/RegularExpressionsParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/regex/RegularExpressionsParserTest.java
@@ -14,28 +14,29 @@
  */
 package org.apache.metron.parsers.regex;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class RegularExpressionsParserTest {
 
     private RegularExpressionsParser regularExpressionsParser;
 
-    @Before
-    public void setUp() throws Exception {
+    @BeforeEach
+    public void setUp() {
         regularExpressionsParser = new RegularExpressionsParser();
     }
 
@@ -118,16 +119,16 @@
         JSONObject parsed = parse(message);
         // Expected
         Map<String, Object> expectedJson = new HashMap<>();
-        Assert.assertEquals(parsed.get("device_name"), "deviceName");
-        Assert.assertEquals(parsed.get("dst_process_name"), "sshd");
-        Assert.assertEquals(parsed.get("dst_process_id"), "11672");
-        Assert.assertEquals(parsed.get("dst_user_id"), "prod");
-        Assert.assertEquals(parsed.get("ip_src_addr"), "22.22.22.22");
-        Assert.assertEquals(parsed.get("ip_src_port"), "55555");
-        Assert.assertEquals(parsed.get("app_protocol"), "ssh2");
-        Assert.assertEquals(parsed.get("original_string"),
+        assertEquals(parsed.get("device_name"), "deviceName");
+        assertEquals(parsed.get("dst_process_name"), "sshd");
+        assertEquals(parsed.get("dst_process_id"), "11672");
+        assertEquals(parsed.get("dst_user_id"), "prod");
+        assertEquals(parsed.get("ip_src_addr"), "22.22.22.22");
+        assertEquals(parsed.get("ip_src_port"), "55555");
+        assertEquals(parsed.get("app_protocol"), "ssh2");
+        assertEquals(parsed.get("original_string"),
             "<38>Jun 20 15:01:17 deviceName sshd[11672]: Accepted publickey for prod from 22.22.22.22 port 55555 ssh2");
-        Assert.assertTrue(parsed.containsKey("timestamp"));
+        assertTrue(parsed.containsKey("timestamp"));
 
     }
 
@@ -207,15 +208,15 @@
         JSONObject parsed = parse(message);
         // Expected
 
-        Assert.assertEquals(parsed.get("dst_process_name"), "sshd");
-        Assert.assertEquals(parsed.get("dst_process_id"), "11672");
-        Assert.assertEquals(parsed.get("dst_user_id"), "prod");
-        Assert.assertEquals(parsed.get("ip_src_addr"), "22.22.22.22");
-        Assert.assertEquals(parsed.get("ip_src_port"), "55555");
-        Assert.assertEquals(parsed.get("app_protocol"), "ssh2");
-        Assert.assertEquals(parsed.get("original_string"),
+        assertEquals(parsed.get("dst_process_name"), "sshd");
+        assertEquals(parsed.get("dst_process_id"), "11672");
+        assertEquals(parsed.get("dst_user_id"), "prod");
+        assertEquals(parsed.get("ip_src_addr"), "22.22.22.22");
+        assertEquals(parsed.get("ip_src_port"), "55555");
+        assertEquals(parsed.get("app_protocol"), "ssh2");
+        assertEquals(parsed.get("original_string"),
             "<38>Jun 20 15:01:17 deviceName sshd[11672]: Accepted publickey for prod from 22.22.22.22 port 55555 ssh2");
-        Assert.assertTrue(parsed.containsKey("timestamp"));
+        assertTrue(parsed.containsKey("timestamp"));
 
     }
 
@@ -236,13 +237,10 @@
     public static String invalidParserConfig;
     //@formatter:on
 
-    @Test(expected = IllegalStateException.class)
+    @Test
     public void testMalformedRegex() throws Exception {
-        String message =
-            "<38>Jun 20 15:01:17 deviceName sshd[11672]: Accepted publickey for prod from 22.22.22.22 port 55555 ssh2";
         JSONObject parserConfig = (JSONObject) new JSONParser().parse(invalidParserConfig);
-        regularExpressionsParser.configure(parserConfig);
-        parse(message);
+        assertThrows(IllegalStateException.class, () -> regularExpressionsParser.configure(parserConfig));
     }
 
     //@formatter:off
@@ -261,13 +259,10 @@
     public static String noRecordTypeParserConfig;
     //@formatter:on
 
-    @Test(expected = IllegalStateException.class)
+    @Test
     public void testNoRecordTypeRegex() throws Exception {
-        String message =
-            "<38>Jun 20 15:01:17 deviceName sshd[11672]: Accepted publickey for prod from 22.22.22.22 port 55555 ssh2";
         JSONObject parserConfig = (JSONObject) new JSONParser().parse(noRecordTypeParserConfig);
-        regularExpressionsParser.configure(parserConfig);
-        parse(message);
+        assertThrows(IllegalStateException.class, () -> regularExpressionsParser.configure(parserConfig));
     }
 
     private JSONObject parse(String message) throws Exception {
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/syslog/Syslog3164ParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/syslog/Syslog3164ParserTest.java
index 8bf20fc..1e90cd0 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/syslog/Syslog3164ParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/syslog/Syslog3164ParserTest.java
@@ -19,12 +19,11 @@
 package org.apache.metron.parsers.syslog;
 
 import com.github.palindromicity.syslog.dsl.SyslogFieldKeys;
-import java.nio.charset.StandardCharsets;
 import org.apache.metron.parsers.interfaces.MessageParserResult;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
 import java.time.Instant;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
@@ -34,7 +33,7 @@
 import java.util.Optional;
 import java.util.function.Consumer;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class Syslog3164ParserTest {
 
@@ -130,13 +129,13 @@
 
   @Test
   public void testHappyPath() {
-    test(expectedMessage1, (message) -> Assert.assertEquals(expectedHostNameOne, message.get(SyslogFieldKeys.HEADER_HOSTNAME.getField())));
+    test(expectedMessage1, (message) -> assertEquals(expectedHostNameOne, message.get(SyslogFieldKeys.HEADER_HOSTNAME.getField())));
   }
 
 
   @Test()
   public void testNotValid() {
-    test( "not valid", (message) -> Assert.assertTrue(false));
+    test( "not valid", (message) -> assertTrue(false));
   }
 
   public void test( String line, Consumer<JSONObject> msgIdChecker) {
@@ -160,10 +159,10 @@
             .append(SYSLOG_LINE_ALL);
     Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(builder.toString().getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertNotNull(resultOptional);
-    Assert.assertTrue(resultOptional.isPresent());
+    assertNotNull(resultOptional);
+    assertTrue(resultOptional.isPresent());
     List<JSONObject> parsedList = resultOptional.get().getMessages();
-    Assert.assertEquals(3,parsedList.size());
+    assertEquals(3,parsedList.size());
   }
 
   @Test
@@ -183,8 +182,8 @@
             .append("\nOHMY!");
     Optional<MessageParserResult<JSONObject>> output = parser.parseOptionalResult(builder.toString().getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertTrue(output.isPresent());
-    Assert.assertEquals(3,output.get().getMessages().size());
-    Assert.assertEquals(3,output.get().getMessageThrowables().size());
+    assertTrue(output.isPresent());
+    assertEquals(3,output.get().getMessages().size());
+    assertEquals(3,output.get().getMessageThrowables().size());
   }
 }
\ No newline at end of file
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/syslog/Syslog5424ParserTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/syslog/Syslog5424ParserTest.java
index 8cc1c19..5ccdd0a 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/syslog/Syslog5424ParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/syslog/Syslog5424ParserTest.java
@@ -20,23 +20,21 @@
 
 import com.github.palindromicity.syslog.NilPolicy;
 import com.github.palindromicity.syslog.dsl.SyslogFieldKeys;
-import java.nio.charset.StandardCharsets;
 import org.apache.metron.parsers.interfaces.MessageParserResult;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
+import java.nio.charset.StandardCharsets;
 import java.time.Instant;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
-import java.time.format.DateTimeFormatter;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.Consumer;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class Syslog5424ParserTest {
   private static final String SYSLOG_LINE_ALL = "<14>1 2014-06-20T09:14:07+00:00 loggregator"
@@ -108,30 +106,30 @@
 
   @Test
   public void testHappyPath() {
-    test(null, SYSLOG_LINE_ALL, (message) -> Assert.assertEquals(expectedMessageId, message.get(SyslogFieldKeys.HEADER_MSGID.getField())));
+    test(null, SYSLOG_LINE_ALL, (message) -> assertEquals(expectedMessageId, message.get(SyslogFieldKeys.HEADER_MSGID.getField())));
   }
 
   @Test
   public void testOmit() {
-    test(NilPolicy.OMIT, SYSLOG_LINE_MISSING, (message) -> Assert.assertFalse(message.containsKey(SyslogFieldKeys.HEADER_MSGID)));
+    test(NilPolicy.OMIT, SYSLOG_LINE_MISSING, (message) -> assertFalse(message.containsKey(SyslogFieldKeys.HEADER_MSGID)));
   }
 
   @Test
   public void testDash() {
-    test(NilPolicy.DASH, SYSLOG_LINE_MISSING, (message) -> Assert.assertEquals("-", message.get(SyslogFieldKeys.HEADER_MSGID.getField())));
+    test(NilPolicy.DASH, SYSLOG_LINE_MISSING, (message) -> assertEquals("-", message.get(SyslogFieldKeys.HEADER_MSGID.getField())));
   }
 
   @Test()
   public void testNull() {
     test(NilPolicy.NULL, SYSLOG_LINE_MISSING, (message) -> {
-      Assert.assertTrue(message.containsKey(SyslogFieldKeys.HEADER_MSGID.getField()));
-      Assert.assertNull(message.get(SyslogFieldKeys.HEADER_MSGID.getField()));
+      assertTrue(message.containsKey(SyslogFieldKeys.HEADER_MSGID.getField()));
+      assertNull(message.get(SyslogFieldKeys.HEADER_MSGID.getField()));
     });
   }
 
   @Test()
   public void testNotValid() {
-    test(null, "not valid", (message) -> Assert.assertTrue(false));
+    test(null, "not valid", (message) -> assertTrue(false));
   }
 
   public void test(NilPolicy nilPolicy, String line, Consumer<JSONObject> msgIdChecker) {
@@ -160,10 +158,10 @@
             .append(SYSLOG_LINE_ALL);
     Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(builder.toString().getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertNotNull(resultOptional);
-    Assert.assertTrue(resultOptional.isPresent());
+    assertNotNull(resultOptional);
+    assertTrue(resultOptional.isPresent());
     List<JSONObject> parsedList = resultOptional.get().getMessages();
-    Assert.assertEquals(3,parsedList.size());
+    assertEquals(3,parsedList.size());
   }
 
   @Test
@@ -184,9 +182,9 @@
             .append("\nOHMY!");
     Optional<MessageParserResult<JSONObject>> output = parser.parseOptionalResult(builder.toString().getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertTrue(output.isPresent());
-    Assert.assertEquals(3,output.get().getMessages().size());
-    Assert.assertEquals(3,output.get().getMessageThrowables().size());
+    assertTrue(output.isPresent());
+    assertEquals(3,output.get().getMessages().size());
+    assertEquals(3,output.get().getMessageThrowables().size());
   }
 
   @Test
@@ -198,23 +196,23 @@
     parser.configure(config);
     Optional<MessageParserResult<JSONObject>> output  = parser.parseOptionalResult(SYSLOG_LINE_MISSING_DATE.getBytes(
         StandardCharsets.UTF_8));
-    Assert.assertNotNull(output);
-    Assert.assertTrue(output.isPresent());
-    Assert.assertNotNull(output.get().getMessages().get(0).get("timestamp").toString());
+    assertNotNull(output);
+    assertTrue(output.isPresent());
+    assertNotNull(output.get().getMessages().get(0).get("timestamp").toString());
     config.clear();
     config.put(Syslog5424Parser.NIL_POLICY_CONFIG, NilPolicy.NULL.name());
     parser.configure(config);
     output = parser.parseOptionalResult(SYSLOG_LINE_MISSING_DATE.getBytes(StandardCharsets.UTF_8));
-    Assert.assertNotNull(output);
-    Assert.assertTrue(output.isPresent());
+    assertNotNull(output);
+    assertTrue(output.isPresent());
     timeStampString = output.get().getMessages().get(0).get("timestamp").toString();
-    Assert.assertNotNull(timeStampString);
+    assertNotNull(timeStampString);
     config.clear();
     config.put(Syslog5424Parser.NIL_POLICY_CONFIG, NilPolicy.OMIT.name());
     parser.configure(config);
 
     output = parser.parseOptionalResult(SYSLOG_LINE_MISSING_DATE.getBytes(StandardCharsets.UTF_8));
-    Assert.assertNotNull(output);
-    Assert.assertTrue(output.isPresent());
+    assertNotNull(output);
+    assertTrue(output.isPresent());
   }
 }
\ No newline at end of file
diff --git a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/utils/SyslogUtilsTest.java b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/utils/SyslogUtilsTest.java
index 7a12c23..1d650f1 100644
--- a/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/utils/SyslogUtilsTest.java
+++ b/metron-platform/metron-parsing/metron-parsers-common/src/test/java/org/apache/metron/parsers/utils/SyslogUtilsTest.java
@@ -18,13 +18,13 @@
 package org.apache.metron.parsers.utils;
 
 import org.apache.metron.parsers.ParseException;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.time.Clock;
 import java.time.ZoneOffset;
 import java.time.ZonedDateTime;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class SyslogUtilsTest {
 
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/filters/FiltersTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/filters/FiltersTest.java
index 2f3784a..6482d9f 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/filters/FiltersTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/filters/FiltersTest.java
@@ -19,20 +19,21 @@
 package org.apache.metron.filters;
 
 import com.google.common.collect.ImmutableMap;
-import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.parsers.filters.Filters;
 import org.apache.metron.parsers.interfaces.MessageFilter;
+import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class FiltersTest {
   @Test
   public void testDefault() {
-    Assert.assertNull(Filters.get("DEFAULT", null));
+    assertNull(Filters.get("DEFAULT", null));
   }
 
   @Test
@@ -42,8 +43,8 @@
         put("filter.query", "exists(foo)");
       }};
       MessageFilter<JSONObject> filter = Filters.get(Filters.STELLAR.name(), config);
-      Assert.assertTrue(filter.emit(new JSONObject(ImmutableMap.of("foo", 1)), Context.EMPTY_CONTEXT()));
-      Assert.assertFalse(filter.emit(new JSONObject(ImmutableMap.of("bar", 1)), Context.EMPTY_CONTEXT()));
+      assertTrue(filter.emit(new JSONObject(ImmutableMap.of("foo", 1)), Context.EMPTY_CONTEXT()));
+      assertFalse(filter.emit(new JSONObject(ImmutableMap.of("bar", 1)), Context.EMPTY_CONTEXT()));
     }
   }
 
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/SnortParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/SnortParserTest.java
index 9224b0d..4d7c6fa 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/SnortParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/SnortParserTest.java
@@ -18,31 +18,26 @@
 
 package org.apache.metron.parsers;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.startsWith;
-import static org.junit.Assert.assertThat;
-
-import java.nio.charset.StandardCharsets;
-import java.time.ZoneId;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.TimeZone;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.log4j.Level;
 import org.apache.metron.common.Constants;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.apache.metron.parsers.snort.BasicSnortParser;
 import org.apache.metron.test.utils.UnitTestHelper;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Test;
+
+import java.nio.charset.StandardCharsets;
+import java.time.ZoneId;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.TimeZone;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class SnortParserTest {
-
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   /**
    01/27/16-16:01:04.877970 ,129,12,1,"Consecutive TCP small segments, exceeding threshold",TCP,10.0.2.2,56642,10.0.2.15,22,52:54:00:12:35:02,08:00:27:7F:93:2D,0x4E,***AP***,0x9AFF3D7,0xC8761D52,,0xFFFF,64,0,59677,64,65536,,,,
    **/
@@ -53,44 +48,43 @@
   @Test
   public void testGoodMessage() {
     BasicSnortParser parser = new BasicSnortParser();
-    parser.configure(new HashMap());
+    parser.configure(Collections.emptyMap());
     Map out = parser.parse(goodMessage.getBytes(StandardCharsets.UTF_8)).get(0);
-    Assert.assertEquals(out.get("msg"), "Consecutive TCP small segments, exceeding threshold");
-    Assert.assertEquals(out.get("sig_rev"), "1");
-    Assert.assertEquals(out.get("ip_dst_addr"), "10.0.2.15");
-    Assert.assertEquals(out.get("ip_dst_port"), "22");
-    Assert.assertEquals(out.get("ethsrc"), "52:54:00:12:35:02");
-    Assert.assertEquals(out.get("tcpseq"), "0x9AFF3D7");
-    Assert.assertEquals(out.get("dgmlen"), "64");
-    Assert.assertEquals(out.get("icmpid"), "");
-    Assert.assertEquals(out.get("tcplen"), "");
-    Assert.assertEquals(out.get("tcpwindow"), "0xFFFF");
-    Assert.assertEquals(out.get("icmpseq").toString().trim(), "");
-    Assert.assertEquals(out.get("tcpack"), "0xC8761D52");
-    Assert.assertEquals(out.get("icmpcode"), "");
-    Assert.assertEquals(out.get("tos"), "0");
-    Assert.assertEquals(out.get("id"), "59677");
-    Assert.assertEquals(out.get("ethdst"), "08:00:27:7F:93:2D");
-    Assert.assertEquals(out.get("ip_src_addr"), "10.0.2.2");
-    Assert.assertEquals(out.get("ttl"), "64");
-    Assert.assertEquals(out.get("ethlen"), "0x4E");
-    Assert.assertEquals(out.get("iplen"), "65536");
-    Assert.assertEquals(out.get("icmptype"), "");
-    Assert.assertEquals(out.get("protocol"), "TCP");
-    Assert.assertEquals(out.get("ip_src_port"), "56642");
-    Assert.assertEquals(out.get("tcpflags"), "***AP***");
-    Assert.assertEquals(out.get("sig_id"), "12");
-    Assert.assertEquals(out.get("sig_generator"), "129");
-    Assert.assertEquals(out.get("is_alert"), "true");
+    assertEquals(out.get("msg"), "Consecutive TCP small segments, exceeding threshold");
+    assertEquals(out.get("sig_rev"), "1");
+    assertEquals(out.get("ip_dst_addr"), "10.0.2.15");
+    assertEquals(out.get("ip_dst_port"), "22");
+    assertEquals(out.get("ethsrc"), "52:54:00:12:35:02");
+    assertEquals(out.get("tcpseq"), "0x9AFF3D7");
+    assertEquals(out.get("dgmlen"), "64");
+    assertEquals(out.get("icmpid"), "");
+    assertEquals(out.get("tcplen"), "");
+    assertEquals(out.get("tcpwindow"), "0xFFFF");
+    assertEquals(out.get("icmpseq").toString().trim(), "");
+    assertEquals(out.get("tcpack"), "0xC8761D52");
+    assertEquals(out.get("icmpcode"), "");
+    assertEquals(out.get("tos"), "0");
+    assertEquals(out.get("id"), "59677");
+    assertEquals(out.get("ethdst"), "08:00:27:7F:93:2D");
+    assertEquals(out.get("ip_src_addr"), "10.0.2.2");
+    assertEquals(out.get("ttl"), "64");
+    assertEquals(out.get("ethlen"), "0x4E");
+    assertEquals(out.get("iplen"), "65536");
+    assertEquals(out.get("icmptype"), "");
+    assertEquals(out.get("protocol"), "TCP");
+    assertEquals(out.get("ip_src_port"), "56642");
+    assertEquals(out.get("tcpflags"), "***AP***");
+    assertEquals(out.get("sig_id"), "12");
+    assertEquals(out.get("sig_generator"), "129");
+    assertEquals(out.get("is_alert"), "true");
   }
 
   @Test
   public void testBadMessage() {
-    thrown.expect(IllegalStateException.class);
     BasicSnortParser parser = new BasicSnortParser();
     parser.init();
     UnitTestHelper.setLog4jLevel(BasicSnortParser.class, Level.FATAL);
-    parser.parse("foo bar".getBytes(StandardCharsets.UTF_8));
+    assertThrows(IllegalStateException.class, () -> parser.parse("foo bar".getBytes(StandardCharsets.UTF_8)));
     UnitTestHelper.setLog4jLevel(BasicSnortParser.class, Level.ERROR);
   }
 
@@ -103,7 +97,7 @@
       BasicSnortParser parser = new BasicSnortParser();
       parser.configure(new HashMap());
       Map out = parser.parse(goodMessage.getBytes(StandardCharsets.UTF_8)).get(0);
-      Assert.assertEquals(out.get("timestamp"), 1453928464877L);
+      assertEquals(out.get("timestamp"), 1453928464877L);
     } finally {
       // make sure we don't mess with other tests
       TimeZone.setDefault(defaultTimeZone);
@@ -129,23 +123,22 @@
 
   @Test
   public void throws_exception_on_bad_config_timezone() {
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage(startsWith("Unable to find ZoneId"));
     Map<String, Object> parserConfig = new HashMap<>();
     parserConfig.put("dateFormat", "MM/dd/yyyy-HH:mm:ss.SSSSSS");
     parserConfig.put("timeZone", "blahblahBADZONE");
     BasicSnortParser parser = new BasicSnortParser();
-    parser.configure(parserConfig);
+    IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> parser.configure(parserConfig));
+    assertTrue(e.getMessage().startsWith("Unable to find ZoneId"));
   }
 
   @Test
   public void throws_exception_on_bad_config_date_format() {
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage(startsWith("Unknown pattern letter:"));
     Map<String, Object> parserConfig = new HashMap<>();
     parserConfig.put("dateFormat", "BADFORMAT");
     BasicSnortParser parser = new BasicSnortParser();
-    parser.configure(parserConfig);
+    IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> parser.configure(parserConfig));
+    assertTrue(e.getMessage().startsWith("Unknown pattern letter:"));
+
   }
 
   @Test
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/asa/BasicAsaParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/asa/BasicAsaParserTest.java
index f6419f2..75dbfc2 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/asa/BasicAsaParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/asa/BasicAsaParserTest.java
@@ -17,12 +17,12 @@
  */
 package org.apache.metron.parsers.asa;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.startsWith;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
+import org.apache.log4j.Level;
+import org.apache.metron.parsers.interfaces.MessageParser;
+import org.apache.metron.test.utils.UnitTestHelper;
+import org.json.simple.JSONObject;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.time.Clock;
@@ -31,21 +31,17 @@
 import java.time.ZonedDateTime;
 import java.util.HashMap;
 import java.util.Map;
-import org.apache.log4j.Level;
-import org.apache.metron.parsers.interfaces.MessageParser;
-import org.apache.metron.test.utils.UnitTestHelper;
-import org.json.simple.JSONObject;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class BasicAsaParserTest {
 
     private static BasicAsaParser asaParser;
     private Map<String, Object> parserConfig;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
         parserConfig = new HashMap<>();
         asaParser = new BasicAsaParser();
@@ -58,7 +54,7 @@
         BasicAsaParser testParser = new BasicAsaParser();
         testParser.configure(parserConfig);
         testParser.init();
-        assertTrue(testParser.deviceClock.getZone().equals(ZoneOffset.UTC));
+        assertEquals(testParser.deviceClock.getZone(), ZoneOffset.UTC);
     }
 
     @Test
@@ -88,11 +84,11 @@
         String rawMessage = "<164>Aug 05 2016 01:01:34: %ASA-4-106023: Deny tcp src Inside:10.30.9.121/54580 dst Outside:192.168.135.51/42028 by access-group \"Inside_access_in\" [0x962df600, 0x0]";
         JSONObject asaJson = asaParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
         assertEquals(asaJson.get("original_string"), rawMessage);
-        assertTrue(asaJson.get("ip_src_addr").equals("10.30.9.121"));
-        assertTrue(asaJson.get("ip_dst_addr").equals("192.168.135.51"));
-        assertTrue(asaJson.get("ip_src_port").equals(54580));
-        assertTrue(asaJson.get("ip_dst_port").equals(42028));
-        assertTrue((long) asaJson.get("timestamp") == 1470358894000L);
+        assertEquals("10.30.9.121", asaJson.get("ip_src_addr"));
+        assertEquals("192.168.135.51", asaJson.get("ip_dst_addr"));
+        assertEquals(54580, asaJson.get("ip_src_port"));
+        assertEquals(42028, asaJson.get("ip_dst_port"));
+        assertEquals(1470358894000L, (long) asaJson.get("timestamp"));
     }
 
     @Test
@@ -100,11 +96,11 @@
         String rawMessage = "<162>Aug 05 2016 01:02:25: %ASA-2-106006: Deny inbound UDP from 10.25.177.164/63279 to 10.2.52.71/161 on interface Inside";
         JSONObject asaJson = asaParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
         assertEquals(asaJson.get("original_string"), rawMessage);
-        assertTrue(asaJson.get("ip_src_addr").equals("10.25.177.164"));
-        assertTrue(asaJson.get("ip_dst_addr").equals("10.2.52.71"));
-        assertTrue(asaJson.get("ip_src_port").equals(63279));
-        assertTrue(asaJson.get("ip_dst_port").equals(161));
-        assertTrue((long) asaJson.get("timestamp") == 1470358945000L);
+        assertEquals("10.25.177.164", asaJson.get("ip_src_addr"));
+        assertEquals("10.2.52.71", asaJson.get("ip_dst_addr"));
+        assertEquals(63279, asaJson.get("ip_src_port"));
+        assertEquals(161, asaJson.get("ip_dst_port"));
+        assertEquals(1470358945000L, (long) asaJson.get("timestamp"));
     }
 
     @Test
@@ -121,11 +117,11 @@
 
         JSONObject asaJson = fixedClockParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
         assertEquals(asaJson.get("original_string"), rawMessage);
-        assertTrue(asaJson.get("ip_src_addr").equals("10.22.8.110"));
-        assertTrue(asaJson.get("ip_dst_addr").equals("192.111.72.8"));
-        assertTrue(asaJson.get("ip_src_port").equals(49886));
-        assertTrue(asaJson.get("ip_dst_port").equals(8612));
-        assertTrue((long) asaJson.get("timestamp") == 1452005555000L);
+        assertEquals("10.22.8.110", asaJson.get("ip_src_addr"));
+        assertEquals("192.111.72.8", asaJson.get("ip_dst_addr"));
+        assertEquals(49886, asaJson.get("ip_src_port"));
+        assertEquals(8612, asaJson.get("ip_dst_port"));
+        assertEquals(1452005555000L, (long) asaJson.get("timestamp"));
     }
 
     @Test
@@ -133,7 +129,7 @@
         String rawMessage = "<165>Aug 16 2016 04:08:36: %ASA-5-713049: Group = 172.22.136.20, IP = 172.22.136.20, Security negotiation complete for LAN-to-LAN Group (172.22.136.20)  Initiator, Inbound SPI = 0x891fb03f, Outbound SPI = 0xbe4b5d8d";
         JSONObject asaJson = asaParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
         assertEquals(asaJson.get("original_string"), rawMessage);
-        assertTrue((long) asaJson.get("timestamp") == 1471320516000L);
+        assertEquals(1471320516000L, (long) asaJson.get("timestamp"));
     }
 
     @Test
@@ -141,7 +137,7 @@
         String rawMessage = "<164>Aug 05 2016 01:01:34: %ASA-4-106023: Deny tcp src Inside:10.30.9.121/54580 dst Outside:192.168.256.51/42028 by access-group \"Inside_access_in\" [0x962df600, 0x0]";
         JSONObject asaJson = asaParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
         assertEquals(asaJson.get("original_string"), rawMessage);
-        assertTrue((long) asaJson.get("timestamp") == 1470358894000L);
+        assertEquals(1470358894000L, (long) asaJson.get("timestamp"));
         assertNull(asaJson.get("ip_dst_addr"));
     }
 
@@ -157,38 +153,35 @@
         assertEquals(1452005555000L, asaJson.get("timestamp"));
     }
 
-    @Test 
+    @Test
     public void testSyslogIpHost() {
     	String rawMessage = "<174>Jan  5 14:52:35 10.22.8.212 %ASA-6-302015: Built inbound UDP connection 76245506 for outside:10.22.8.110/49886 (10.22.8.110/49886) to inside:192.111.72.8/8612 (192.111.72.8/8612) (user.name)";
     	JSONObject asaJson = asaParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
         assertEquals("10.22.8.212", asaJson.get("syslog_host"));
     }
-    
-    @Test 
+
+    @Test
     public void testSyslogHost() {
     	String rawMessage = "<174>Jan  5 14:52:35 hostname-2 %ASA-6-302015: Built inbound UDP connection 76245506 for outside:10.22.8.110/49886 (10.22.8.110/49886) to inside:192.111.72.8/8612 (192.111.72.8/8612) (user.name)";
     	JSONObject asaJson = asaParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
         assertEquals("hostname-2", asaJson.get("syslog_host"));
     }
-    
-    @Test 
+
+    @Test
     public void testSyslogHostAndProg() {
     	String rawMessage = "<174>Jan  5 14:52:35 hostname-2 progName-2 %ASA-6-302015: Built inbound UDP connection 76245506 for outside:10.22.8.110/49886 (10.22.8.110/49886) to inside:192.111.72.8/8612 (192.111.72.8/8612) (user.name)";
     	JSONObject asaJson = asaParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
     	assertEquals("hostname-2", asaJson.get("syslog_host"));
     	assertEquals("progName-2", asaJson.get("syslog_prog"));
     }
-    
-    @Rule
-    public ExpectedException thrown = ExpectedException.none();
 
     @Test
     public void testUnexpectedMessage() {
         String rawMessage = "-- MARK --";
         UnitTestHelper.setLog4jLevel(BasicAsaParser.class, Level.FATAL);
-        thrown.expect(RuntimeException.class);
-        thrown.expectMessage(startsWith("[Metron] Message '-- MARK --'"));
-        JSONObject asaJson = asaParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
+        RuntimeException e = assertThrows(RuntimeException.class,
+                () -> asaParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0));
+        assertTrue(e.getMessage().startsWith("[Metron] Message '-- MARK --'"));
         UnitTestHelper.setLog4jLevel(BasicAsaParser.class, Level.ERROR);
     }
 
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/bro/BasicBroParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/bro/BasicBroParserTest.java
index 6c04ba9..7984254 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/bro/BasicBroParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/bro/BasicBroParserTest.java
@@ -17,12 +17,6 @@
  */
 package org.apache.metron.parsers.bro;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.Map;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.log4j.Level;
@@ -32,21 +26,28 @@
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class BasicBroParserTest {
 	private BasicBroParser broParser = new BasicBroParser();
 	private JSONParser jsonParser = new JSONParser();
 
-	@BeforeClass
+	@BeforeAll
 	public static void setup() {
 		UnitTestHelper.setLog4jLevel(BasicBroParser.class, Level.FATAL);
 	}
 
-	@AfterClass
+	@AfterAll
 	public static void teardown() {
 		UnitTestHelper.setLog4jLevel(BasicBroParser.class, Level.ERROR);
 	}
@@ -68,7 +69,7 @@
 						Pair.of(12345678.111111d, "12345678.111111")
 		};
 		for (Pair pair : pairs) {
-			Assert.assertEquals("Format did not match", pair.getRight(), BasicBroParser.DECIMAL_FORMAT.get().format(pair.getLeft()));
+			assertEquals(pair.getRight(), BasicBroParser.DECIMAL_FORMAT.get().format(pair.getLeft()), "Format did not match");
 		}
 	}
 
@@ -95,7 +96,7 @@
 	 * }
 	 */
 	@Multiline
-	public final static String unwrappedBroMessage;
+	public static String unwrappedBroMessage;
 
 	@Test
 	public void testUnwrappedBroMessage() throws ParseException {
@@ -103,22 +104,22 @@
         JSONObject broJson = broParser.parse(unwrappedBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
 
 	String expectedBroTimestamp = "1449511228.474";
-      	Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+      	assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
         String expectedTimestamp = "1449511228474";
-	Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+	assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
 
-	Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-	Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-	Assert.assertEquals(broJson.get("ip_src_port"), rawJson.get("id.orig_p"));
-        Assert.assertEquals(broJson.get("ip_dst_port"), rawJson.get("id.resp_p"));
-        Assert.assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
-        Assert.assertEquals(broJson.get("trans_id").toString(), rawJson.get("trans_id").toString());
-        Assert.assertEquals(broJson.get("sensor").toString(), rawJson.get("sensor").toString());
-        Assert.assertEquals(broJson.get("type").toString(), rawJson.get("type").toString());
-        Assert.assertEquals(broJson.get("rcode").toString(), rawJson.get("rcode").toString());
-        Assert.assertEquals(broJson.get("rcode_name").toString(), rawJson.get("rcode_name").toString());
+	assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+	assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+	assertEquals(broJson.get("ip_src_port"), rawJson.get("id.orig_p"));
+        assertEquals(broJson.get("ip_dst_port"), rawJson.get("id.resp_p"));
+        assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
+        assertEquals(broJson.get("trans_id").toString(), rawJson.get("trans_id").toString());
+        assertEquals(broJson.get("sensor").toString(), rawJson.get("sensor").toString());
+        assertEquals(broJson.get("type").toString(), rawJson.get("type").toString());
+        assertEquals(broJson.get("rcode").toString(), rawJson.get("rcode").toString());
+        assertEquals(broJson.get("rcode_name").toString(), rawJson.get("rcode_name").toString());
 
-	Assert.assertTrue(broJson.get("original_string").toString().startsWith("DNS"));
+	assertTrue(broJson.get("original_string").toString().startsWith("DNS"));
     }
 
         /**
@@ -146,7 +147,7 @@
 	 * }
 	 */
         @Multiline
-	public final static String httpBroMessage;
+	public static String httpBroMessage;
 
 	@SuppressWarnings("rawtypes")
 	@Test
@@ -156,21 +157,21 @@
 
 		JSONObject broJson = broParser.parse(httpBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
 		String expectedBroTimestamp = "1402307733.473";
-		Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+		assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
 		String expectedTimestamp = "1402307733473";
-		Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-		Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-		Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-		Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-		Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+		assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+		assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+		assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+		assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+		assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+		assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-		Assert.assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
-		Assert.assertEquals(broJson.get("method").toString(), rawJson.get("method").toString());
-		Assert.assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
-		Assert.assertEquals(broJson.get("resp_mime_types").toString(), rawJson.get("resp_mime_types").toString());
+		assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
+		assertEquals(broJson.get("method").toString(), rawJson.get("method").toString());
+		assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
+		assertEquals(broJson.get("resp_mime_types").toString(), rawJson.get("resp_mime_types").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("HTTP"));
+		assertTrue(broJson.get("original_string").toString().startsWith("HTTP"));
 	}
 
 	/**
@@ -190,9 +191,9 @@
 
 			JSONObject broJson = broParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
 			String expectedTimestamp = "1467657279000";
-			Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+			assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
 			String expectedBroTimestamp = "1467657279.0";
-			Assert.assertEquals(broJson.get("bro_timestamp").toString(), expectedBroTimestamp);
+			assertEquals(broJson.get("bro_timestamp").toString(), expectedBroTimestamp);
 		}
 		{
 			String rawMessage = "{\"http\": {\"ts\":1467657279.0,\"uid\":\"CMYLzP3PKiwZAgBa51\",\"id.orig_h\":\"192.168.138.158\",\"id.orig_p\":49206,\"id.resp_h\":\"95.163.121.204\"," +
@@ -203,9 +204,9 @@
 
 			JSONObject broJson = broParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
 			String expectedTimestamp = "1467657279000";
-			Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+			assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
 			String expectedBroTimestamp = "1467657279.0";
-			Assert.assertEquals(broJson.get("bro_timestamp").toString(), expectedBroTimestamp);
+			assertEquals(broJson.get("bro_timestamp").toString(), expectedBroTimestamp);
 		}
 		{
 			String rawMessage = "{\"http\": {\"ts\":1467657279.1,\"uid\":\"CMYLzP3PKiwZAgBa51\",\"id.orig_h\":\"192.168.138.158\",\"id.orig_p\":49206,\"id.resp_h\":\"95.163.121.204\"," +
@@ -216,9 +217,9 @@
 
 			JSONObject broJson = broParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
 			String expectedTimestamp = "1467657279100";
-			Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+			assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
 			String expectedBroTimestamp = "1467657279.1";
-			Assert.assertEquals(broJson.get("bro_timestamp").toString(), expectedBroTimestamp);
+			assertEquals(broJson.get("bro_timestamp").toString(), expectedBroTimestamp);
 		}
 		{
 			String rawMessage = "{\"http\": {\"ts\":1467657279.11,\"uid\":\"CMYLzP3PKiwZAgBa51\",\"id.orig_h\":\"192.168.138.158\",\"id.orig_p\":49206,\"id.resp_h\":\"95.163.121.204\"," +
@@ -229,9 +230,9 @@
 
 			JSONObject broJson = broParser.parse(rawMessage.getBytes(StandardCharsets.UTF_8)).get(0);
 			String expectedTimestamp = "1467657279110";
-			Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+			assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
 			String expectedBroTimestamp = "1467657279.11";
-			Assert.assertEquals(broJson.get("bro_timestamp").toString(), expectedBroTimestamp);
+			assertEquals(broJson.get("bro_timestamp").toString(), expectedBroTimestamp);
 		}
 	}
 
@@ -260,7 +261,7 @@
          * }
 	 */
 	@Multiline
-	public final static String httpBroDecimalMessage;
+	public static String httpBroDecimalMessage;
 
 	@SuppressWarnings("rawtypes")
 	@Test
@@ -270,21 +271,21 @@
 
 		JSONObject broJson = broParser.parse(httpBroDecimalMessage.getBytes(StandardCharsets.UTF_8)).get(0);
 		String expectedBroTimestamp = "1457149494.166991";
-		Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+		assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
 		String expectedTimestamp = "1457149494166";
-		Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-		Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-		Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-		Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-		Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+		assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+		assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+		assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+		assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+		assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+		assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-		Assert.assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
-		Assert.assertEquals(broJson.get("method").toString(), rawJson.get("method").toString());
-		Assert.assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
-		Assert.assertEquals(broJson.get("resp_mime_types").toString(), rawJson.get("resp_mime_types").toString());
+		assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
+		assertEquals(broJson.get("method").toString(), rawJson.get("method").toString());
+		assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
+		assertEquals(broJson.get("resp_mime_types").toString(), rawJson.get("resp_mime_types").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("HTTP"));
+		assertTrue(broJson.get("original_string").toString().startsWith("HTTP"));
 	}
 
 
@@ -318,7 +319,7 @@
          * }
 	 */
 	@Multiline
-	public final static String dnsBroMessage;
+	public static String dnsBroMessage;
 
 	@SuppressWarnings("rawtypes")
 	@Test
@@ -328,19 +329,19 @@
 
 		JSONObject broJson = broParser.parse(dnsBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
 		String expectedBroTimestamp = "1402308259.609";
-		Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+		assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
 		String expectedTimestamp = "1402308259609";
-		Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-		Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-		Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-		Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-		Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+		assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+		assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+		assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+		assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+		assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+		assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-		Assert.assertEquals(broJson.get("qtype").toString(), rawJson.get("qtype").toString());
-		Assert.assertEquals(broJson.get("trans_id").toString(), rawJson.get("trans_id").toString());
+		assertEquals(broJson.get("qtype").toString(), rawJson.get("qtype").toString());
+		assertEquals(broJson.get("trans_id").toString(), rawJson.get("trans_id").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("DNS"));
+		assertTrue(broJson.get("original_string").toString().startsWith("DNS"));
 	}
 
 	/**
@@ -367,7 +368,7 @@
          * }
 	 */
 	@Multiline
-	public final static String filesBroMessage;
+	public static String filesBroMessage;
 
 	@SuppressWarnings("rawtypes")
 	@Test
@@ -377,18 +378,18 @@
 
 		JSONObject broJson = broParser.parse(filesBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
 		String expectedBroTimestamp = "1425845251.334";
-		Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+		assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
 		String expectedTimestamp = "1425845251334";
-		Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-		Assert.assertEquals(broJson.get("ip_src_addr").toString(), ((JSONArray)rawJson.get("tx_hosts")).get(0).toString());
-		Assert.assertEquals(broJson.get("ip_dst_addr").toString(), ((JSONArray)rawJson.get("rx_hosts")).get(0).toString());
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+		assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+		assertEquals(broJson.get("ip_src_addr").toString(), ((JSONArray)rawJson.get("tx_hosts")).get(0).toString());
+		assertEquals(broJson.get("ip_dst_addr").toString(), ((JSONArray)rawJson.get("rx_hosts")).get(0).toString());
+		assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-		Assert.assertEquals(broJson.get("fuid").toString(), rawJson.get("fuid").toString());
-		Assert.assertEquals(broJson.get("md5").toString(), rawJson.get("md5").toString());
-		Assert.assertEquals(broJson.get("analyzers").toString(), rawJson.get("analyzers").toString());
+		assertEquals(broJson.get("fuid").toString(), rawJson.get("fuid").toString());
+		assertEquals(broJson.get("md5").toString(), rawJson.get("md5").toString());
+		assertEquals(broJson.get("analyzers").toString(), rawJson.get("analyzers").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("FILES"));
+		assertTrue(broJson.get("original_string").toString().startsWith("FILES"));
 	}
 
 	/**
@@ -417,7 +418,7 @@
          * }
 	 */
 	@Multiline
-	public final static String connBroMessage;
+	public static String connBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -427,30 +428,30 @@
 
                 JSONObject broJson = broParser.parse(connBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1166289883.163553";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1166289883163";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("proto").toString(), rawJson.get("proto").toString());
-                Assert.assertEquals(broJson.get("service").toString(), rawJson.get("service").toString());
-                Assert.assertEquals(broJson.get("duration").toString(), rawJson.get("duration").toString());
-                Assert.assertEquals(broJson.get("orig_bytes").toString(), rawJson.get("orig_bytes").toString());
-                Assert.assertEquals(broJson.get("resp_bytes").toString(), rawJson.get("resp_bytes").toString());
-                Assert.assertEquals(broJson.get("conn_state").toString(), rawJson.get("conn_state").toString());
-                Assert.assertEquals(broJson.get("missed_bytes").toString(), rawJson.get("missed_bytes").toString());
-                Assert.assertEquals(broJson.get("history").toString(), rawJson.get("history").toString());
-                Assert.assertEquals(broJson.get("orig_pkts").toString(), rawJson.get("orig_pkts").toString());
-                Assert.assertEquals(broJson.get("orig_ip_bytes").toString(), rawJson.get("orig_ip_bytes").toString());
-                Assert.assertEquals(broJson.get("resp_pkts").toString(), rawJson.get("resp_pkts").toString());
-                Assert.assertEquals(broJson.get("resp_ip_bytes").toString(), rawJson.get("resp_ip_bytes").toString());
-                Assert.assertEquals(broJson.get("tunnel_parents").toString(), rawJson.get("tunnel_parents").toString());
+                assertEquals(broJson.get("proto").toString(), rawJson.get("proto").toString());
+                assertEquals(broJson.get("service").toString(), rawJson.get("service").toString());
+                assertEquals(broJson.get("duration").toString(), rawJson.get("duration").toString());
+                assertEquals(broJson.get("orig_bytes").toString(), rawJson.get("orig_bytes").toString());
+                assertEquals(broJson.get("resp_bytes").toString(), rawJson.get("resp_bytes").toString());
+                assertEquals(broJson.get("conn_state").toString(), rawJson.get("conn_state").toString());
+                assertEquals(broJson.get("missed_bytes").toString(), rawJson.get("missed_bytes").toString());
+                assertEquals(broJson.get("history").toString(), rawJson.get("history").toString());
+                assertEquals(broJson.get("orig_pkts").toString(), rawJson.get("orig_pkts").toString());
+                assertEquals(broJson.get("orig_ip_bytes").toString(), rawJson.get("orig_ip_bytes").toString());
+                assertEquals(broJson.get("resp_pkts").toString(), rawJson.get("resp_pkts").toString());
+                assertEquals(broJson.get("resp_ip_bytes").toString(), rawJson.get("resp_ip_bytes").toString());
+                assertEquals(broJson.get("tunnel_parents").toString(), rawJson.get("tunnel_parents").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("CONN"));
+		assertTrue(broJson.get("original_string").toString().startsWith("CONN"));
         }
 
         /**
@@ -469,7 +470,7 @@
          * }
 	 */
         @Multiline
-	public final static String dpdBroMessage;
+	public static String dpdBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -479,20 +480,20 @@
 
                 JSONObject broJson = broParser.parse(dpdBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1216704078.712276";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1216704078712";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("proto").toString(), rawJson.get("proto").toString());
-                Assert.assertEquals(broJson.get("analyzer").toString(), rawJson.get("analyzer").toString());
-                Assert.assertEquals(broJson.get("failure_reason").toString(), rawJson.get("failure_reason").toString());
+                assertEquals(broJson.get("proto").toString(), rawJson.get("proto").toString());
+                assertEquals(broJson.get("analyzer").toString(), rawJson.get("analyzer").toString());
+                assertEquals(broJson.get("failure_reason").toString(), rawJson.get("failure_reason").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("DPD"));
+		assertTrue(broJson.get("original_string").toString().startsWith("DPD"));
         }
 
         /**
@@ -517,7 +518,7 @@
          * }
 	 */
         @Multiline
-	public final static String ftpBroMessage;
+    public static String ftpBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -527,26 +528,26 @@
 
                 JSONObject broJson = broParser.parse(ftpBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1166289883.164645";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1166289883164";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("user").toString(), rawJson.get("user").toString());
-                Assert.assertEquals(broJson.get("password").toString(), rawJson.get("password").toString());
-                Assert.assertEquals(broJson.get("command").toString(), rawJson.get("command").toString());
-                Assert.assertEquals(broJson.get("arg").toString(), rawJson.get("arg").toString());
-                Assert.assertEquals(broJson.get("mime_type").toString(), rawJson.get("mime_type").toString());
-                Assert.assertEquals(broJson.get("file_size").toString(), rawJson.get("file_size").toString());
-                Assert.assertEquals(broJson.get("reply_code").toString(), rawJson.get("reply_code").toString());
-                Assert.assertEquals(broJson.get("reply_msg").toString(), rawJson.get("reply_msg").toString());
-                Assert.assertEquals(broJson.get("fuid").toString(), rawJson.get("fuid").toString());
+                assertEquals(broJson.get("user").toString(), rawJson.get("user").toString());
+                assertEquals(broJson.get("password").toString(), rawJson.get("password").toString());
+                assertEquals(broJson.get("command").toString(), rawJson.get("command").toString());
+                assertEquals(broJson.get("arg").toString(), rawJson.get("arg").toString());
+                assertEquals(broJson.get("mime_type").toString(), rawJson.get("mime_type").toString());
+                assertEquals(broJson.get("file_size").toString(), rawJson.get("file_size").toString());
+                assertEquals(broJson.get("reply_code").toString(), rawJson.get("reply_code").toString());
+                assertEquals(broJson.get("reply_msg").toString(), rawJson.get("reply_msg").toString());
+                assertEquals(broJson.get("fuid").toString(), rawJson.get("fuid").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("FTP"));
+		assertTrue(broJson.get("original_string").toString().startsWith("FTP"));
         }
 
 	/**
@@ -562,7 +563,7 @@
          * }
 	 */
 	@Multiline
-	public final static String knownCertsBroMessage;
+    public static String knownCertsBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -573,18 +574,18 @@
                 JSONObject broJson = broParser.parse(knownCertsBroMessage.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1216706999.896836";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1216706999896";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
-                Assert.assertEquals(broJson.get("port_num").toString(), rawJson.get("port_num").toString());
-                Assert.assertEquals(broJson.get("subject").toString(), rawJson.get("subject").toString());
-                Assert.assertEquals(broJson.get("issuer_subject").toString(), rawJson.get("issuer_subject").toString());
-                Assert.assertEquals(broJson.get("serial").toString(), rawJson.get("serial").toString());
+                assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
+                assertEquals(broJson.get("port_num").toString(), rawJson.get("port_num").toString());
+                assertEquals(broJson.get("subject").toString(), rawJson.get("subject").toString());
+                assertEquals(broJson.get("issuer_subject").toString(), rawJson.get("issuer_subject").toString());
+                assertEquals(broJson.get("serial").toString(), rawJson.get("serial").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("KNOWN_CERTS"));
+		assertTrue(broJson.get("original_string").toString().startsWith("KNOWN_CERTS"));
         }
 
 	/**
@@ -607,7 +608,7 @@
          * }
 	 */
 	@Multiline
-	public final static String smtpBroMessage;
+    public static String smtpBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -617,24 +618,24 @@
 
                 JSONObject broJson = broParser.parse(smtpBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1258568059.130219";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1258568059130";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("trans_depth").toString(), rawJson.get("trans_depth").toString());
-                Assert.assertEquals(broJson.get("helo").toString(), rawJson.get("helo").toString());
-                Assert.assertEquals(broJson.get("last_reply").toString(), rawJson.get("last_reply").toString());
-                Assert.assertEquals(broJson.get("path").toString(), rawJson.get("path").toString());
-                Assert.assertEquals(broJson.get("tls").toString(), rawJson.get("tls").toString());
-                Assert.assertEquals(broJson.get("fuids").toString(), rawJson.get("fuids").toString());
-                Assert.assertEquals(broJson.get("is_webmail").toString(), rawJson.get("is_webmail").toString());
+                assertEquals(broJson.get("trans_depth").toString(), rawJson.get("trans_depth").toString());
+                assertEquals(broJson.get("helo").toString(), rawJson.get("helo").toString());
+                assertEquals(broJson.get("last_reply").toString(), rawJson.get("last_reply").toString());
+                assertEquals(broJson.get("path").toString(), rawJson.get("path").toString());
+                assertEquals(broJson.get("tls").toString(), rawJson.get("tls").toString());
+                assertEquals(broJson.get("fuids").toString(), rawJson.get("fuids").toString());
+                assertEquals(broJson.get("is_webmail").toString(), rawJson.get("is_webmail").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("SMTP"));
+		assertTrue(broJson.get("original_string").toString().startsWith("SMTP"));
         }
 
 	/**
@@ -660,7 +661,7 @@
          * }
 	 */
 	@Multiline
-	public final static String sslBroMessage;
+    public static String sslBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -670,27 +671,27 @@
 
                 JSONObject broJson = broParser.parse(sslBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1216706999.444925";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1216706999444";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("version").toString(), rawJson.get("version").toString());
-                Assert.assertEquals(broJson.get("cipher").toString(), rawJson.get("cipher").toString());
-                Assert.assertEquals(broJson.get("server_name").toString(), rawJson.get("server_name").toString());
-                Assert.assertEquals(broJson.get("resumed").toString(), rawJson.get("resumed").toString());
-                Assert.assertEquals(broJson.get("established").toString(), rawJson.get("established").toString());
-                Assert.assertEquals(broJson.get("cert_chain_fuids").toString(), rawJson.get("cert_chain_fuids").toString());
-                Assert.assertEquals(broJson.get("client_cert_chain_fuids").toString(), rawJson.get("client_cert_chain_fuids").toString());
-                Assert.assertEquals(broJson.get("subject").toString(), rawJson.get("subject").toString());
-                Assert.assertEquals(broJson.get("issuer").toString(), rawJson.get("issuer").toString());
-                Assert.assertEquals(broJson.get("validation_status").toString(), rawJson.get("validation_status").toString());
+                assertEquals(broJson.get("version").toString(), rawJson.get("version").toString());
+                assertEquals(broJson.get("cipher").toString(), rawJson.get("cipher").toString());
+                assertEquals(broJson.get("server_name").toString(), rawJson.get("server_name").toString());
+                assertEquals(broJson.get("resumed").toString(), rawJson.get("resumed").toString());
+                assertEquals(broJson.get("established").toString(), rawJson.get("established").toString());
+                assertEquals(broJson.get("cert_chain_fuids").toString(), rawJson.get("cert_chain_fuids").toString());
+                assertEquals(broJson.get("client_cert_chain_fuids").toString(), rawJson.get("client_cert_chain_fuids").toString());
+                assertEquals(broJson.get("subject").toString(), rawJson.get("subject").toString());
+                assertEquals(broJson.get("issuer").toString(), rawJson.get("issuer").toString());
+                assertEquals(broJson.get("validation_status").toString(), rawJson.get("validation_status").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("SSL"));
+		assertTrue(broJson.get("original_string").toString().startsWith("SSL"));
         }
 
         /**
@@ -709,7 +710,7 @@
          * }
          */
         @Multiline
-        public final static String weirdBroMessage;
+    public static String weirdBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -720,20 +721,20 @@
                 JSONObject broJson = broParser.parse(weirdBroMessage.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1216706886.239896";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1216706886239";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("name").toString(), rawJson.get("name").toString());
-                Assert.assertEquals(broJson.get("notice").toString(), rawJson.get("notice").toString());
-                Assert.assertEquals(broJson.get("peer").toString(), rawJson.get("peer").toString());
+                assertEquals(broJson.get("name").toString(), rawJson.get("name").toString());
+                assertEquals(broJson.get("notice").toString(), rawJson.get("notice").toString());
+                assertEquals(broJson.get("peer").toString(), rawJson.get("peer").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("WEIRD"));
+		assertTrue(broJson.get("original_string").toString().startsWith("WEIRD"));
         }
 
         /**
@@ -760,7 +761,7 @@
          * }
          */
         @Multiline
-        public final static String noticeBroMessage;
+    public static String noticeBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -771,28 +772,28 @@
                 JSONObject broJson = broParser.parse(noticeBroMessage.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1216706377.196728";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1216706377196";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("proto").toString(), rawJson.get("proto").toString());
-                Assert.assertEquals(broJson.get("note").toString(), rawJson.get("note").toString());
-                Assert.assertEquals(broJson.get("msg").toString(), rawJson.get("msg").toString());
-                Assert.assertEquals(broJson.get("sub").toString(), rawJson.get("sub").toString());
-                Assert.assertEquals(broJson.get("src").toString(), rawJson.get("src").toString());
-                Assert.assertEquals(broJson.get("dst").toString(), rawJson.get("dst").toString());
-                Assert.assertEquals(broJson.get("p").toString(), rawJson.get("p").toString());
-                Assert.assertEquals(broJson.get("peer_descr").toString(), rawJson.get("peer_descr").toString());
-                Assert.assertEquals(broJson.get("actions").toString(), rawJson.get("actions").toString());
-                Assert.assertEquals(broJson.get("suppress_for").toString(), rawJson.get("suppress_for").toString());
-                Assert.assertEquals(broJson.get("dropped").toString(), rawJson.get("dropped").toString());
+                assertEquals(broJson.get("proto").toString(), rawJson.get("proto").toString());
+                assertEquals(broJson.get("note").toString(), rawJson.get("note").toString());
+                assertEquals(broJson.get("msg").toString(), rawJson.get("msg").toString());
+                assertEquals(broJson.get("sub").toString(), rawJson.get("sub").toString());
+                assertEquals(broJson.get("src").toString(), rawJson.get("src").toString());
+                assertEquals(broJson.get("dst").toString(), rawJson.get("dst").toString());
+                assertEquals(broJson.get("p").toString(), rawJson.get("p").toString());
+                assertEquals(broJson.get("peer_descr").toString(), rawJson.get("peer_descr").toString());
+                assertEquals(broJson.get("actions").toString(), rawJson.get("actions").toString());
+                assertEquals(broJson.get("suppress_for").toString(), rawJson.get("suppress_for").toString());
+                assertEquals(broJson.get("dropped").toString(), rawJson.get("dropped").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("NOTICE"));
+		assertTrue(broJson.get("original_string").toString().startsWith("NOTICE"));
         }
 
         /**
@@ -812,7 +813,7 @@
          * }
          */
         @Multiline
-        public final static String dhcpBroMessage;
+    public static String dhcpBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -822,21 +823,21 @@
 
                 JSONObject broJson = broParser.parse(dhcpBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1258567562.944638";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1258567562944";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("mac").toString(), rawJson.get("mac").toString());
-                Assert.assertEquals(broJson.get("assigned_ip").toString(), rawJson.get("assigned_ip").toString());
-                Assert.assertEquals(broJson.get("lease_time").toString(), rawJson.get("lease_time").toString());
-                Assert.assertEquals(broJson.get("trans_id").toString(), rawJson.get("trans_id").toString());
+                assertEquals(broJson.get("mac").toString(), rawJson.get("mac").toString());
+                assertEquals(broJson.get("assigned_ip").toString(), rawJson.get("assigned_ip").toString());
+                assertEquals(broJson.get("lease_time").toString(), rawJson.get("lease_time").toString());
+                assertEquals(broJson.get("trans_id").toString(), rawJson.get("trans_id").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("DHCP"));
+		assertTrue(broJson.get("original_string").toString().startsWith("DHCP"));
         }
 
         /**
@@ -862,7 +863,7 @@
          * }
          */
         @Multiline
-        public final static String sshBroMessage;
+    public static String sshBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -872,27 +873,27 @@
 
                 JSONObject broJson = broParser.parse(sshBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1320435870.747967";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1320435870747";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("version").toString(), rawJson.get("version").toString());
-                Assert.assertEquals(broJson.get("auth_success").toString(), rawJson.get("auth_success").toString());
-                Assert.assertEquals(broJson.get("client").toString(), rawJson.get("client").toString());
-                Assert.assertEquals(broJson.get("server").toString(), rawJson.get("server").toString());
-                Assert.assertEquals(broJson.get("cipher_alg").toString(), rawJson.get("cipher_alg").toString());
-                Assert.assertEquals(broJson.get("mac_alg").toString(), rawJson.get("mac_alg").toString());
-                Assert.assertEquals(broJson.get("compression_alg").toString(), rawJson.get("compression_alg").toString());
-                Assert.assertEquals(broJson.get("kex_alg").toString(), rawJson.get("kex_alg").toString());
-                Assert.assertEquals(broJson.get("host_key_alg").toString(), rawJson.get("host_key_alg").toString());
-                Assert.assertEquals(broJson.get("host_key").toString(), rawJson.get("host_key").toString());
+                assertEquals(broJson.get("version").toString(), rawJson.get("version").toString());
+                assertEquals(broJson.get("auth_success").toString(), rawJson.get("auth_success").toString());
+                assertEquals(broJson.get("client").toString(), rawJson.get("client").toString());
+                assertEquals(broJson.get("server").toString(), rawJson.get("server").toString());
+                assertEquals(broJson.get("cipher_alg").toString(), rawJson.get("cipher_alg").toString());
+                assertEquals(broJson.get("mac_alg").toString(), rawJson.get("mac_alg").toString());
+                assertEquals(broJson.get("compression_alg").toString(), rawJson.get("compression_alg").toString());
+                assertEquals(broJson.get("kex_alg").toString(), rawJson.get("kex_alg").toString());
+                assertEquals(broJson.get("host_key_alg").toString(), rawJson.get("host_key_alg").toString());
+                assertEquals(broJson.get("host_key").toString(), rawJson.get("host_key").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("SSH"));
+		assertTrue(broJson.get("original_string").toString().startsWith("SSH"));
         }
 
         /**
@@ -911,7 +912,7 @@
          * }
          */
         @Multiline
-        public final static String softwareBroMessage;
+    public static String softwareBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -922,21 +923,21 @@
                 JSONObject broJson = broParser.parse(softwareBroMessage.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1216707079.49066";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1216707079490";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
-                Assert.assertEquals(broJson.get("host_p").toString(), rawJson.get("host_p").toString());
-                Assert.assertEquals(broJson.get("software_type").toString(), rawJson.get("software_type").toString());
-                Assert.assertEquals(broJson.get("name").toString(), rawJson.get("name").toString());
-                Assert.assertEquals(broJson.get("version.major").toString(), rawJson.get("version.major").toString());
-                Assert.assertEquals(broJson.get("version.minor").toString(), rawJson.get("version.minor").toString());
-                Assert.assertEquals(broJson.get("version.minor2").toString(), rawJson.get("version.minor2").toString());
-                Assert.assertEquals(broJson.get("unparsed_version").toString(), rawJson.get("unparsed_version").toString());
+                assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
+                assertEquals(broJson.get("host_p").toString(), rawJson.get("host_p").toString());
+                assertEquals(broJson.get("software_type").toString(), rawJson.get("software_type").toString());
+                assertEquals(broJson.get("name").toString(), rawJson.get("name").toString());
+                assertEquals(broJson.get("version.major").toString(), rawJson.get("version.major").toString());
+                assertEquals(broJson.get("version.minor").toString(), rawJson.get("version.minor").toString());
+                assertEquals(broJson.get("version.minor2").toString(), rawJson.get("version.minor2").toString());
+                assertEquals(broJson.get("unparsed_version").toString(), rawJson.get("unparsed_version").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("SOFTWARE"));
+		assertTrue(broJson.get("original_string").toString().startsWith("SOFTWARE"));
         }
 
         /**
@@ -952,7 +953,7 @@
          * }
          */
         @Multiline
-        public final static String softwareBroMessage2;
+    public static String softwareBroMessage2;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -963,18 +964,18 @@
                 JSONObject broJson = broParser.parse(softwareBroMessage2.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1216707079.518447";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1216707079518";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
-                Assert.assertEquals(broJson.get("host_p").toString(), rawJson.get("host_p").toString());
-                Assert.assertEquals(broJson.get("software_type").toString(), rawJson.get("software_type").toString());
-                Assert.assertEquals(broJson.get("name").toString(), rawJson.get("name").toString());
-                Assert.assertEquals(broJson.get("unparsed_version").toString(), rawJson.get("unparsed_version").toString());
+                assertEquals(broJson.get("host").toString(), rawJson.get("host").toString());
+                assertEquals(broJson.get("host_p").toString(), rawJson.get("host_p").toString());
+                assertEquals(broJson.get("software_type").toString(), rawJson.get("software_type").toString());
+                assertEquals(broJson.get("name").toString(), rawJson.get("name").toString());
+                assertEquals(broJson.get("unparsed_version").toString(), rawJson.get("unparsed_version").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("SOFTWARE"));
+		assertTrue(broJson.get("original_string").toString().startsWith("SOFTWARE"));
         }
 
         /**
@@ -992,7 +993,7 @@
          * }
          */
         @Multiline
-        public final static String radiusBroMessageFailed;
+    public static String radiusBroMessageFailed;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -1003,19 +1004,19 @@
                 JSONObject broJson = broParser.parse(radiusBroMessageFailed.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1440447766.441298";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1440447766441";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("username").toString(), rawJson.get("username").toString());
-                Assert.assertEquals(broJson.get("result").toString(), rawJson.get("result").toString());
+                assertEquals(broJson.get("username").toString(), rawJson.get("username").toString());
+                assertEquals(broJson.get("result").toString(), rawJson.get("result").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("RADIUS"));
+		assertTrue(broJson.get("original_string").toString().startsWith("RADIUS"));
         }
 
         /**
@@ -1033,7 +1034,7 @@
          * }
          */
         @Multiline
-        public final static String radiusBroMessageSuccess;
+    public static String radiusBroMessageSuccess;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -1044,19 +1045,19 @@
                 JSONObject broJson = broParser.parse(radiusBroMessageSuccess.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1440447839.947956";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1440447839947";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("username").toString(), rawJson.get("username").toString());
-                Assert.assertEquals(broJson.get("result").toString(), rawJson.get("result").toString());
+                assertEquals(broJson.get("username").toString(), rawJson.get("username").toString());
+                assertEquals(broJson.get("result").toString(), rawJson.get("result").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("RADIUS"));
+		assertTrue(broJson.get("original_string").toString().startsWith("RADIUS"));
         }
 
 	/**
@@ -1080,7 +1081,7 @@
          * }
          */
         @Multiline
-        public final static String x509BroMessage;
+    public static String x509BroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -1090,27 +1091,27 @@
 
                 JSONObject broJson = broParser.parse(x509BroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1216706999.661483";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1216706999661";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("id").toString(), rawJson.get("id").toString());
-                Assert.assertEquals(broJson.get("certificate.version").toString(), rawJson.get("certificate.version").toString());
-                Assert.assertEquals(broJson.get("certificate.serial").toString(), rawJson.get("certificate.serial").toString());
-                Assert.assertEquals(broJson.get("certificate.subject").toString(), rawJson.get("certificate.subject").toString());
-                Assert.assertEquals(broJson.get("certificate.issuer").toString(), rawJson.get("certificate.issuer").toString());
-                Assert.assertEquals(broJson.get("certificate.not_valid_before").toString(), rawJson.get("certificate.not_valid_before").toString());
-                Assert.assertEquals(broJson.get("certificate.not_valid_after").toString(), rawJson.get("certificate.not_valid_after").toString());
-                Assert.assertEquals(broJson.get("certificate.key_alg").toString(), rawJson.get("certificate.key_alg").toString());
-                Assert.assertEquals(broJson.get("certificate.sig_alg").toString(), rawJson.get("certificate.sig_alg").toString());
-                Assert.assertEquals(broJson.get("certificate.key_type").toString(), rawJson.get("certificate.key_type").toString());
-                Assert.assertEquals(broJson.get("certificate.key_length").toString(), rawJson.get("certificate.key_length").toString());
-                Assert.assertEquals(broJson.get("certificate.exponent").toString(), rawJson.get("certificate.exponent").toString());
-                Assert.assertEquals(broJson.get("basic_constraints.ca").toString(), rawJson.get("basic_constraints.ca").toString());
-                Assert.assertEquals(broJson.get("basic_constraints.path_len").toString(), rawJson.get("basic_constraints.path_len").toString());
+                assertEquals(broJson.get("id").toString(), rawJson.get("id").toString());
+                assertEquals(broJson.get("certificate.version").toString(), rawJson.get("certificate.version").toString());
+                assertEquals(broJson.get("certificate.serial").toString(), rawJson.get("certificate.serial").toString());
+                assertEquals(broJson.get("certificate.subject").toString(), rawJson.get("certificate.subject").toString());
+                assertEquals(broJson.get("certificate.issuer").toString(), rawJson.get("certificate.issuer").toString());
+                assertEquals(broJson.get("certificate.not_valid_before").toString(), rawJson.get("certificate.not_valid_before").toString());
+                assertEquals(broJson.get("certificate.not_valid_after").toString(), rawJson.get("certificate.not_valid_after").toString());
+                assertEquals(broJson.get("certificate.key_alg").toString(), rawJson.get("certificate.key_alg").toString());
+                assertEquals(broJson.get("certificate.sig_alg").toString(), rawJson.get("certificate.sig_alg").toString());
+                assertEquals(broJson.get("certificate.key_type").toString(), rawJson.get("certificate.key_type").toString());
+                assertEquals(broJson.get("certificate.key_length").toString(), rawJson.get("certificate.key_length").toString());
+                assertEquals(broJson.get("certificate.exponent").toString(), rawJson.get("certificate.exponent").toString());
+                assertEquals(broJson.get("basic_constraints.ca").toString(), rawJson.get("basic_constraints.ca").toString());
+                assertEquals(broJson.get("basic_constraints.path_len").toString(), rawJson.get("basic_constraints.path_len").toString());
 
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("X509"));
+		assertTrue(broJson.get("original_string").toString().startsWith("X509"));
         }
 
 	/**
@@ -1123,7 +1124,7 @@
          * }
 	 */
 	@Multiline
-	public final static String knownDevicesBroMessage;
+    public static String knownDevicesBroMessage;
 
         @SuppressWarnings("rawtypes")
 	@Test
@@ -1134,15 +1135,15 @@
                 JSONObject broJson = broParser.parse(knownDevicesBroMessage.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1258532046.693816";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1258532046693";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("mac").toString(), rawJson.get("mac").toString());
-                Assert.assertEquals(broJson.get("dhcp_host_name").toString(), rawJson.get("dhcp_host_name").toString());
+                assertEquals(broJson.get("mac").toString(), rawJson.get("mac").toString());
+                assertEquals(broJson.get("dhcp_host_name").toString(), rawJson.get("dhcp_host_name").toString());
 
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith("KNOWN_DEVICES"));
+                assertTrue(broJson.get("original_string").toString().startsWith("KNOWN_DEVICES"));
         }
 
 	/**
@@ -1168,7 +1169,7 @@
          * }
          */
         @Multiline
-        public final static String rfbBroMessage;
+    public static String rfbBroMessage;
 
         @SuppressWarnings("rawtypes")
         @Test
@@ -1178,26 +1179,26 @@
 
                 JSONObject broJson = broParser.parse(rfbBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1328634261.675248";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1328634261675";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertEquals(broJson.get("client_major_version").toString(), rawJson.get("client_major_version").toString());
-                Assert.assertEquals(broJson.get("client_minor_version").toString(), rawJson.get("client_minor_version").toString());
-                Assert.assertEquals(broJson.get("server_major_version").toString(), rawJson.get("server_major_version").toString());
-                Assert.assertEquals(broJson.get("server_minor_version").toString(), rawJson.get("server_minor_version").toString());
-                Assert.assertEquals(broJson.get("authentication_method").toString(), rawJson.get("authentication_method").toString());
-                Assert.assertEquals(broJson.get("auth").toString(), rawJson.get("auth").toString());
-                Assert.assertEquals(broJson.get("share_flag").toString(), rawJson.get("share_flag").toString());
-                Assert.assertEquals(broJson.get("desktop_name").toString(), rawJson.get("desktop_name").toString());
-                Assert.assertEquals(broJson.get("width").toString(), rawJson.get("width").toString());
-                Assert.assertEquals(broJson.get("height").toString(), rawJson.get("height").toString());
+                assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertEquals(broJson.get("client_major_version").toString(), rawJson.get("client_major_version").toString());
+                assertEquals(broJson.get("client_minor_version").toString(), rawJson.get("client_minor_version").toString());
+                assertEquals(broJson.get("server_major_version").toString(), rawJson.get("server_major_version").toString());
+                assertEquals(broJson.get("server_minor_version").toString(), rawJson.get("server_minor_version").toString());
+                assertEquals(broJson.get("authentication_method").toString(), rawJson.get("authentication_method").toString());
+                assertEquals(broJson.get("auth").toString(), rawJson.get("auth").toString());
+                assertEquals(broJson.get("share_flag").toString(), rawJson.get("share_flag").toString());
+                assertEquals(broJson.get("desktop_name").toString(), rawJson.get("desktop_name").toString());
+                assertEquals(broJson.get("width").toString(), rawJson.get("width").toString());
+                assertEquals(broJson.get("height").toString(), rawJson.get("height").toString());
         }
 
        /**
@@ -1230,7 +1231,7 @@
          * }
          */
         @Multiline
-        public final static String statsBroMessage;
+    public static String statsBroMessage;
 
         @SuppressWarnings("rawtypes")
         @Test
@@ -1241,33 +1242,33 @@
                 JSONObject broJson = broParser.parse(statsBroMessage.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1440447766.440305";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1440447766440";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("peer").toString(), rawJson.get("peer").toString());
-                Assert.assertEquals(broJson.get("mem").toString(), rawJson.get("mem").toString());
-                Assert.assertEquals(broJson.get("pkts_proc").toString(), rawJson.get("pkts_proc").toString());
-                Assert.assertEquals(broJson.get("bytes_recv").toString(), rawJson.get("bytes_recv").toString());
-                Assert.assertEquals(broJson.get("events_proc").toString(), rawJson.get("events_proc").toString());
-                Assert.assertEquals(broJson.get("events_queued").toString(), rawJson.get("events_queued").toString());
-                Assert.assertEquals(broJson.get("active_tcp_conns").toString(), rawJson.get("active_tcp_conns").toString());
-                Assert.assertEquals(broJson.get("active_udp_conns").toString(), rawJson.get("active_udp_conns").toString());
-                Assert.assertEquals(broJson.get("active_icmp_conns").toString(), rawJson.get("active_icmp_conns").toString());
-                Assert.assertEquals(broJson.get("tcp_conns").toString(), rawJson.get("tcp_conns").toString());
-                Assert.assertEquals(broJson.get("udp_conns").toString(), rawJson.get("udp_conns").toString());
-                Assert.assertEquals(broJson.get("icmp_conns").toString(), rawJson.get("icmp_conns").toString());
-                Assert.assertEquals(broJson.get("timers").toString(), rawJson.get("timers").toString());
-                Assert.assertEquals(broJson.get("active_timers").toString(), rawJson.get("active_timers").toString());
-                Assert.assertEquals(broJson.get("files").toString(), rawJson.get("files").toString());
-                Assert.assertEquals(broJson.get("active_files").toString(), rawJson.get("active_files").toString());
-                Assert.assertEquals(broJson.get("dns_requests").toString(), rawJson.get("dns_requests").toString());
-                Assert.assertEquals(broJson.get("active_dns_requests").toString(), rawJson.get("active_dns_requests").toString());
-                Assert.assertEquals(broJson.get("reassem_tcp_size").toString(), rawJson.get("reassem_tcp_size").toString());
-                Assert.assertEquals(broJson.get("reassem_file_size").toString(), rawJson.get("reassem_file_size").toString());
-                Assert.assertEquals(broJson.get("reassem_frag_size").toString(), rawJson.get("reassem_frag_size").toString());
-                Assert.assertEquals(broJson.get("reassem_unknown_size").toString(), rawJson.get("reassem_unknown_size").toString());
+                assertEquals(broJson.get("peer").toString(), rawJson.get("peer").toString());
+                assertEquals(broJson.get("mem").toString(), rawJson.get("mem").toString());
+                assertEquals(broJson.get("pkts_proc").toString(), rawJson.get("pkts_proc").toString());
+                assertEquals(broJson.get("bytes_recv").toString(), rawJson.get("bytes_recv").toString());
+                assertEquals(broJson.get("events_proc").toString(), rawJson.get("events_proc").toString());
+                assertEquals(broJson.get("events_queued").toString(), rawJson.get("events_queued").toString());
+                assertEquals(broJson.get("active_tcp_conns").toString(), rawJson.get("active_tcp_conns").toString());
+                assertEquals(broJson.get("active_udp_conns").toString(), rawJson.get("active_udp_conns").toString());
+                assertEquals(broJson.get("active_icmp_conns").toString(), rawJson.get("active_icmp_conns").toString());
+                assertEquals(broJson.get("tcp_conns").toString(), rawJson.get("tcp_conns").toString());
+                assertEquals(broJson.get("udp_conns").toString(), rawJson.get("udp_conns").toString());
+                assertEquals(broJson.get("icmp_conns").toString(), rawJson.get("icmp_conns").toString());
+                assertEquals(broJson.get("timers").toString(), rawJson.get("timers").toString());
+                assertEquals(broJson.get("active_timers").toString(), rawJson.get("active_timers").toString());
+                assertEquals(broJson.get("files").toString(), rawJson.get("files").toString());
+                assertEquals(broJson.get("active_files").toString(), rawJson.get("active_files").toString());
+                assertEquals(broJson.get("dns_requests").toString(), rawJson.get("dns_requests").toString());
+                assertEquals(broJson.get("active_dns_requests").toString(), rawJson.get("active_dns_requests").toString());
+                assertEquals(broJson.get("reassem_tcp_size").toString(), rawJson.get("reassem_tcp_size").toString());
+                assertEquals(broJson.get("reassem_file_size").toString(), rawJson.get("reassem_file_size").toString());
+                assertEquals(broJson.get("reassem_frag_size").toString(), rawJson.get("reassem_frag_size").toString());
+                assertEquals(broJson.get("reassem_unknown_size").toString(), rawJson.get("reassem_unknown_size").toString());
         }
 
        /**
@@ -1283,7 +1284,7 @@
          * }
          */
         @Multiline
-        public final static String captureLossBroMessage;
+    public static String captureLossBroMessage;
 
         @SuppressWarnings("rawtypes")
         @Test
@@ -1294,16 +1295,16 @@
                 JSONObject broJson = broParser.parse(captureLossBroMessage.getBytes(
                     StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1320435958.419451";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1320435958419";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("ts_delta").toString(), rawJson.get("ts_delta").toString());
-                Assert.assertEquals(broJson.get("peer").toString(), rawJson.get("peer").toString());
-                Assert.assertEquals(broJson.get("gaps").toString(), rawJson.get("gaps").toString());
-                Assert.assertEquals(broJson.get("acks").toString(), rawJson.get("acks").toString());
-                Assert.assertEquals(broJson.get("percent_lost").toString(), rawJson.get("percent_lost").toString());
+                assertEquals(broJson.get("ts_delta").toString(), rawJson.get("ts_delta").toString());
+                assertEquals(broJson.get("peer").toString(), rawJson.get("peer").toString());
+                assertEquals(broJson.get("gaps").toString(), rawJson.get("gaps").toString());
+                assertEquals(broJson.get("acks").toString(), rawJson.get("acks").toString());
+                assertEquals(broJson.get("percent_lost").toString(), rawJson.get("percent_lost").toString());
         }
 
        /**
@@ -1335,7 +1336,7 @@
          * }
          */
         @Multiline
-        public final static String sipBroMessage;
+    public static String sipBroMessage;
 
         @SuppressWarnings("rawtypes")
         @Test
@@ -1345,32 +1346,32 @@
 
                 JSONObject broJson = broParser.parse(sipBroMessage.getBytes(StandardCharsets.UTF_8)).get(0);
                 String expectedBroTimestamp = "1216698441.346819";
-                Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+                assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
                 String expectedTimestamp = "1216698441346";
-                Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
+                assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertTrue(broJson.get("original_string").toString().startsWith(rawMessageMap.keySet().iterator().next().toString().toUpperCase()));
 
-                Assert.assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-                Assert.assertEquals(broJson.get("trans_depth").toString(), rawJson.get("trans_depth").toString());
-                Assert.assertEquals(broJson.get("method").toString(), rawJson.get("method").toString());
-                Assert.assertEquals(broJson.get("uri").toString(), rawJson.get("uri").toString());
-                Assert.assertEquals(broJson.get("request_from").toString(), rawJson.get("request_from").toString());
-                Assert.assertEquals(broJson.get("request_to").toString(), rawJson.get("request_to").toString());
-                Assert.assertEquals(broJson.get("response_from").toString(), rawJson.get("response_from").toString());
-                Assert.assertEquals(broJson.get("response_to").toString(), rawJson.get("response_to").toString());
-                Assert.assertEquals(broJson.get("call_id").toString(), rawJson.get("call_id").toString());
-                Assert.assertEquals(broJson.get("seq").toString(), rawJson.get("seq").toString());
-                Assert.assertEquals(broJson.get("request_path").toString(), rawJson.get("request_path").toString());
-                Assert.assertEquals(broJson.get("response_path").toString(), rawJson.get("response_path").toString());
-                Assert.assertEquals(broJson.get("user_agent").toString(), rawJson.get("user_agent").toString());
-                Assert.assertEquals(broJson.get("status_code").toString(), rawJson.get("status_code").toString());
-                Assert.assertEquals(broJson.get("status_msg").toString(), rawJson.get("status_msg").toString());
-                Assert.assertEquals(broJson.get("request_body_len").toString(), rawJson.get("request_body_len").toString());
-                Assert.assertEquals(broJson.get("response_body_len").toString(), rawJson.get("response_body_len").toString());
+                assertEquals(broJson.get("uid").toString(), rawJson.get("uid").toString());
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+                assertEquals(broJson.get("trans_depth").toString(), rawJson.get("trans_depth").toString());
+                assertEquals(broJson.get("method").toString(), rawJson.get("method").toString());
+                assertEquals(broJson.get("uri").toString(), rawJson.get("uri").toString());
+                assertEquals(broJson.get("request_from").toString(), rawJson.get("request_from").toString());
+                assertEquals(broJson.get("request_to").toString(), rawJson.get("request_to").toString());
+                assertEquals(broJson.get("response_from").toString(), rawJson.get("response_from").toString());
+                assertEquals(broJson.get("response_to").toString(), rawJson.get("response_to").toString());
+                assertEquals(broJson.get("call_id").toString(), rawJson.get("call_id").toString());
+                assertEquals(broJson.get("seq").toString(), rawJson.get("seq").toString());
+                assertEquals(broJson.get("request_path").toString(), rawJson.get("request_path").toString());
+                assertEquals(broJson.get("response_path").toString(), rawJson.get("response_path").toString());
+                assertEquals(broJson.get("user_agent").toString(), rawJson.get("user_agent").toString());
+                assertEquals(broJson.get("status_code").toString(), rawJson.get("status_code").toString());
+                assertEquals(broJson.get("status_msg").toString(), rawJson.get("status_msg").toString());
+                assertEquals(broJson.get("request_body_len").toString(), rawJson.get("request_body_len").toString());
+                assertEquals(broJson.get("response_body_len").toString(), rawJson.get("response_body_len").toString());
         }
 
        /**
@@ -1398,7 +1399,7 @@
 	 * }
 	 */
 	@Multiline
-	public final static String protocolKeyCleanedUp;
+    public static String protocolKeyCleanedUp;
 
 	@SuppressWarnings("rawtypes")
 	@Test
@@ -1408,24 +1409,24 @@
 
 		JSONObject broJson = broParser.parse(protocolKeyCleanedUp.getBytes(StandardCharsets.UTF_8)).get(0);
 		String expectedBroTimestamp = "1402307733.473";
-		Assert.assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
+		assertEquals(broJson.get("bro_timestamp"), expectedBroTimestamp);
 		String expectedTimestamp = "1402307733473";
-		Assert.assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
-                Assert.assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
-                Assert.assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
-                Assert.assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
-                Assert.assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
-		Assert.assertTrue(broJson.get("original_string").toString().startsWith("HTTP"));
+		assertEquals(broJson.get("timestamp").toString(), expectedTimestamp);
+                assertEquals(broJson.get("ip_src_addr").toString(), rawJson.get("id.orig_h").toString());
+                assertEquals(broJson.get("ip_dst_addr").toString(), rawJson.get("id.resp_h").toString());
+                assertEquals(broJson.get("ip_src_port").toString(), rawJson.get("id.orig_p").toString());
+                assertEquals(broJson.get("ip_dst_port").toString(), rawJson.get("id.resp_p").toString());
+		assertTrue(broJson.get("original_string").toString().startsWith("HTTP"));
 	}
 
-	@Test(expected=IllegalStateException.class)
-	public void testBadMessage()  throws ParseException {
-		broParser.parse("{ \"foo\" : \"bar\"}".getBytes(StandardCharsets.UTF_8));
+	@Test
+	public void testBadMessage() {
+		assertThrows(IllegalStateException.class, () -> broParser.parse("{ \"foo\" : \"bar\"}".getBytes(StandardCharsets.UTF_8)));
 	}
 
-	@Test(expected=IllegalStateException.class)
+	@Test
 	public void testBadMessageNonJson() {
-		broParser.parse("foo bar".getBytes(StandardCharsets.UTF_8));
+		assertThrows(IllegalStateException.class, () -> broParser.parse("foo bar".getBytes(StandardCharsets.UTF_8)));
 	}
 
   @Test
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/cef/CEFParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/cef/CEFParserTest.java
index 2a5d463..c82acaa 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/cef/CEFParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/cef/CEFParserTest.java
@@ -18,9 +18,6 @@
 
 package org.apache.metron.parsers.cef;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -29,27 +26,27 @@
 import com.github.fge.jsonschema.main.JsonSchemaFactory;
 import com.github.fge.jsonschema.main.JsonValidator;
 import com.google.common.io.Resources;
-import java.io.IOException;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.apache.metron.common.Constants.Fields;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class CEFParserTest {
 	private CEFParser parser;
 
-	@Before
+	@BeforeEach
 	public void setUp() {
 		parser = new CEFParser();
 		parser.init();
@@ -58,16 +55,16 @@
 	@Test
 	public void testInvalid() {
 		List<JSONObject> obj = parse("test test test nonsense\n");
-		Assert.assertEquals(0, obj.size());
+		assertEquals(0, obj.size());
 	}
 
 	@Test
 	public void testEscaping() {
 		for (JSONObject obj : parse(
 				"Sep 19 08:26:10 host CEF:0|security|threatmanager|1.0|100|detected a \\ in packet|10|src=10.0.0.1 act=blocked a \\ dst=1.1.1.1")) {
-			Assert.assertEquals("10.0.0.1", obj.get(Fields.SRC_ADDR.getName()));
-			Assert.assertEquals("blocked a \\", obj.get("deviceAction"));
-			Assert.assertEquals("1.1.1.1", obj.get(Fields.DST_ADDR.getName()));
+			assertEquals("10.0.0.1", obj.get(Fields.SRC_ADDR.getName()));
+			assertEquals("blocked a \\", obj.get("deviceAction"));
+			assertEquals("1.1.1.1", obj.get(Fields.DST_ADDR.getName()));
 		}
 	}
 
@@ -75,12 +72,12 @@
 	public void testBasicHeader() {
 		for (JSONObject obj : parse(
 				"CEF:0|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2 spt=1232")) {
-			Assert.assertEquals("Security", obj.get("DeviceVendor"));
-			Assert.assertEquals("threatmanager", obj.get("DeviceProduct"));
-			Assert.assertEquals("1.0", obj.get("DeviceVersion"));
-			Assert.assertEquals("100", obj.get("DeviceEvent"));
-			Assert.assertEquals("worm successfully stopped", obj.get("Name"));
-			Assert.assertEquals(10, obj.get("Severity"));
+			assertEquals("Security", obj.get("DeviceVendor"));
+			assertEquals("threatmanager", obj.get("DeviceProduct"));
+			assertEquals("1.0", obj.get("DeviceVersion"));
+			assertEquals("100", obj.get("DeviceEvent"));
+			assertEquals("worm successfully stopped", obj.get("Name"));
+			assertEquals(10, obj.get("Severity"));
 		}
 	}
 
@@ -88,9 +85,9 @@
 	public void testBasicExtensions() {
 		for (JSONObject obj : parse(
 				"CEF:0|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2 spt=1232")) {
-			Assert.assertEquals("10.0.0.1", obj.get(Fields.SRC_ADDR.getName()));
-			Assert.assertEquals("2.1.2.2", obj.get(Fields.DST_ADDR.getName()));
-			Assert.assertEquals(1232, obj.get(Fields.SRC_PORT.getName()));
+			assertEquals("10.0.0.1", obj.get(Fields.SRC_ADDR.getName()));
+			assertEquals("2.1.2.2", obj.get(Fields.DST_ADDR.getName()));
+			assertEquals(1232, obj.get(Fields.SRC_PORT.getName()));
 		}
 	}
 
@@ -98,8 +95,8 @@
 	public void testCustomLabelWithSpace() {
 		for (JSONObject obj : parse(
 				"CEF:0|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2 spt=1232 custom=Text with space customLabel=Label with space")) {
-			Assert.assertEquals(true, obj.containsKey("Label with space"));
-			Assert.assertEquals("Text with space", obj.get("Label with space"));
+			assertEquals(true, obj.containsKey("Label with space"));
+			assertEquals("Text with space", obj.get("Label with space"));
 		}
 	}
 
@@ -112,22 +109,22 @@
 
 		for (JSONObject obj : parse(
 				"CEF:0|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.1 rt=May 1 2016 09:29:11.356 -0400 dst=2.1.2.2 spt=1232")) {
-			Assert.assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
-			Assert.assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
+			assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
+			assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
 		}
 		for (JSONObject obj : parse(
 				"2016-06-01T09:29:11.356-04:00 host CEF:0|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.1 rt=May 1 2016 09:29:11.356 -0400 dst=2.1.2.2 spt=1232")) {
-			Assert.assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
-			Assert.assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
+			assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
+			assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
 		}
 		for (JSONObject obj : parse(
 				"2016-05-01T09:29:11.356-04:00 host CEF:0|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2 spt=1232")) {
-			Assert.assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
-			Assert.assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
+			assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
+			assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
 		}
 		for (JSONObject obj : parse(
 				"CEF:0|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.1 dst=2.1.2.2 spt=1232")) {
-			Assert.assertNotNull(obj.get(Fields.TIMESTAMP.getName()));
+			assertNotNull(obj.get(Fields.TIMESTAMP.getName()));
 		}
 
 	}
@@ -138,8 +135,8 @@
 				.getTime();
 		for (JSONObject obj : parse("CEF:0|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.1 rt="
 				+ String.valueOf(correctTime) + " dst=2.1.2.2 spt=1232")) {
-			Assert.assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
-			Assert.assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
+			assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
+			assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
 		}
 	}
 
@@ -147,8 +144,8 @@
 		SimpleDateFormat sdf = new SimpleDateFormat("MMM dd HH:mm:ss.SSS");
 		for (JSONObject obj : parse("CEF:0|Security|threatmanager|1.0|100|worm successfully stopped|10|src=10.0.0.1 rt="
 				+ sdf.format(input.getTime()) + " dst=2.1.2.2 spt=1232")) {
-			Assert.assertEquals(expected.getTimeInMillis(), obj.get(Fields.TIMESTAMP.getName()));
-			Assert.assertEquals(expected.getTime(), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
+			assertEquals(expected.getTimeInMillis(), obj.get(Fields.TIMESTAMP.getName()));
+			assertEquals(expected.getTime(), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
 		}
 	}
 
@@ -209,15 +206,15 @@
 	private void runTest(String name, List<String> lines, String schema, String targetJson) throws Exception {
 		for (String inputString : lines) {
 			JSONObject parsed = parse(inputString).get(0);
-			Assert.assertNotNull(parsed);
-			Assert.assertNotNull(parsed.get(Fields.TIMESTAMP.getName()));
-			Assert.assertTrue((long) parsed.get(Fields.TIMESTAMP.getName()) > 0);
+			assertNotNull(parsed);
+			assertNotNull(parsed.get(Fields.TIMESTAMP.getName()));
+			assertTrue((long) parsed.get(Fields.TIMESTAMP.getName()) > 0);
 
 			JSONParser parser = new JSONParser();
 
 			Map<?, ?> json = null;
 			json = (Map<?, ?>) parser.parse(parsed.toJSONString());
-			Assert.assertEquals(true, validateJsonData(schema, json.toString()));
+			assertEquals(true, validateJsonData(schema, json.toString()));
 		}
 	}
 
@@ -249,17 +246,17 @@
 		List<JSONObject> parse = parse(sample);
 		JSONObject obj = parse.get(0);
 
-		Assert.assertEquals("TestVendor", obj.get("DeviceVendor"));
-		Assert.assertEquals(1423441663000L, obj.get(Fields.TIMESTAMP.getName()));
-		Assert.assertEquals("9223372036854775807", obj.get("Test Long"));
-		Assert.assertEquals(obj.get("Test FP Number"), String.valueOf(1.234F));
-		Assert.assertEquals("00:00:0c:07:ac:00", obj.get("smac"));
-		Assert.assertEquals("2001:cdba::3257:9652", obj.get("Test IPv6"));
-		Assert.assertEquals("test test test chocolate", obj.get("Test String"));
-		Assert.assertEquals("123.123.123.123", obj.get("destinationTranslatedAddress"));
+		assertEquals("TestVendor", obj.get("DeviceVendor"));
+		assertEquals(1423441663000L, obj.get(Fields.TIMESTAMP.getName()));
+		assertEquals("9223372036854775807", obj.get("Test Long"));
+		assertEquals(obj.get("Test FP Number"), String.valueOf(1.234F));
+		assertEquals("00:00:0c:07:ac:00", obj.get("smac"));
+		assertEquals("2001:cdba::3257:9652", obj.get("Test IPv6"));
+		assertEquals("test test test chocolate", obj.get("Test String"));
+		assertEquals("123.123.123.123", obj.get("destinationTranslatedAddress"));
 
 		JsonNode inner = new ObjectMapper().readTree((String) obj.get("JSON payload"));
-		Assert.assertEquals("chocolate!", inner.get("test_test_test").asText());
+		assertEquals("chocolate!", inner.get("test_test_test").asText());
 	}
 
 	protected boolean validateJsonData(final String jsonSchema, final String jsonData) throws Exception {
@@ -276,7 +273,7 @@
 
 	private List<JSONObject> parse(String string) {
 		List<JSONObject> parse = parser.parse(string.getBytes(StandardCharsets.UTF_8));
-		Assert.assertNotNull(parse);
+		assertNotNull(parse);
 		return parse;
 	}
 
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/fireeye/BasicFireEyeParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/fireeye/BasicFireEyeParserTest.java
index 6a2e3ea..573acaa 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/fireeye/BasicFireEyeParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/fireeye/BasicFireEyeParserTest.java
@@ -17,8 +17,13 @@
  */
 package org.apache.metron.parsers.fireeye;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.apache.metron.parsers.AbstractParserConfigTest;
+import org.apache.metron.parsers.interfaces.MessageParser;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.json.simple.parser.ParseException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.time.Year;
@@ -27,18 +32,14 @@
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Map.Entry;
-import org.apache.metron.parsers.AbstractParserConfigTest;
-import org.apache.metron.parsers.interfaces.MessageParser;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class BasicFireEyeParserTest extends AbstractParserConfigTest {
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     inputStrings = super.readTestDataFromFile("src/test/resources/logData/FireEyeParserTest.txt");
     parser = new BasicFireEyeParser();
@@ -49,20 +50,20 @@
   public void testParse() throws ParseException {
     for (String inputString : inputStrings) {
       JSONObject parsed = parser.parse(inputString.getBytes(StandardCharsets.UTF_8)).get(0);
-      Assert.assertNotNull(parsed);
+      assertNotNull(parsed);
 
       JSONParser parser = new JSONParser();
 
       Map json = (Map) parser.parse(parsed.toJSONString());
 
-      Assert.assertNotNull(json);
-      Assert.assertFalse(json.isEmpty());
+      assertNotNull(json);
+      assertFalse(json.isEmpty());
 
       for (Object o : json.entrySet()) {
         Entry entry = (Entry) o;
         String key = (String) entry.getKey();
         String value = json.get(key).toString();
-        Assert.assertNotNull(value);
+        assertNotNull(value);
       }
     }
   }
@@ -76,7 +77,7 @@
     JSONParser parser = new JSONParser();
     Map json = (Map) parser.parse(parsed.toJSONString());
     long expectedTimestamp = ZonedDateTime.of(Year.now(ZoneOffset.UTC).getValue(), 3, 19, 5, 24, 39, 0, ZoneOffset.UTC).toInstant().toEpochMilli();
-    Assert.assertEquals(expectedTimestamp, json.get("timestamp"));
+    assertEquals(expectedTimestamp, json.get("timestamp"));
   }
 
   @Test
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/ise/BasicIseParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/ise/BasicIseParserTest.java
index c67f574..78685c0 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/ise/BasicIseParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/ise/BasicIseParserTest.java
@@ -17,26 +17,28 @@
  */
 package org.apache.metron.parsers.ise;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
 import com.github.fge.jsonschema.core.exceptions.ProcessingException;
+import org.apache.metron.parsers.AbstractParserConfigTest;
+import org.apache.metron.parsers.interfaces.MessageParser;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.JSONParser;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import java.io.IOException;
 import java.net.URL;
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
-import org.apache.metron.parsers.AbstractParserConfigTest;
-import org.apache.metron.parsers.interfaces.MessageParser;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.JSONParser;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class BasicIseParserTest extends AbstractParserConfigTest {
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     inputStrings = super.readTestDataFromFile("src/test/resources/logData/IseParserTest.txt");
     parser = new BasicIseParser();
@@ -51,12 +53,12 @@
       throws org.json.simple.parser.ParseException, IOException, ProcessingException {
     for (String inputString : inputStrings) {
       JSONObject parsed = parser.parse(inputString.getBytes(StandardCharsets.UTF_8)).get(0);
-      Assert.assertNotNull(parsed);
+      assertNotNull(parsed);
 
       JSONParser parser = new JSONParser();
 
       Map<?, ?> json = (Map<?, ?>) parser.parse(parsed.toJSONString());
-      Assert.assertTrue(validateJsonData(getSchemaJsonString(), json.toString()));
+      assertTrue(validateJsonData(getSchemaJsonString(), json.toString()));
     }
   }
   
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/lancope/BasicLancopeParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/lancope/BasicLancopeParserTest.java
index 380a635..a6c0711 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/lancope/BasicLancopeParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/lancope/BasicLancopeParserTest.java
@@ -17,27 +17,29 @@
  */
 package org.apache.metron.parsers.lancope;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
 import com.github.fge.jsonschema.core.exceptions.ProcessingException;
-import java.io.IOException;
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.metron.parsers.AbstractParserConfigTest;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.net.URL;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class BasicLancopeParserTest extends AbstractParserConfigTest {
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     inputStrings = super.readTestDataFromFile("src/test/resources/logData/LancopeParserTest.txt");
     parser = new BasicLancopeParser();
@@ -51,12 +53,12 @@
   public void testParse() throws ParseException, IOException, ProcessingException {
     for (String inputString : inputStrings) {
       JSONObject parsed = parser.parse(inputString.getBytes(StandardCharsets.UTF_8)).get(0);
-      Assert.assertNotNull(parsed);
+      assertNotNull(parsed);
 
       JSONParser parser = new JSONParser();
 
       Map<?, ?> json = (Map<?, ?>) parser.parse(parsed.toJSONString());
-      Assert.assertTrue(validateJsonData(getSchemaJsonString(), json.toString()));
+      assertTrue(validateJsonData(getSchemaJsonString(), json.toString()));
     }
   }
 
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/leef/LEEFParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/leef/LEEFParserTest.java
index 65cbb9b..e94761f 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/leef/LEEFParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/leef/LEEFParserTest.java
@@ -1,55 +1,46 @@
 /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
  *
- *     http://www.apache.org/licenses/LICENSE-2.0
+ * <p>http://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
+ * <p>Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.apache.metron.parsers.leef;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertThat;
-
 import com.fasterxml.jackson.databind.JsonNode;
 import com.github.fge.jackson.JsonLoader;
 import com.github.fge.jsonschema.core.report.ProcessingReport;
 import com.github.fge.jsonschema.main.JsonSchemaFactory;
 import com.github.fge.jsonschema.main.JsonValidator;
 import com.google.common.io.Resources;
-import java.nio.charset.StandardCharsets;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
 import org.apache.metron.common.Constants.Fields;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.apache.metron.parsers.interfaces.MessageParserResult;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.nio.charset.StandardCharsets;
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.*;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class LEEFParserTest {
   private LEEFParser parser;
 
-  @Before
+  @BeforeEach
   public void setUp() {
     parser = new LEEFParser();
     parser.init();
@@ -58,51 +49,58 @@
   @Test
   public void testInvalid() {
     List<JSONObject> obj = parse("test test test nonsense\n");
-    Assert.assertEquals(0, obj.size());
+    assertEquals(0, obj.size());
   }
 
   @Test
   public void testTimestampPriority() throws java.text.ParseException {
-    long correctTime = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz").parse("2016-05-01T09:29:11.356-0400")
-        .getTime();
+    long correctTime =
+        new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz")
+            .parse("2016-05-01T09:29:11.356-0400")
+            .getTime();
 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSz");
 
-    for (JSONObject obj : parse(
-        "LEEF:2.0|Lancope|StealthWatch|1.0|41|src=10.0.0.1\tdevTime=May 1 2016 09:29:11.356 -0400\tdst=2.1.2.2\tspt=1232")) {
-      Assert.assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
-      Assert.assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
+    for (JSONObject obj :
+        parse(
+            "LEEF:2.0|Lancope|StealthWatch|1.0|41|src=10.0.0.1\tdevTime=May 1 2016 09:29:11.356 -0400\tdst=2.1.2.2\tspt=1232")) {
+      assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
+      assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
     }
-    for (JSONObject obj : parse(
-        "2016-06-01T09:29:11.356-04:00 host LEEF:2.0|Lancope|StealthWatch|1.0|41|src=10.0.0.1\tdevTime=May 1 2016 09:29:11.356 -0400\tdst=2.1.2.2\tspt=1232")) {
-      Assert.assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
-      Assert.assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
+    for (JSONObject obj :
+        parse(
+            "2016-06-01T09:29:11.356-04:00 host LEEF:2.0|Lancope|StealthWatch|1.0|41|src=10.0.0.1\tdevTime=May 1 2016 09:29:11.356 -0400\tdst=2.1.2.2\tspt=1232")) {
+      assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
+      assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
     }
-    for (JSONObject obj : parse(
-        "2016-05-01T09:29:11.356-04:00 host LEEF:2.0|Lancope|StealthWatch|1.0|41|src=10.0.0.1\tdevTime=May 1 2016 09:29:11.356 -0400\tdst=2.1.2.2\tspt=1232")) {
-      Assert.assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
-      Assert.assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
+    for (JSONObject obj :
+        parse(
+            "2016-05-01T09:29:11.356-04:00 host LEEF:2.0|Lancope|StealthWatch|1.0|41|src=10.0.0.1\tdevTime=May 1 2016 09:29:11.356 -0400\tdst=2.1.2.2\tspt=1232")) {
+      assertEquals(new Date(correctTime), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
+      assertEquals(correctTime, obj.get(Fields.TIMESTAMP.getName()));
     }
-    for (JSONObject obj : parse(
-        "LEEF:2.0|Lancope|StealthWatch|1.0|41|src=10.0.0.1\tdevTime=May 1 2016 09:29:11.356 -0400\tdst=2.1.2.2\tspt=1232")) {
-      Assert.assertNotNull(obj.get(Fields.TIMESTAMP.getName()));
+    for (JSONObject obj :
+        parse(
+            "LEEF:2.0|Lancope|StealthWatch|1.0|41|src=10.0.0.1\tdevTime=May 1 2016 09:29:11.356 -0400\tdst=2.1.2.2\tspt=1232")) {
+      assertNotNull(obj.get(Fields.TIMESTAMP.getName()));
     }
-
   }
 
   private void runMissingYear(Calendar expected, Calendar input) {
     SimpleDateFormat sdf = new SimpleDateFormat("MMM dd HH:mm:ss.SSS");
-    for (JSONObject obj : parse("LEEF:2.0|Lancope|StealthWatch|1.0|41|\t|src=10.0.0.1\tdevTime="
-        + sdf.format(input.getTime()) +
-        "\tdevTimeFormat=MMM dd HH:mm:ss.SSS" +
-        "\tdst=2.1.2.2\tspt=1232")) {
-      Assert.assertEquals(expected.getTime(), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
-      Assert.assertEquals(expected.getTimeInMillis(), obj.get(Fields.TIMESTAMP.getName()));
+    for (JSONObject obj :
+        parse(
+            "LEEF:2.0|Lancope|StealthWatch|1.0|41|\t|src=10.0.0.1\tdevTime="
+                + sdf.format(input.getTime())
+                + "\tdevTimeFormat=MMM dd HH:mm:ss.SSS"
+                + "\tdst=2.1.2.2\tspt=1232")) {
+      assertEquals(expected.getTime(), new Date((long) obj.get(Fields.TIMESTAMP.getName())));
+      assertEquals(expected.getTimeInMillis(), obj.get(Fields.TIMESTAMP.getName()));
     }
   }
 
   @Test
-  public void testMissingYearFromDate() throws java.text.ParseException {
+  public void testMissingYearFromDate() {
     Calendar current = Calendar.getInstance();
     Calendar correct = Calendar.getInstance();
 
@@ -125,92 +123,116 @@
   }
 
   /**
-   * Sample from https://docs.imperva.com/bundle/cloud-application-security/page/more/example-logs.htm#logEx2
+   * Sample from
+   * https://docs.imperva.com/bundle/cloud-application-security/page/more/example-logs.htm#logEx2
    */
   @Test
   public void testLEEF_CEFlikeSample() {
-    List<JSONObject> parse = parse("LEEF:0|Incapsula|SIEMintegration|0|SQL Injection| fileId=3412364560000000008 sourceServiceName=test56111115.incaptest.co siteid=1333546 suid=300656 requestClientApplication=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 popName=mia cs2=true cs2Label=Javascript Support cs3=true cs3Label=CO Support cs1=NA cs1Label=Cap Support cs4=936e64c2-bdd1-4719-9bd0-2d882a72f30d cs4Label=VID cs5=bab1712be85b00ab21d20bf0d7b5db82701f27f53fbac19a4252efc722ac9131fdc60c0da620282b02dfb8051e7a60f9 cs5Label=clappsig dproc=Browser cs6=Firefox cs6Label=clapp calCountryOrRegion=IL cicode=Rehovot cs7=31.8969 cs7Label=latitude cs8=34.8186 cs8Label=longitude Customer=siemtest start=1460303291788 url=test56111115.incaptest.co/ requestMethod=GET qstr=keywords\\=3%29%29%29%20AND%203434%3d%28%27%3amvc%3a%27%7c%7c%28SELECT%20CASE%203434%20WHEN%203434%20THEN%201%20ELSE%200%20END%20FROM%20RDB%24DATABASE%29%7c%7c%27%3aqvi%3a%27%29%20AND%20%28%28%283793%3d3793 cn1=200 proto=HTTP cat=REQ_PASSED deviceExternalId=2323800832649 dst=54.195.35.43 dstPort=80 in=406 xff=127.0.0.1 srcPort=443 src=127.0.0.1 protoVer=TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 fileType=12999,50999,50037,50044, filePermission=37,20,1,1, cs9=,High Risk SQL Expressions,,SQL SELECT Expression, cs9Label=Rule name");
+    List<JSONObject> parse =
+        parse(
+            "LEEF:0|Incapsula|SIEMintegration|0|SQL Injection| fileId=3412364560000000008 sourceServiceName=test56111115.incaptest.co siteid=1333546 suid=300656 requestClientApplication=Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0 popName=mia cs2=true cs2Label=Javascript Support cs3=true cs3Label=CO Support cs1=NA cs1Label=Cap Support cs4=936e64c2-bdd1-4719-9bd0-2d882a72f30d cs4Label=VID cs5=bab1712be85b00ab21d20bf0d7b5db82701f27f53fbac19a4252efc722ac9131fdc60c0da620282b02dfb8051e7a60f9 cs5Label=clappsig dproc=Browser cs6=Firefox cs6Label=clapp calCountryOrRegion=IL cicode=Rehovot cs7=31.8969 cs7Label=latitude cs8=34.8186 cs8Label=longitude Customer=siemtest start=1460303291788 url=test56111115.incaptest.co/ requestMethod=GET qstr=keywords\\=3%29%29%29%20AND%203434%3d%28%27%3amvc%3a%27%7c%7c%28SELECT%20CASE%203434%20WHEN%203434%20THEN%201%20ELSE%200%20END%20FROM%20RDB%24DATABASE%29%7c%7c%27%3aqvi%3a%27%29%20AND%20%28%28%283793%3d3793 cn1=200 proto=HTTP cat=REQ_PASSED deviceExternalId=2323800832649 dst=54.195.35.43 dstPort=80 in=406 xff=127.0.0.1 srcPort=443 src=127.0.0.1 protoVer=TLSv1.2 ECDHE-RSA-AES128-GCM-SHA256 fileType=12999,50999,50037,50044, filePermission=37,20,1,1, cs9=,High Risk SQL Expressions,,SQL SELECT Expression, cs9Label=Rule name");
     JSONObject obj = parse.get(0);
-    Assert.assertNotNull(obj);
-    Assert.assertEquals("3412364560000000008", obj.get("fileId"));
-    Assert.assertEquals("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0", obj.get("requestClientApplication"));
-    Assert.assertTrue(obj.containsKey("longitude"));
-    Assert.assertFalse(obj.containsKey("cs8"));
-    Assert.assertFalse(obj.containsKey("cs8Label"));
+    assertNotNull(obj);
+    assertEquals("3412364560000000008", obj.get("fileId"));
+    assertEquals(
+        "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Firefox/38.0",
+        obj.get("requestClientApplication"));
+    assertTrue(obj.containsKey("longitude"));
+    assertFalse(obj.containsKey("cs8"));
+    assertFalse(obj.containsKey("cs8Label"));
   }
 
   @Test
   public void testLEEFParserSample() throws Exception {
-    runTest("sample", Resources.readLines(Resources.getResource(getClass(), "sample.leef"), StandardCharsets.UTF_8),
-        Resources.toString(Resources.getResource(getClass(), "sample.schema"), StandardCharsets.UTF_8));
+    runTest(
+        "sample",
+        Resources.readLines(
+            Resources.getResource(getClass(), "sample.leef"), StandardCharsets.UTF_8),
+        Resources.toString(
+            Resources.getResource(getClass(), "sample.schema"), StandardCharsets.UTF_8));
   }
 
   private void runTest(String name, List<String> lines, String schema) throws Exception {
     runTest(name, lines, schema, "");
   }
 
-  private void runTest(String name, List<String> lines, String schema, String targetJson) throws Exception {
+  private void runTest(String name, List<String> lines, String schema, String targetJson)
+      throws Exception {
     for (String inputString : lines) {
       JSONObject parsed = parse(inputString).get(0);
-      Assert.assertNotNull(parsed);
-      Assert.assertNotNull(parsed.get(Fields.TIMESTAMP.getName()));
-      Assert.assertTrue((long) parsed.get(Fields.TIMESTAMP.getName()) > 0);
+      assertNotNull(parsed);
+      assertNotNull(parsed.get(Fields.TIMESTAMP.getName()));
+      assertTrue((long) parsed.get(Fields.TIMESTAMP.getName()) > 0);
 
       JSONParser parser = new JSONParser();
 
       Map<?, ?> json = null;
       json = (Map<?, ?>) parser.parse(parsed.toJSONString());
-      Assert.assertEquals(true, validateJsonData(schema, json.toString()));
+      assertEquals(true, validateJsonData(schema, json.toString()));
     }
   }
 
   private void assertSimpleSample(List<JSONObject> parse) {
     JSONObject obj = parse.get(0);
-    Assert.assertNotNull(obj);
-    Assert.assertTrue(obj.containsKey(Fields.SRC_ADDR.getName()));
-    Assert.assertEquals("192.0.2.0", obj.get(Fields.SRC_ADDR.getName()));
+    assertNotNull(obj);
+    assertTrue(obj.containsKey(Fields.SRC_ADDR.getName()));
+    assertEquals("192.0.2.0", obj.get(Fields.SRC_ADDR.getName()));
   }
 
   @Test
   public void testLEEF_1_0_versionIncluded() {
-    List<JSONObject> parse = parse("LEEF:1.0|Microsoft|MSExchange|4.0 SP1|15345| src=192.0.2.0\tdst=172.50.123.1\tsev=5\tcat=anomaly\tsrcPort=81\tdstPort=21\tusrName=joe.black");
+    List<JSONObject> parse =
+        parse(
+            "LEEF:1.0|Microsoft|MSExchange|4.0 SP1|15345| src=192.0.2.0\tdst=172.50.123.1\tsev=5\tcat=anomaly\tsrcPort=81\tdstPort=21\tusrName=joe.black");
     assertSimpleSample(parse);
   }
 
   @Test
   public void testLEEF_2_0() {
-    List<JSONObject> parse = parse("LEEF:2.0|Vendor|Product|Version|EventID| src=192.0.2.0\tdst=172.50.123.1\tsev=5\tcat=anomaly\tsrcPort=81\tdstPort=21\tusrName=joe.black");
+    List<JSONObject> parse =
+        parse(
+            "LEEF:2.0|Vendor|Product|Version|EventID| src=192.0.2.0\tdst=172.50.123.1\tsev=5\tcat=anomaly\tsrcPort=81\tdstPort=21\tusrName=joe.black");
     assertSimpleSample(parse);
   }
 
   @Test
   public void testLEEF_2_0_delimiterSpecified() {
-    List<JSONObject> parse = parse("LEEF:2.0|Lancope|StealthWatch|1.0|41|^| src=192.0.2.0^dst=172.50.123.1^sev=5^cat=anomaly^srcPort=81^dstPort=21^usrName=joe.black");
+    List<JSONObject> parse =
+        parse(
+            "LEEF:2.0|Lancope|StealthWatch|1.0|41|^| src=192.0.2.0^dst=172.50.123.1^sev=5^cat=anomaly^srcPort=81^dstPort=21^usrName=joe.black");
     assertSimpleSample(parse);
   }
 
   @Test
   public void testLEEF_2_0_delimiterUsedIncorrectly() {
-    List<JSONObject> parse = parse("LEEF:2.0|Lancope|StealthWatch|1.0|41|^| src=192.0.2.0\tdst=172.50.123.1\tsev=5\tcat=anomaly\tsrcPort=81\tdstPort=21\tusrName=joe.black");
+    List<JSONObject> parse =
+        parse(
+            "LEEF:2.0|Lancope|StealthWatch|1.0|41|^| src=192.0.2.0\tdst=172.50.123.1\tsev=5\tcat=anomaly\tsrcPort=81\tdstPort=21\tusrName=joe.black");
     assertFalse(parse.get(0).containsKey(Fields.DST_ADDR));
   }
 
   @Test
   public void testLEEFMultiLine() {
-    List<JSONObject> parse = parse("LEEF:2.0|Vendor|Product|Version|EventID| src=192.0.2.0\tdst=172.50.123.1\tsev=5\tcat=anomaly\tsrcPort=81\tdstPort=21\tusrName=line1" +
-        "\nLEEF:2.0|Vendor|Product|Version|EventID| src=192.0.2.1\tdst=172.50.123.2\tsev=6\tcat=anomaly\tsrcPort=82\tdstPort=22\tusrName=line2");
+    List<JSONObject> parse =
+        parse(
+            "LEEF:2.0|Vendor|Product|Version|EventID| src=192.0.2.0\tdst=172.50.123.1\tsev=5\tcat=anomaly\tsrcPort=81\tdstPort=21\tusrName=line1"
+                + "\nLEEF:2.0|Vendor|Product|Version|EventID| src=192.0.2.1\tdst=172.50.123.2\tsev=6\tcat=anomaly\tsrcPort=82\tdstPort=22\tusrName=line2");
     assertSimpleSample(parse);
     assertEquals(2, parse.size());
   }
 
-
   @Test
   public void testLEEFcustomdevTimeFormat() {
     String customFormat = "yyyy-MM-dd HH:mm:ss.SSS zzz";
     Date customDate = new Date();
     DateFormat customFormatter = new SimpleDateFormat(customFormat);
 
-    List<JSONObject> parse = parse("LEEF:2.0|Lancope|StealthWatch|1.0|41|^| src=192.0.2.0^dst=172.50.123.1^sev=5^cat=anomaly^srcPort=81^dstPort=21^usrName=joe.black^devTime=" + customFormatter.format(customDate) + "^devTimeFormat=" + customFormat);
+    List<JSONObject> parse =
+        parse(
+            "LEEF:2.0|Lancope|StealthWatch|1.0|41|^| src=192.0.2.0^dst=172.50.123.1^sev=5^cat=anomaly^srcPort=81^dstPort=21^usrName=joe.black^devTime="
+                + customFormatter.format(customDate)
+                + "^devTimeFormat="
+                + customFormat);
     JSONObject obj = parse.get(0);
     assertEquals(obj.get(Fields.TIMESTAMP.getName()), customDate.getTime());
   }
@@ -222,12 +244,16 @@
     long expected = customDate.getTime();
     DateFormat customFormatter = new SimpleDateFormat(standardFormat);
 
-    List<JSONObject> parse = parse("LEEF:2.0|Lancope|StealthWatch|1.0|41|^| src=192.0.2.0^dst=172.50.123.1^sev=5^cat=anomaly^srcPort=81^dstPort=21^usrName=joe.black^devTime=" + customFormatter.format(customDate));
+    List<JSONObject> parse =
+        parse(
+            "LEEF:2.0|Lancope|StealthWatch|1.0|41|^| src=192.0.2.0^dst=172.50.123.1^sev=5^cat=anomaly^srcPort=81^dstPort=21^usrName=joe.black^devTime="
+                + customFormatter.format(customDate));
     JSONObject obj = parse.get(0);
     assertEquals(obj.get(Fields.TIMESTAMP.getName()), expected);
   }
 
-  protected boolean validateJsonData(final String jsonSchema, final String jsonData) throws Exception {
+  protected boolean validateJsonData(final String jsonSchema, final String jsonData)
+      throws Exception {
     final JsonNode d = JsonLoader.fromString(jsonData);
     final JsonNode s = JsonLoader.fromString(jsonSchema);
 
@@ -240,8 +266,9 @@
   }
 
   private List<JSONObject> parse(String string) {
-    Optional<MessageParserResult<JSONObject>> parse = parser.parseOptionalResult(string.getBytes(StandardCharsets.UTF_8));
-    Assert.assertTrue(parse.isPresent());
+    Optional<MessageParserResult<JSONObject>> parse =
+        parser.parseOptionalResult(string.getBytes(StandardCharsets.UTF_8));
+    assertTrue(parse.isPresent());
     return parse.get().getMessages();
   }
 
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/paloalto/BasicPaloAltoFirewallParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/paloalto/BasicPaloAltoFirewallParserTest.java
index f0cadbf..12a11b5 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/paloalto/BasicPaloAltoFirewallParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/paloalto/BasicPaloAltoFirewallParserTest.java
@@ -17,32 +17,33 @@
  */
 package org.apache.metron.parsers.paloalto;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertThat;
+import org.apache.metron.parsers.AbstractParserConfigTest;
+import org.apache.metron.parsers.interfaces.MessageParser;
+import org.json.simple.JSONObject;
+import org.json.simple.parser.ParseException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.metron.parsers.AbstractParserConfigTest;
-import org.apache.metron.parsers.interfaces.MessageParser;
-import org.json.simple.JSONObject;
-import org.json.simple.parser.ParseException;
-import org.junit.Before;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class BasicPaloAltoFirewallParserTest extends AbstractParserConfigTest {
 
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     parser = new BasicPaloAltoFirewallParser();
   }
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseSystem61() throws ParseException {
+  public void testParseSystem61() {
     final String SYSTEM_61 = "1,2017/08/11 12:37:58,008900008659,SYSTEM,general,1,2017/08/11 11:37:58,vsys1,eventId_test,object_test,Futureuse1_test,futureuse2_test,management,high,Description_test,1354,0x0";
 
     JSONObject actual = parser.parse(SYSTEM_61.getBytes(StandardCharsets.UTF_8)).get(0);
@@ -72,7 +73,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseSystem80() throws ParseException {
+  public void testParseSystem80() {
     final String SYSTEM_80 = "1,2017/08/11 12:37:58,008900008659,SYSTEM,general,1,2017/08/11 11:37:58,vsys1,eventId_test,object_test,Futureuse1_test,futureuse2_test,management,high,Description_test,1354,0x0,12,34,45,0,virSys1,dev-something200-01";
 
     JSONObject actual = parser.parse(SYSTEM_80.getBytes(StandardCharsets.UTF_8)).get(0);
@@ -109,7 +110,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseConfig61NoCustomFields() throws ParseException {
+  public void testParseConfig61NoCustomFields() {
     final String CONFIG_61_customFields = "1,2017/08/11 12:37:58,008900008659,CONFIG,0,1,2017/08/11 11:37:58,192.168.14.162,vsys1,edit,admin,Web,Succeeded, config shared log-settings config,1354,0x0";
 
     JSONObject actual = parser.parse(CONFIG_61_customFields.getBytes(StandardCharsets.UTF_8)).get(0);
@@ -142,7 +143,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseConfig61CustomFields() throws ParseException {
+  public void testParseConfig61CustomFields() {
     final String CONFIG_61_noCustomFields = "1,2017/08/11 12:37:58,008900008659,CONFIG,0,1,2017/08/11 11:37:58,192.168.14.162,vsys1,edit,admin,Web,Succeeded, config shared log-settings config,1354,0x0,/FatherNode/KidNode/GrandsonNode1,/FatherNode/KidNode/GrandsonNode2";
 
     JSONObject actual = parser.parse(CONFIG_61_noCustomFields.getBytes(StandardCharsets.UTF_8)).get(0);
@@ -177,7 +178,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseConfig70And80NoCustomFields() throws ParseException {
+  public void testParseConfig70And80NoCustomFields() {
     final String CONFIG_70_80_noCustomFields = "1,2017/08/11 12:37:58,008900008659,CONFIG,0,1,2017/08/11 11:37:58,192.168.14.162,vsys1,edit,admin,Web,Succeeded, config shared log-settings config,1354,0x0,12,34,45,0,virSys1,dev-something200-01";
 
     JSONObject actual = parser.parse(CONFIG_70_80_noCustomFields.getBytes(StandardCharsets.UTF_8)).get(0);
@@ -216,7 +217,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseConfig70And80CustomFields() throws ParseException {
+  public void testParseConfig70And80CustomFields() {
     final String CONFIG_70_80_customFields = "1,2017/08/11 12:37:58,008900008659,CONFIG,0,1,2017/08/11 11:37:58,192.168.14.162,vsys1,edit,admin,Web,Succeeded,config shared log-settings config,/FatherNode/KidNode/GrandsonNode1,/FatherNode/KidNode/GrandsonNode2,1354,0x0,12,34,45,0,virSys1,dev-something200-01";
 
     JSONObject actual = parser.parse(CONFIG_70_80_customFields.getBytes(StandardCharsets.UTF_8)).get(0);
@@ -259,7 +260,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseThreat60() throws ParseException {
+  public void testParseThreat60() {
     JSONObject actual = parser.parse(THREAT_60.getBytes(StandardCharsets.UTF_8)).get(0);
 
     JSONObject expected = new JSONObject();
@@ -314,7 +315,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseTraffic60() throws ParseException {
+  public void testParseTraffic60() {
     JSONObject actual = parser.parse(TRAFFIC_60.getBytes(StandardCharsets.UTF_8)).get(0);
 
     JSONObject expected = new JSONObject();
@@ -369,7 +370,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseThreat70() throws ParseException {
+  public void testParseThreat70() {
     JSONObject actual = parser.parse(THREAT_70.getBytes(StandardCharsets.UTF_8)).get(0);
 
     JSONObject expected = new JSONObject();
@@ -430,7 +431,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseTraffic70() throws ParseException {
+  public void testParseTraffic70() {
     JSONObject actual = parser.parse(TRAFFIC_70.getBytes(StandardCharsets.UTF_8)).get(0);
 
     JSONObject expected = new JSONObject();
@@ -491,7 +492,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseTraffic71() throws ParseException {
+  public void testParseTraffic71() {
     JSONObject actual = parser.parse(TRAFFIC_71.getBytes(StandardCharsets.UTF_8)).get(0);
 
     JSONObject expected = new JSONObject();
@@ -552,7 +553,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseThreat71() throws ParseException {
+  public void testParseThreat71() {
     JSONObject actual = parser.parse(THREAT_71.getBytes(StandardCharsets.UTF_8)).get(0);
 
     JSONObject expected = new JSONObject();
@@ -612,7 +613,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseThreat80() throws ParseException {
+  public void testParseThreat80() {
     JSONObject actual = parser.parse(THREAT_80.getBytes(StandardCharsets.UTF_8)).get(0);
 
     JSONObject expected = new JSONObject();
@@ -677,7 +678,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseTraffic80() throws ParseException {
+  public void testParseTraffic80() {
     JSONObject actual = parser.parse(TRAFFIC_80.getBytes(StandardCharsets.UTF_8)).get(0);
 
     JSONObject expected = new JSONObject();
@@ -740,7 +741,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseInvalidLogTypeMessage() throws ParseException {
+  public void testParseInvalidLogTypeMessage() {
     final String unsupportedLogTypeMessage = "1,2017/08/11 12:37:58,008900008659,INVALIDlogType,0,1,2017/08/11 11:37:58,192.168.14.162,vsys1,edit,admin,Web,Succeeded, config shared log-settings config,1354,0x0";
     List<JSONObject> actual = parser.parse(unsupportedLogTypeMessage.getBytes(
         StandardCharsets.UTF_8));
@@ -750,7 +751,7 @@
 
   @SuppressWarnings("unchecked")
   @Test
-  public void testParseInvalidVersionMessage() throws ParseException {
+  public void testParseInvalidVersionMessage() {
     final String invalidLengthMessage = "1,2017/08/11 12:37:58,008900008659,CONFIG,0,1,2017/08/11 11:37:58,192.168.14.162,vsys1,edit,admin,Web,Succeeded, config shared log-settings config";
 
     JSONObject actual = parser.parse(invalidLengthMessage.getBytes(StandardCharsets.UTF_8)).get(0);
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/sourcefire/BasicSourcefireParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/sourcefire/BasicSourcefireParserTest.java
index 4215250..b56cc08 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/sourcefire/BasicSourcefireParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/sourcefire/BasicSourcefireParserTest.java
@@ -17,25 +17,26 @@
  */
 package org.apache.metron.parsers.sourcefire;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
 import org.apache.metron.parsers.AbstractParserConfigTest;
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 
 public class BasicSourcefireParserTest extends AbstractParserConfigTest {
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     inputStrings = super
         .readTestDataFromFile("src/test/resources/logData/SourcefireParserTest.txt");
@@ -48,7 +49,7 @@
     for (String inputString : inputStrings) {
       byte[] srcBytes = inputString.getBytes(StandardCharsets.UTF_8);
       JSONObject parsed = parser.parse(inputString.getBytes(StandardCharsets.UTF_8)).get(0);
-      Assert.assertNotNull(parsed);
+      assertNotNull(parsed);
 
       JSONParser parser = new JSONParser();
       Map json = (Map) parser.parse(parsed.toJSONString());
@@ -57,7 +58,7 @@
         Entry entry = (Entry) o;
         String key = (String) entry.getKey();
         String value = json.get("original_string").toString();
-        Assert.assertNotNull(value);
+        assertNotNull(value);
       }
     }
   }
diff --git a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/websphere/GrokWebSphereParserTest.java b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/websphere/GrokWebSphereParserTest.java
index 798cb53..835b0a9 100644
--- a/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/websphere/GrokWebSphereParserTest.java
+++ b/metron-platform/metron-parsing/metron-parsers/src/test/java/org/apache/metron/parsers/websphere/GrokWebSphereParserTest.java
@@ -18,9 +18,11 @@
 
 package org.apache.metron.parsers.websphere;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
+import org.apache.metron.parsers.interfaces.MessageParser;
+import org.apache.metron.parsers.interfaces.MessageParserResult;
+import org.json.simple.JSONObject;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.StandardCharsets;
 import java.time.Year;
@@ -30,12 +32,10 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
-import org.apache.metron.parsers.interfaces.MessageParser;
-import org.apache.metron.parsers.interfaces.MessageParserResult;
-import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class GrokWebSphereParserTest {
 
@@ -43,7 +43,7 @@
 	private Map<String, Object> parserConfig;
 	private GrokWebSphereParser parser;
 
-	@Before
+	@BeforeEach
 	public void setup() {
 		parserConfig = new HashMap<>();
 		parserConfig.put("grokPath", "src/main/resources/patterns/websphere");
@@ -55,13 +55,13 @@
 	}
 	
 	@Test
-	public void testParseLoginLine() throws Exception {
+	public void testParseLoginLine() {
 		String testString = "<133>Apr 15 17:47:28 ABCXML1413 [rojOut][0x81000033][auth][notice] user(rick007): "
 				+ "[120.43.200.6]: User logged into 'cohlOut'.";
 		Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(testString.getBytes(
         StandardCharsets.UTF_8));
-		Assert.assertNotNull(resultOptional);
-		Assert.assertTrue(resultOptional.isPresent());
+		assertNotNull(resultOptional);
+		assertTrue(resultOptional.isPresent());
 		List<JSONObject> result = resultOptional.get().getMessages();
 		JSONObject parsedJSON = result.get(0);
 
@@ -81,13 +81,13 @@
 	}
 	
 	@Test
-	public void testParseLogoutLine() throws Exception {
+	public void testParseLogoutLine() {
 		String testString = "<134>Apr 15 18:02:27 PHIXML3RWD [0x81000019][auth][info] [14.122.2.201]: "
 				+ "User 'hjpotter' logged out from 'default'.";
 		Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(testString.getBytes(
         StandardCharsets.UTF_8));
-		Assert.assertNotNull(resultOptional);
-		Assert.assertTrue(resultOptional.isPresent());
+		assertNotNull(resultOptional);
+		assertTrue(resultOptional.isPresent());
 		List<JSONObject> result = resultOptional.get().getMessages();
 		JSONObject parsedJSON = result.get(0);
 
@@ -106,13 +106,13 @@
 	}
 	
 	@Test
-	public void testParseRBMLine() throws Exception {
+	public void testParseRBMLine() {
 		String testString = "<131>Apr 15 17:36:35 ROBXML3QRS [0x80800018][auth][error] rbm(RBM-Settings): "
 				+ "trans(3502888135)[request] gtid(3502888135): RBM: Resource access denied.";
 		Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(testString.getBytes(
         StandardCharsets.UTF_8));
-		Assert.assertNotNull(resultOptional);
-		Assert.assertTrue(resultOptional.isPresent());
+		assertNotNull(resultOptional);
+		assertTrue(resultOptional.isPresent());
 		List<JSONObject> result = resultOptional.get().getMessages();
 		JSONObject parsedJSON = result.get(0);
 
@@ -130,13 +130,13 @@
 	}
 	
 	@Test
-	public void testParseOtherLine() throws Exception {
+	public void testParseOtherLine() {
 		String testString = "<134>Apr 15 17:17:34 SAGPXMLQA333 [0x8240001c][audit][info] trans(191): (admin:default:system:*): "
 				+ "ntp-service 'NTP Service' - Operational state down";
 		Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(testString.getBytes(
         StandardCharsets.UTF_8));
-		Assert.assertNotNull(resultOptional);
-		Assert.assertTrue(resultOptional.isPresent());
+		assertNotNull(resultOptional);
+		assertTrue(resultOptional.isPresent());
 		List<JSONObject> result = resultOptional.get().getMessages();
 		JSONObject parsedJSON = result.get(0);
 		long expectedTimestamp = ZonedDateTime.of(Year.now(UTC).getValue(), 4, 15, 17, 17, 34, 0, UTC).toInstant().toEpochMilli();
@@ -153,13 +153,13 @@
 	}
 	
 	@Test
-	public void testParseMalformedLoginLine() throws Exception {
+	public void testParseMalformedLoginLine() {
 		String testString = "<133>Apr 15 17:47:28 ABCXML1413 [rojOut][0x81000033][auth][notice] rick007): "
 				+ "[120.43.200. User logged into 'cohlOut'.";
 		Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(testString.getBytes(
         StandardCharsets.UTF_8));
-		Assert.assertNotNull(resultOptional);
-		Assert.assertTrue(resultOptional.isPresent());
+		assertNotNull(resultOptional);
+		assertTrue(resultOptional.isPresent());
 		List<JSONObject> result = resultOptional.get().getMessages();
 		JSONObject parsedJSON = result.get(0);
 
@@ -179,13 +179,13 @@
 	}
 	
 	@Test
-	public void testParseMalformedLogoutLine() throws Exception {
+	public void testParseMalformedLogoutLine() {
 		String testString = "<134>Apr 15 18:02:27 PHIXML3RWD [0x81000019][auth][info] [14.122.2.201: "
 				+ "User 'hjpotter' logged out from 'default.";
 		Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(testString.getBytes(
         StandardCharsets.UTF_8));
-		Assert.assertNotNull(resultOptional);
-		Assert.assertTrue(resultOptional.isPresent());
+		assertNotNull(resultOptional);
+		assertTrue(resultOptional.isPresent());
 		List<JSONObject> result = resultOptional.get().getMessages();
 		JSONObject parsedJSON = result.get(0);
 
@@ -204,13 +204,13 @@
 	}
 	
 	@Test
-	public void testParseMalformedRBMLine() throws Exception {
+	public void testParseMalformedRBMLine() {
 		String testString = "<131>Apr 15 17:36:35 ROBXML3QRS [0x80800018][auth][error] rbmRBM-Settings): "
 				+ "trans3502888135)[request] gtid3502888135) RBM: Resource access denied.";
 		Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(testString.getBytes(
         StandardCharsets.UTF_8));
-		Assert.assertNotNull(resultOptional);
-		Assert.assertTrue(resultOptional.isPresent());
+		assertNotNull(resultOptional);
+		assertTrue(resultOptional.isPresent());
 		List<JSONObject> result = resultOptional.get().getMessages();
 		JSONObject parsedJSON = result.get(0);
 
@@ -228,13 +228,13 @@
 	}
 	
 	@Test
-	public void testParseMalformedOtherLine() throws Exception {
+	public void testParseMalformedOtherLine() {
 		String testString = "<134>Apr 15 17:17:34 SAGPXMLQA333 [0x8240001c][audit][info] trans 191)  admindefaultsystem*): "
 				+ "ntp-service 'NTP Service' - Operational state down:";
 		Optional<MessageParserResult<JSONObject>> resultOptional = parser.parseOptionalResult(testString.getBytes(
         StandardCharsets.UTF_8));
-		Assert.assertNotNull(resultOptional);
-		Assert.assertTrue(resultOptional.isPresent());
+		assertNotNull(resultOptional);
+		assertTrue(resultOptional.isPresent());
 		List<JSONObject> result = resultOptional.get().getMessages();
 		JSONObject parsedJSON = result.get(0);
 
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/pom.xml b/metron-platform/metron-parsing/metron-parsing-storm/pom.xml
index 7e1bc50..f92e2f6 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/pom.xml
+++ b/metron-platform/metron-parsing/metron-parsing-storm/pom.xml
@@ -159,6 +159,12 @@
       <version>${global_log4j_core_version}</version>
       <scope>test</scope>
     </dependency>
+      <dependency>
+          <groupId>org.junit.jupiter</groupId>
+          <artifactId>junit-jupiter-params</artifactId>
+          <version>${global_junit_jupiter_version}</version>
+          <scope>test</scope>
+      </dependency>
 
   </dependencies>
   <build>
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/bolt/ParserBoltTest.java b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/bolt/ParserBoltTest.java
index 4240f7a..2255ce2 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/bolt/ParserBoltTest.java
+++ b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/bolt/ParserBoltTest.java
@@ -22,56 +22,34 @@
 import org.apache.metron.common.configuration.ParserConfigurations;
 import org.apache.metron.common.configuration.SensorParserConfig;
 import org.apache.metron.common.error.MetronError;
-import org.apache.metron.storm.common.message.MessageGetStrategy;
 import org.apache.metron.common.message.metadata.RawMessage;
 import org.apache.metron.common.writer.BulkMessage;
-import org.apache.metron.writer.AckTuplesPolicy;
 import org.apache.metron.parsers.DefaultParserRunnerResults;
 import org.apache.metron.parsers.ParserRunnerImpl;
 import org.apache.metron.parsers.ParserRunnerResults;
 import org.apache.metron.stellar.dsl.Context;
+import org.apache.metron.storm.common.message.MessageGetStrategy;
 import org.apache.metron.storm.kafka.flux.SimpleStormKafkaBuilder.FieldsConfiguration;
 import org.apache.metron.test.bolt.BaseBoltTest;
 import org.apache.metron.test.error.MetronErrorJSONMatcher;
+import org.apache.metron.writer.AckTuplesPolicy;
 import org.apache.storm.Config;
 import org.apache.storm.tuple.Tuple;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Test;
 import org.mockito.InOrder;
 import org.mockito.Mock;
 
 import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.function.Supplier;
 import java.util.stream.Collectors;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.argThat;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.inOrder;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
 
 public class ParserBoltTest extends BaseBoltTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   @Mock
   private Tuple t1;
 
@@ -137,17 +115,23 @@
       put("yaf", writerHandler);
     }}).withBatchTimeoutDivisor(5);
 
-    Assert.assertEquals(5, parserBolt.getBatchTimeoutDivisor());
+    assertEquals(5, parserBolt.getBatchTimeoutDivisor());
   }
 
   @Test
   public void shouldThrowExceptionOnInvalidBatchTimeoutDivisor() {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("batchTimeoutDivisor must be positive. Value provided was -1");
-
-    ParserBolt parserBolt = new ParserBolt("zookeeperUrl", parserRunner, new HashMap<String, WriterHandler>() {{
-      put("yaf", writerHandler);
-    }}).withBatchTimeoutDivisor(-1);
+    IllegalArgumentException e =
+        assertThrows(
+            IllegalArgumentException.class,
+            () ->
+                new ParserBolt(
+                        "zookeeperUrl",
+                        parserRunner,
+                        new HashMap<String, WriterHandler>() {{
+                          put("yaf", writerHandler);
+                        }})
+                    .withBatchTimeoutDivisor(-1));
+    assertEquals("batchTimeoutDivisor must be positive. Value provided was -1", e.getMessage());
   }
 
   @Test
@@ -169,8 +153,8 @@
     };
 
     Map<String, Object> componentConfiguration = parserBolt.getComponentConfiguration();
-    Assert.assertEquals(1, componentConfiguration.size());
-    Assert.assertEquals( 14, componentConfiguration.get(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS));
+    assertEquals(1, componentConfiguration.size());
+    assertEquals( 14, componentConfiguration.get(Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS));
   }
 
   @Test
@@ -210,16 +194,13 @@
     verify(parserRunner, times(1)).init(any(Supplier.class), eq(stellarContext));
     verify(yafConfig, times(1)).init();
     Map<String, String> topicToSensorMap = parserBolt.getTopicToSensorMap();
-    Assert.assertEquals(1, topicToSensorMap.size());
-    Assert.assertEquals("yaf", topicToSensorMap.get("yafTopic"));
+    assertEquals(1, topicToSensorMap.size());
+    assertEquals("yaf", topicToSensorMap.get("yafTopic"));
     verify(writerHandler).init(eq(stormConf), eq(topologyContext), eq(outputCollector), eq(parserConfigurations), any(AckTuplesPolicy.class), eq(14));
   }
 
   @Test
   public void shouldThrowExceptionOnMissingConfig() {
-    exception.expect(IllegalStateException.class);
-    exception.expectMessage("Unable to retrieve a parser config for yaf");
-
     Map stormConf = mock(Map.class);
 
     ParserBolt parserBolt = new ParserBolt("zookeeperUrl", parserRunner, new HashMap<String, WriterHandler>() {{
@@ -229,7 +210,8 @@
     parserBolt.setCuratorFramework(client);
     parserBolt.setZKCache(cache);
 
-    parserBolt.prepare(stormConf, topologyContext, outputCollector);
+    IllegalStateException e = assertThrows(IllegalStateException.class, () -> parserBolt.prepare(stormConf, topologyContext, outputCollector));
+    assertEquals("Unable to retrieve a parser config for yaf", e.getMessage());
   }
 
 
@@ -292,7 +274,7 @@
     {
       parserBolt.execute(t1);
 
-      Assert.assertEquals(expectedRawMessage, mockParserRunner.getRawMessage());
+      assertEquals(expectedRawMessage, mockParserRunner.getRawMessage());
       verify(bulkWriterResponseHandler).addTupleMessageIds(t1, Collections.singletonList("messageId"));
       verify(writerHandler, times(1)).write("yaf", new BulkMessage<>("messageId", message), parserConfigurations);
     }
@@ -339,7 +321,7 @@
       // Verify the correct message is written and ack is handled
       parserBolt.execute(t1);
 
-      Assert.assertEquals(expectedRawMessage, mockParserRunner.getRawMessage());
+      assertEquals(expectedRawMessage, mockParserRunner.getRawMessage());
 
       InOrder inOrder = inOrder(bulkWriterResponseHandler, writerHandler);
 
@@ -390,7 +372,7 @@
 
     parserBolt.execute(t1);
 
-    Assert.assertEquals(expectedRawMessage, mockParserRunner.getRawMessage());
+    assertEquals(expectedRawMessage, mockParserRunner.getRawMessage());
     verify(outputCollector, times(1)).emit(eq(Constants.ERROR_STREAM),
             argThat(new MetronErrorJSONMatcher(error.getJSONObject())));
     verify(outputCollector, times(1)).ack(t1);
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/bolt/WriterBoltTest.java b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/bolt/WriterBoltTest.java
index e16c5e9..44c6160 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/bolt/WriterBoltTest.java
+++ b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/bolt/WriterBoltTest.java
@@ -18,22 +18,6 @@
 
 package org.apache.metron.parsers.bolt;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.argThat;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.apache.log4j.Level;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.configuration.IndexingConfigurations;
@@ -52,9 +36,13 @@
 import org.apache.storm.task.TopologyContext;
 import org.apache.storm.tuple.Tuple;
 import org.json.simple.JSONObject;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 
+import java.util.*;
+
+import static org.mockito.Mockito.*;
+
 public class WriterBoltTest extends BaseBoltTest{
 
   private static final String MESSAGE_ID_FORMAT = "messageId%d";
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/StormParserIntegrationTest.java b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/StormParserIntegrationTest.java
index 03d55bb..c5d6630 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/StormParserIntegrationTest.java
+++ b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/StormParserIntegrationTest.java
@@ -16,30 +16,24 @@
  * limitations under the License.
  */
 
-import java.util.ArrayList;
-import java.util.List;
 import org.apache.metron.parsers.integration.validation.ParserDriver;
 import org.apache.metron.parsers.integration.validation.SampleDataValidation;
 import org.apache.metron.parsers.integration.validation.StormParserDriver;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameter;
-import org.junit.runners.Parameterized.Parameters;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
-@RunWith(Parameterized.class)
+import java.util.ArrayList;
+import java.util.List;
+
 public class StormParserIntegrationTest extends ParserIntegrationTest {
 
-  @Parameters(name = "{index}: sensorType={0}")
-  public static Iterable<String> data() {
+  private static Iterable<String> data() {
     return sensorTypes;
   }
 
-  @Parameter
-  public String sensorType;
-
-  @Test
-  public void test() throws Exception {
+  @ParameterizedTest
+  @MethodSource("data")
+  public void test(String sensorType) throws Exception {
     ParserDriver driver = new StormParserDriver(sensorType, readSensorConfig(sensorType),
         readGlobalConfig());
     runTest(driver);
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
index 2f4d0b6..25a9903 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
+++ b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/integration/validation/StormParserDriver.java
@@ -40,7 +40,6 @@
 import java.util.*;
 import java.util.stream.Collectors;
 
-import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.*;
 
 public class StormParserDriver extends ParserDriver {
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/topology/ParserTopologyBuilderTest.java b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/topology/ParserTopologyBuilderTest.java
index 15ec266..9692be3 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/topology/ParserTopologyBuilderTest.java
+++ b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/topology/ParserTopologyBuilderTest.java
@@ -18,50 +18,35 @@
 
 package org.apache.metron.parsers.topology;
 
-import org.apache.metron.common.Constants;
-import org.apache.metron.common.configuration.ParserConfigurations;
-import org.apache.metron.common.configuration.SensorParserConfig;
-import org.apache.metron.common.configuration.writer.ParserWriterConfiguration;
-import org.apache.metron.parsers.bolt.WriterHandler;
-import org.apache.metron.writer.NoopWriter;
-import org.apache.metron.writer.kafka.KafkaWriter;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Optional;
+import org.apache.metron.common.Constants;
+import org.apache.metron.common.configuration.ParserConfigurations;
+import org.apache.metron.common.configuration.SensorParserConfig;
+import org.apache.metron.common.writer.BulkMessageWriter;
+import org.apache.metron.parsers.bolt.WriterHandler;
+import org.apache.metron.writer.NoopWriter;
+import org.apache.metron.writer.kafka.KafkaWriter;
+import org.json.simple.JSONObject;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.powermock.api.mockito.PowerMockito.spy;
-import static org.powermock.api.mockito.PowerMockito.when;
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest(ParserTopologyBuilder.class)
 public class ParserTopologyBuilderTest {
 
-  @Mock
-  private ParserConfigurations configs;
+  private static ParserConfigurations configs;
+  private static KafkaWriter kafkaWriter;
 
-  @Mock
-  private KafkaWriter kafkaWriter;
-
-  @Before
-  public void setup() {
-    spy(ParserTopologyBuilder.class);
-    when(ParserTopologyBuilder.createKafkaWriter(Optional.of("brokerUrl"), "zookeeperUrl", Optional.of("securityProtocol")))
-            .thenReturn(kafkaWriter);
+  @BeforeAll
+  public static void setupAll() {
+      configs = mock(ParserConfigurations.class);
+      kafkaWriter = mock(KafkaWriter.class);
   }
 
   @Test
@@ -69,8 +54,6 @@
     SensorParserConfig broConfig = new SensorParserConfig();
     broConfig.setSensorTopic("bro");
     when(configs.getSensorParserConfig("bro")).thenReturn(broConfig);
-    KafkaWriter enrichmentWriter = mock(KafkaWriter.class);
-    when(kafkaWriter.withTopic(Constants.ENRICHMENT_TOPIC)).thenReturn(enrichmentWriter);
 
     Map<String, SensorParserConfig> sensorTypeToParserConfig = new HashMap<String, SensorParserConfig>() {{
       put("bro", broConfig);
@@ -85,9 +68,12 @@
                     Optional.empty());
 
     assertEquals(1, writerConfigs.size());
-    assertEquals(enrichmentWriter, writerConfigs.get("bro").getBulkMessageWriter());
-    verify(enrichmentWriter, times(1)).configure(eq("bro"), any(ParserWriterConfiguration.class));
-    verifyNoMoreInteractions(enrichmentWriter);
+
+    // Can't directly verify against mocks because this is all static. However, knowing that we have a KafkaWriter
+    // and the appropriate topic lets us know we've created the underlying config.
+    BulkMessageWriter writer = writerConfigs.get("bro").getBulkMessageWriter();
+    assertTrue(writer instanceof KafkaWriter);
+    assertEquals(Constants.ENRICHMENT_TOPIC, ((KafkaWriter) writer).getKafkaTopic(new JSONObject()).get());
   }
 
   @Test
@@ -96,8 +82,6 @@
     snortConfig.setSensorTopic("snort");
     snortConfig.setOutputTopic("snort_topic");
     when(configs.getSensorParserConfig("snort")).thenReturn(snortConfig);
-    KafkaWriter snortTestWriter = mock(KafkaWriter.class);
-    when(kafkaWriter.withTopic("snort_topic")).thenReturn(snortTestWriter);
 
     Map<String, SensorParserConfig> sensorTypeToParserConfig = new HashMap<String, SensorParserConfig>() {{
       put("snort", snortConfig);
@@ -112,9 +96,12 @@
                     Optional.empty());
 
     assertEquals(1, writerConfigs.size());
-    assertEquals(snortTestWriter, writerConfigs.get("snort").getBulkMessageWriter());
-    verify(snortTestWriter, times(1)).configure(eq("snort"), any(ParserWriterConfiguration.class));
-    verifyNoMoreInteractions(snortTestWriter);
+
+    // Can't directly verify against mocks because this is all static. However, knowing that we have a KafkaWriter
+    // and the appropriate topic lets us know we've created the underlying config.
+    BulkMessageWriter writer = writerConfigs.get("snort").getBulkMessageWriter();
+    assertTrue(writer instanceof KafkaWriter);
+    assertEquals("snort_topic", ((KafkaWriter) writer).getKafkaTopic(new JSONObject()).get());
   }
 
   @Test
@@ -122,8 +109,6 @@
     SensorParserConfig snortConfig = new SensorParserConfig();
     snortConfig.setSensorTopic("snort");
     when(configs.getSensorParserConfig("snort")).thenReturn(snortConfig);
-    KafkaWriter suppliedTopicWriter = mock(KafkaWriter.class);
-    when(kafkaWriter.withTopic("supplied_topic")).thenReturn(suppliedTopicWriter);
 
     Map<String, SensorParserConfig> sensorTypeToParserConfig = new HashMap<String, SensorParserConfig>() {{
       put("snort", snortConfig);
@@ -138,9 +123,11 @@
                     Optional.of("supplied_topic"));
 
     assertEquals(1, writerConfigs.size());
-    assertEquals(suppliedTopicWriter, writerConfigs.get("snort").getBulkMessageWriter());
-    verify(suppliedTopicWriter, times(1)).configure(eq("snort"), any(ParserWriterConfiguration.class));
-    verifyNoMoreInteractions(suppliedTopicWriter);
+    // Can't directly verify against mocks because this is all static. However, knowing that we have a KafkaWriter
+    // and the appropriate topic lets us know we've created the underlying config.
+    BulkMessageWriter writer = writerConfigs.get("snort").getBulkMessageWriter();
+    assertTrue(writer instanceof KafkaWriter);
+    assertEquals("supplied_topic", ((KafkaWriter) writer).getKafkaTopic(new JSONObject()).get());
   }
 
   @Test
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/topology/ParserTopologyCLITest.java b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/topology/ParserTopologyCLITest.java
index ae459f4..dd61279 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/topology/ParserTopologyCLITest.java
+++ b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/parsers/topology/ParserTopologyCLITest.java
@@ -18,19 +18,6 @@
 
 package org.apache.metron.parsers.topology;
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.EnumMap;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Set;
-import java.util.function.Predicate;
-import java.util.function.Supplier;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.ParseException;
@@ -43,8 +30,15 @@
 import org.apache.metron.parsers.topology.config.ValueSupplier;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.apache.storm.Config;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.*;
+import java.util.function.Predicate;
+import java.util.function.Supplier;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ParserTopologyCLITest {
 
@@ -108,9 +102,9 @@
                                       .with(ParserTopologyCLI.ParserOptions.ZK_QUORUM, "myzk")
                                       .with(ParserTopologyCLI.ParserOptions.SENSOR_TYPES, "mysensor")
                                       .build(longOpt);
-    Assert.assertEquals("myzk", ParserTopologyCLI.ParserOptions.ZK_QUORUM.get(cli));
-    Assert.assertEquals("mybroker", ParserTopologyCLI.ParserOptions.BROKER_URL.get(cli));
-    Assert.assertEquals("mysensor", ParserTopologyCLI.ParserOptions.SENSOR_TYPES.get(cli));
+    assertEquals("myzk", ParserTopologyCLI.ParserOptions.ZK_QUORUM.get(cli));
+    assertEquals("mybroker", ParserTopologyCLI.ParserOptions.BROKER_URL.get(cli));
+    assertEquals("mysensor", ParserTopologyCLI.ParserOptions.SENSOR_TYPES.get(cli));
   }
   @Test
   public void testCLI_happyPath() throws ParseException {
@@ -118,12 +112,13 @@
     happyPath(false);
   }
 
-  @Test(expected=ParseException.class)
-  public void testCLI_insufficientArg() throws ParseException {
+  @Test
+  public void testCLI_insufficientArg() {
     UnitTestHelper.setLog4jLevel(Parser.class, Level.FATAL);
-    CommandLine cli = new CLIBuilder().with(ParserTopologyCLI.ParserOptions.BROKER_URL, "mybroker")
-                                      .with(ParserTopologyCLI.ParserOptions.ZK_QUORUM, "myzk")
-                                      .build(true);
+      assertThrows(ParseException.class, () ->
+              new CLIBuilder().with(ParserTopologyCLI.ParserOptions.BROKER_URL, "mybroker")
+              .with(ParserTopologyCLI.ParserOptions.ZK_QUORUM, "myzk")
+              .build(true));
     UnitTestHelper.setLog4jLevel(Parser.class, Level.ERROR);
   }
 
@@ -132,9 +127,9 @@
                                       .with(ParserTopologyCLI.ParserOptions.ZK_QUORUM, "myzk")
                                       .with(ParserTopologyCLI.ParserOptions.SENSOR_TYPES, "mysensor")
                                       .build(longOpt);
-    Assert.assertEquals("myzk", ParserTopologyCLI.ParserOptions.ZK_QUORUM.get(cli));
-    Assert.assertEquals("mybroker", ParserTopologyCLI.ParserOptions.BROKER_URL.get(cli));
-    Assert.assertEquals("mysensor", ParserTopologyCLI.ParserOptions.SENSOR_TYPES.get(cli));
+    assertEquals("myzk", ParserTopologyCLI.ParserOptions.ZK_QUORUM.get(cli));
+    assertEquals("mybroker", ParserTopologyCLI.ParserOptions.BROKER_URL.get(cli));
+    assertEquals("mysensor", ParserTopologyCLI.ParserOptions.SENSOR_TYPES.get(cli));
   }
 
   @Test
@@ -154,10 +149,10 @@
                                      .build(longOpt);
     Optional<Config> configOptional = ParserTopologyCLI.ParserOptions.getConfig(cli);
     Config config = configOptional.get();
-    Assert.assertEquals(1, config.get(Config.TOPOLOGY_WORKERS));
-    Assert.assertEquals(2, config.get(Config.TOPOLOGY_ACKER_EXECUTORS));
-    Assert.assertEquals(3, config.get(Config.TOPOLOGY_MAX_TASK_PARALLELISM));
-    Assert.assertEquals(4, config.get(Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS));
+    assertEquals(1, config.get(Config.TOPOLOGY_WORKERS));
+    assertEquals(2, config.get(Config.TOPOLOGY_ACKER_EXECUTORS));
+    assertEquals(3, config.get(Config.TOPOLOGY_MAX_TASK_PARALLELISM));
+    assertEquals(4, config.get(Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS));
   }
 
   @Test
@@ -172,7 +167,7 @@
                                       .with(ParserTopologyCLI.ParserOptions.SENSOR_TYPES, "mysensor")
                                       .with(ParserTopologyCLI.ParserOptions.OUTPUT_TOPIC, "my_topic")
                                       .build(longOpt);
-    Assert.assertEquals("my_topic", ParserTopologyCLI.ParserOptions.OUTPUT_TOPIC.get(cli));
+    assertEquals("my_topic", ParserTopologyCLI.ParserOptions.OUTPUT_TOPIC.get(cli));
   }
 
   /**
@@ -202,9 +197,9 @@
               .build(longOpt);
       Optional<Config> configOptional = ParserTopologyCLI.ParserOptions.getConfig(cli);
       Config config = configOptional.get();
-      Assert.assertEquals(4, config.get(Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS));
-      Assert.assertEquals("foo", config.get("string"));
-      Assert.assertEquals(1, config.get("integer"));
+      assertEquals(4, config.get(Config.TOPOLOGY_MESSAGE_TIMEOUT_SECS));
+      assertEquals("foo", config.get("string"));
+      assertEquals(1, config.get("integer"));
     } finally{
       extraFile.deleteOnExit();
     }
@@ -738,7 +733,7 @@
       }
       CommandLine cmd = builder.build(true);
       ParserInput input = getInput(cmd, configs);
-      Assert.assertTrue(cliOverrideCondition.test(input));
+      assertTrue(cliOverrideCondition.test(input));
     }
     // Config Override
     {
@@ -747,7 +742,7 @@
               .with(ParserTopologyCLI.ParserOptions.SENSOR_TYPES, "mysensor");
       CommandLine cmd = builder.build(true);
       ParserInput input = getInput(cmd, configs);
-      Assert.assertTrue(configOverrideCondition.test(input));
+      assertTrue(configOverrideCondition.test(input));
     }
   }
 
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/SimpleHbaseEnrichmentWriterIntegrationTest.java b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/SimpleHbaseEnrichmentWriterIntegrationTest.java
index 46fbc94..4870c62 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/SimpleHbaseEnrichmentWriterIntegrationTest.java
+++ b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/SimpleHbaseEnrichmentWriterIntegrationTest.java
@@ -19,15 +19,6 @@
 package org.apache.metron.writers.integration;
 
 import com.google.common.collect.ImmutableList;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.util.Bytes;
@@ -37,21 +28,20 @@
 import org.apache.metron.enrichment.converter.EnrichmentConverter;
 import org.apache.metron.enrichment.converter.EnrichmentKey;
 import org.apache.metron.enrichment.converter.EnrichmentValue;
-import org.apache.metron.integration.components.ConfigUploadComponent;
 import org.apache.metron.enrichment.lookup.LookupKV;
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
 import org.apache.metron.hbase.mock.MockHTable;
-import org.apache.metron.integration.BaseIntegrationTest;
-import org.apache.metron.integration.ComponentRunner;
-import org.apache.metron.integration.Processor;
-import org.apache.metron.integration.ProcessorResult;
-import org.apache.metron.integration.ReadinessState;
-import org.apache.metron.integration.UnableToStartException;
+import org.apache.metron.integration.*;
+import org.apache.metron.integration.components.ConfigUploadComponent;
 import org.apache.metron.integration.components.KafkaComponent;
 import org.apache.metron.integration.components.ZKServerComponent;
 import org.apache.metron.parsers.integration.components.ParserTopologyComponent;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class SimpleHbaseEnrichmentWriterIntegrationTest extends BaseIntegrationTest {
 
@@ -170,15 +160,15 @@
         }});
       }};
       for (LookupKV<EnrichmentKey, EnrichmentValue> kv : result.getResult()) {
-        Assert.assertTrue(validIndicators.contains(kv.getKey().indicator));
-        Assert.assertEquals(kv.getValue().getMetadata().get("source.type"), "dummy");
-        Assert.assertNotNull(kv.getValue().getMetadata().get("timestamp"));
-        Assert.assertNotNull(kv.getValue().getMetadata().get("original_string"));
+        assertTrue(validIndicators.contains(kv.getKey().indicator));
+        assertEquals(kv.getValue().getMetadata().get("source.type"), "dummy");
+        assertNotNull(kv.getValue().getMetadata().get("timestamp"));
+        assertNotNull(kv.getValue().getMetadata().get("original_string"));
         Map<String, String> metadata = validMetadata.get(kv.getKey().indicator);
         for (Map.Entry<String, String> x : metadata.entrySet()) {
-          Assert.assertEquals(kv.getValue().getMetadata().get(x.getKey()), x.getValue());
+          assertEquals(kv.getValue().getMetadata().get(x.getKey()), x.getValue());
         }
-        Assert.assertEquals(metadata.size() + 4, kv.getValue().getMetadata().size());
+        assertEquals(metadata.size() + 4, kv.getValue().getMetadata().size());
       }
     }
     finally {
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/StormEnvelopedParserIntegrationTest.java b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/StormEnvelopedParserIntegrationTest.java
index 4baa353..2467f84 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/StormEnvelopedParserIntegrationTest.java
+++ b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/StormEnvelopedParserIntegrationTest.java
@@ -21,7 +21,7 @@
 import org.apache.metron.parsers.integration.EnvelopedParserIntegrationTest;
 import org.apache.metron.parsers.integration.validation.ParserDriver;
 import org.apache.metron.parsers.integration.validation.StormParserDriver;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class StormEnvelopedParserIntegrationTest extends EnvelopedParserIntegrationTest {
 
diff --git a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/WriterBoltIntegrationTest.java b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/WriterBoltIntegrationTest.java
index 28b7cbb..a8703bd 100644
--- a/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/WriterBoltIntegrationTest.java
+++ b/metron-platform/metron-parsing/metron-parsing-storm/src/test/java/org/apache/metron/writers/integration/WriterBoltIntegrationTest.java
@@ -17,37 +17,17 @@
  */
 package org.apache.metron.writers.integration;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
 import com.google.common.base.Function;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
-import java.io.IOException;
-import java.io.Serializable;
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.function.Predicate;
-import javax.annotation.Nullable;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.configuration.SensorParserConfig;
 import org.apache.metron.common.field.validation.FieldValidation;
 import org.apache.metron.common.utils.JSONUtils;
-import org.apache.metron.integration.BaseIntegrationTest;
-import org.apache.metron.integration.ComponentRunner;
-import org.apache.metron.integration.Processor;
-import org.apache.metron.integration.ProcessorResult;
-import org.apache.metron.integration.ReadinessState;
+import org.apache.metron.integration.*;
 import org.apache.metron.integration.components.ConfigUploadComponent;
 import org.apache.metron.integration.components.KafkaComponent;
 import org.apache.metron.integration.components.ZKServerComponent;
@@ -57,8 +37,19 @@
 import org.apache.metron.parsers.interfaces.MessageParser;
 import org.apache.metron.stellar.dsl.Context;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import javax.annotation.Nullable;
+import java.io.IOException;
+import java.io.Serializable;
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+import java.util.function.Predicate;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class WriterBoltIntegrationTest extends BaseIntegrationTest {
   private ZKServerComponent zkServerComponent;
@@ -167,9 +158,9 @@
       // validate the output messages
       Map<String,List<JSONObject>> outputMessages = result.getResult();
       for(JSONObject j : outputMessages.get(Constants.ENRICHMENT_TOPIC)) {
-        Assert.assertEquals("metron", j.get("name"));
-        Assert.assertEquals("output", j.get("route_field"));
-        Assert.assertTrue(ImmutableSet.of("foo", "bar", "baz").contains(j.get("dummy")));
+        assertEquals("metron", j.get("name"));
+        assertEquals("output", j.get("route_field"));
+        assertTrue(ImmutableSet.of("foo", "bar", "baz").contains(j.get("dummy")));
       }
     } finally {
       if(runner != null) {
@@ -200,22 +191,22 @@
 
       // validate the output messages
       Map<String,List<JSONObject>> outputMessages = result.getResult();
-      Assert.assertEquals(2, outputMessages.size());
-      Assert.assertEquals(1, outputMessages.get(Constants.ENRICHMENT_TOPIC).size());
-      Assert.assertEquals("valid", outputMessages.get(Constants.ENRICHMENT_TOPIC).get(0).get("action"));
-      Assert.assertEquals(2, outputMessages.get(parserConfig.getErrorTopic()).size());
+      assertEquals(2, outputMessages.size());
+      assertEquals(1, outputMessages.get(Constants.ENRICHMENT_TOPIC).size());
+      assertEquals("valid", outputMessages.get(Constants.ENRICHMENT_TOPIC).get(0).get("action"));
+      assertEquals(2, outputMessages.get(parserConfig.getErrorTopic()).size());
 
       // validate an error message
       JSONObject invalidMessage = outputMessages.get(parserConfig.getErrorTopic()).get(0);
-      Assert.assertEquals(Constants.ErrorType.PARSER_INVALID.getType(), invalidMessage.get(Constants.ErrorFields.ERROR_TYPE.getName()));
+      assertEquals(Constants.ErrorType.PARSER_INVALID.getType(), invalidMessage.get(Constants.ErrorFields.ERROR_TYPE.getName()));
       JSONObject rawMessage = JSONUtils.INSTANCE.load((String) invalidMessage.get(Constants.ErrorFields.RAW_MESSAGE.getName()), JSONObject.class);
-      Assert.assertEquals("foo", rawMessage.get("dummy"));
-      Assert.assertEquals("invalid", rawMessage.get("action"));
+      assertEquals("foo", rawMessage.get("dummy"));
+      assertEquals("invalid", rawMessage.get("action"));
 
       // validate the next error message
       JSONObject errorMessage = outputMessages.get(parserConfig.getErrorTopic()).get(1);
-      Assert.assertEquals(Constants.ErrorType.PARSER_ERROR.getType(), errorMessage.get(Constants.ErrorFields.ERROR_TYPE.getName()));
-      Assert.assertEquals("error", errorMessage.get(Constants.ErrorFields.RAW_MESSAGE.getName()));
+      assertEquals(Constants.ErrorType.PARSER_ERROR.getType(), errorMessage.get(Constants.ErrorFields.ERROR_TYPE.getName()));
+      assertEquals("error", errorMessage.get(Constants.ErrorFields.RAW_MESSAGE.getName()));
 
     } finally {
       if(runner != null) {
diff --git a/metron-platform/metron-pcap-backend/pom.xml b/metron-platform/metron-pcap-backend/pom.xml
index 0d0948d..96f8547 100644
--- a/metron-platform/metron-pcap-backend/pom.xml
+++ b/metron-platform/metron-pcap-backend/pom.xml
@@ -65,15 +65,20 @@
             <version>${project.parent.version}</version>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${global_junit_version}</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${global_junit_jupiter_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
-            <artifactId>mockito-all</artifactId>
-            <version>${global_mockito_version}</version>
+            <artifactId>mockito-core</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -228,8 +233,8 @@
         </dependency>
         <dependency>
             <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest-all</artifactId>
-            <version>1.3</version>
+            <artifactId>hamcrest-core</artifactId>
+            <version>${global_hamcrest_version}</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
index a8f0676..855b862 100644
--- a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
+++ b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/integration/PcapTopologyIntegrationTest.java
@@ -18,6 +18,11 @@
 
 package org.apache.metron.pcap.integration;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
+
 import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.collect.Collections2;
@@ -74,12 +79,11 @@
 import org.apache.metron.spout.pcap.deserializer.Deserializers;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.json.simple.JSONObject;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
 public class PcapTopologyIntegrationTest extends BaseIntegrationTest {
   final static String KAFKA_TOPIC = "pcap";
@@ -122,7 +126,7 @@
 
   // This will eventually be completely deprecated.
   // As it takes a significant amount of testing, the test is being disabled.
-  @Ignore
+  @Disabled
   @Test
   public void testTimestampInPacket() throws Exception {
     setupTopology(new Function<Properties, Void>() {
@@ -144,7 +148,7 @@
   /**
    * Sets up component infrastructure once for all tests.
    */
-  @BeforeClass
+  @BeforeAll
   public static void setupAll() throws Exception {
     System.out.println("Setting up test components");
     withHeaders = false;
@@ -167,7 +171,7 @@
           for (int i = 0; i < pcapEntries.size(); ++i, it.next()) {
             numMessages++;
           }
-          Assert.assertEquals(pcapEntries.size(), numMessages);
+          assertEquals(pcapEntries.size(), numMessages);
           System.out.println("Wrote " + pcapEntries.size() + " to kafka");
         }
       }
@@ -186,7 +190,7 @@
   /**
    * Cleans up component infrastructure after all tests finish running.
    */
-  @AfterClass
+  @AfterAll
   public static void teardownAll() throws Exception {
     System.out.println("Tearing down test infrastructure");
     System.out.println("Stopping runner");
@@ -220,13 +224,13 @@
     clearOutDirs(inputDir, interimResultDir, outputDir);
 
     File baseDir = new File(new File(targetDir), BASE_DIR);
-    //Assert.assertEquals(0, numFiles(outDir));
-    Assert.assertNotNull(topologiesDir);
-    Assert.assertNotNull(targetDir);
+    //assertEquals(0, numFiles(outDir));
+    assertNotNull(topologiesDir);
+    assertNotNull(targetDir);
     Path pcapFile = new Path(
         "../metron-integration-test/src/main/sample/data/SampleInput/PCAPExampleOutput");
     pcapEntries = Lists.newArrayList(readPcaps(pcapFile, withHeaders));
-    Assert.assertTrue(Iterables.size(pcapEntries) > 0);
+    assertTrue(Iterables.size(pcapEntries) > 0);
     final Properties topologyProperties = new Properties() {{
       setProperty("topology.workers", "1");
       setProperty("topology.worker.childopts", "");
@@ -294,7 +298,7 @@
   /**
    * This is executed before each individual test.
    */
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     configuration = new FixedPcapConfig(PcapCli.PREFIX_STRATEGY);
     Configuration hadoopConf = new Configuration();
@@ -317,10 +321,10 @@
     PcapOptions.FIELDS.put(configuration, new HashMap());
     PcapJob<Map<String, String>> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
     Pageable<Path> resultPages = results.get();
     Iterable<byte[]> bytes = Iterables.transform(resultPages, path -> {
       try {
@@ -330,11 +334,9 @@
       }
     });
     assertInOrder(bytes);
-    Assert.assertEquals("Expected 2 records returned.", 2, resultPages.getSize());
-    Assert.assertEquals("Expected 1 record in first file.", 1,
-        PcapHelper.toPacketInfo(Iterables.get(bytes, 0)).size());
-    Assert.assertEquals("Expected 1 record in second file.", 1,
-        PcapHelper.toPacketInfo(Iterables.get(bytes, 1)).size());
+    assertEquals(2, resultPages.getSize(), "Expected 2 records returned.");
+    assertEquals(1, PcapHelper.toPacketInfo(Iterables.get(bytes, 0)).size(), "Expected 1 record in first file.");
+    assertEquals(1, PcapHelper.toPacketInfo(Iterables.get(bytes, 1)).size(), "Expected 1 record in second file.");
   }
 
   @Test
@@ -345,10 +347,10 @@
     PcapOptions.FIELDS.put(configuration, "");
     PcapJob<String> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
     Pageable<Path> resultPages = results.get();
     Iterable<byte[]> bytes = Iterables.transform(resultPages, path -> {
       try {
@@ -358,11 +360,9 @@
       }
     });
     assertInOrder(bytes);
-    Assert.assertEquals("Expected 2 records returned.", 2, resultPages.getSize());
-    Assert.assertEquals("Expected 1 record in first file.", 1,
-        PcapHelper.toPacketInfo(Iterables.get(bytes, 0)).size());
-    Assert.assertEquals("Expected 1 record in second file.", 1,
-        PcapHelper.toPacketInfo(Iterables.get(bytes, 1)).size());
+    assertEquals(2, resultPages.getSize(), "Expected 2 records returned.");
+    assertEquals(1, PcapHelper.toPacketInfo(Iterables.get(bytes, 0)).size(), "Expected 1 record in first file.");
+    assertEquals(1, PcapHelper.toPacketInfo(Iterables.get(bytes, 1)).size(), "Expected 1 record in second file.");
   }
 
   @Test
@@ -373,14 +373,14 @@
     PcapOptions.END_TIME_NS.put(configuration, 1);
     PcapJob<Map<String, String>> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
-    Assert.assertEquals(100.0, results.getStatus().getPercentComplete(), 0.0);
-    Assert.assertEquals("No results in specified date range.",
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(100.0, results.getStatus().getPercentComplete(), 0.0);
+    assertEquals("No results in specified date range.",
         results.getStatus().getDescription());
-    Assert.assertEquals(results.get().getSize(), 0);
+    assertEquals(results.get().getSize(), 0);
   }
 
   @Test
@@ -393,11 +393,11 @@
     }});
     PcapJob<Map<String, String>> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
-    Assert.assertEquals(results.get().getSize(), 0);
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(results.get().getSize(), 0);
   }
 
   @Test
@@ -408,11 +408,11 @@
     PcapOptions.FIELDS.put(configuration, "ip_dst_addr == '207.28.210.1'");
     PcapJob<String> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
-    Assert.assertEquals(results.get().getSize(), 0);
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(results.get().getSize(), 0);
   }
 
   @Test
@@ -425,11 +425,11 @@
     }});
     PcapJob<Map<String, String>> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
-    Assert.assertEquals(results.get().getSize(), 0);
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(results.get().getSize(), 0);
   }
 
   @Test
@@ -440,11 +440,11 @@
     PcapOptions.FIELDS.put(configuration, "protocol == 'foo'");
     PcapJob<String> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
-    Assert.assertEquals(results.get().getSize(), 0);
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(results.get().getSize(), 0);
   }
 
   @Test
@@ -456,10 +456,10 @@
     PcapOptions.FIELDS.put(configuration, new HashMap<>());
     PcapJob<Map<String, String>> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
     Pageable<Path> resultPages = results.get();
     Iterable<byte[]> bytes = Iterables.transform(resultPages, path -> {
       try {
@@ -469,7 +469,7 @@
       }
     });
     assertInOrder(bytes);
-    Assert.assertEquals(pcapEntries.size(), resultPages.getSize());
+    assertEquals(pcapEntries.size(), resultPages.getSize());
   }
 
   @Test
@@ -481,7 +481,7 @@
     PcapOptions.FIELDS.put(configuration, "");
     PcapJob<String> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
     Pageable<Path> resultPages = results.get();
@@ -493,7 +493,7 @@
       }
     });
     assertInOrder(bytes);
-    Assert.assertEquals(pcapEntries.size(), resultPages.getSize());
+    assertEquals(pcapEntries.size(), resultPages.getSize());
   }
 
   @Test
@@ -508,10 +508,10 @@
     PcapOptions.NUM_RECORDS_PER_FILE.put(configuration, 1);
     PcapJob<Map<String, String>> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
     Pageable<Path> resultPages = results.get();
     Iterable<byte[]> bytes = Iterables.transform(resultPages, path -> {
       try {
@@ -521,8 +521,8 @@
       }
     });
     assertInOrder(bytes);
-    Assert.assertTrue(resultPages.getSize() > 0);
-    Assert.assertEquals(Iterables.size(filterPcaps(pcapEntries, new Predicate<JSONObject>() {
+    assertTrue(resultPages.getSize() > 0);
+    assertEquals(Iterables.size(filterPcaps(pcapEntries, new Predicate<JSONObject>() {
           @Override
           public boolean apply(@Nullable JSONObject input) {
             Object prt = input.get(Constants.Fields.DST_PORT.getName());
@@ -533,7 +533,7 @@
     );
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     PcapMerger.merge(baos, HDFSUtils.readBytes(resultPages.getPage(0)));
-    Assert.assertTrue(baos.toByteArray().length > 0);
+    assertTrue(baos.toByteArray().length > 0);
   }
 
   @Test
@@ -545,10 +545,10 @@
     PcapOptions.FIELDS.put(configuration, "ip_dst_port == 22");
     PcapJob<String> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
     Pageable<Path> resultPages = results.get();
     Iterable<byte[]> bytes = Iterables.transform(resultPages, path -> {
       try {
@@ -558,7 +558,7 @@
       }
     });
     assertInOrder(bytes);
-    Assert.assertEquals(Iterables.size(filterPcaps(pcapEntries, new Predicate<JSONObject>() {
+    assertEquals(Iterables.size(filterPcaps(pcapEntries, new Predicate<JSONObject>() {
               @Override
               public boolean apply(@Nullable JSONObject input) {
                 Object prt = input.get(Constants.Fields.DST_PORT.getName());
@@ -569,7 +569,7 @@
     );
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     PcapMerger.merge(baos, HDFSUtils.readBytes(resultPages.getPage(0)));
-    Assert.assertTrue(baos.toByteArray().length > 0);
+    assertTrue(baos.toByteArray().length > 0);
   }
 
   @Test
@@ -581,10 +581,10 @@
     PcapOptions.FIELDS.put(configuration, "ip_dst_port > 20 and ip_dst_port < 55792");
     PcapJob<String> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
     Pageable<Path> resultPages = results.get();
     Iterable<byte[]> bytes = Iterables.transform(results.get(), path -> {
       try {
@@ -594,7 +594,7 @@
       }
     });
     assertInOrder(bytes);
-    Assert.assertEquals(Iterables.size(filterPcaps(pcapEntries, new Predicate<JSONObject>() {
+    assertEquals(Iterables.size(filterPcaps(pcapEntries, new Predicate<JSONObject>() {
               @Override
               public boolean apply(@Nullable JSONObject input) {
                 Object prt = input.get(Constants.Fields.DST_PORT.getName());
@@ -605,7 +605,7 @@
     );
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     PcapMerger.merge(baos, HDFSUtils.readBytes(resultPages.getPage(0)));
-    Assert.assertTrue(baos.toByteArray().length > 0);
+    assertTrue(baos.toByteArray().length > 0);
   }
 
   @Test
@@ -617,10 +617,10 @@
     PcapOptions.FIELDS.put(configuration, "ip_dst_port > 55790");
     PcapJob<String> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
     Pageable<Path> resultPages = results.get();
     Iterable<byte[]> bytes = Iterables.transform(resultPages, path -> {
       try {
@@ -630,7 +630,7 @@
       }
     });
     assertInOrder(bytes);
-    Assert.assertEquals(Iterables.size(filterPcaps(pcapEntries, new Predicate<JSONObject>() {
+    assertEquals(Iterables.size(filterPcaps(pcapEntries, new Predicate<JSONObject>() {
               @Override
               public boolean apply(@Nullable JSONObject input) {
                 Object prt = input.get(Constants.Fields.DST_PORT.getName());
@@ -641,7 +641,7 @@
     );
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     PcapMerger.merge(baos, HDFSUtils.readBytes(resultPages.getPage(0)));
-    Assert.assertTrue(baos.toByteArray().length > 0);
+    assertTrue(baos.toByteArray().length > 0);
   }
 
   @Test
@@ -653,10 +653,10 @@
         .put(configuration, getTimestamp(pcapEntries.size() - 1, pcapEntries) + 1);
     PcapJob<String> job = new PcapJob<>();
     Statusable<Path> results = job.submit(PcapFinalizerStrategies.CLI, configuration);
-    Assert.assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
+    assertEquals(Statusable.JobType.MAP_REDUCE, results.getJobType());
     waitForJob(results);
 
-    Assert.assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
+    assertEquals(JobStatus.State.SUCCEEDED, results.getStatus().getState());
     Iterable<byte[]> bytes = Iterables.transform(results.get(), path -> {
       try {
         return HDFSUtils.readBytes(path);
@@ -665,10 +665,10 @@
       }
     });
     assertInOrder(bytes);
-    Assert.assertEquals(1, results.get().getSize());
+    assertEquals(1, results.get().getSize());
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     PcapMerger.merge(baos, HDFSUtils.readBytes(results.get().getPage(0)));
-    Assert.assertTrue(baos.toByteArray().length > 0);
+    assertTrue(baos.toByteArray().length > 0);
   }
 
   private void waitForJob(Statusable statusable) throws Exception {
@@ -702,7 +702,7 @@
       {
         List<PacketInfo> info = PcapHelper.toPacketInfo(pcapWithHeader);
         for (PacketInfo pi : info) {
-          Assert.assertEquals(calculatedTs, pi.getPacketTimeInNanos());
+          assertEquals(calculatedTs, pi.getPacketTimeInNanos());
           //IF you are debugging and want to see the packets, uncomment the following.
           //System.out.println( Long.toUnsignedString(calculatedTs) + " => " + pi.getJsonDoc());
         }
@@ -723,8 +723,8 @@
     for (byte[] packet : packets) {
       for (JSONObject json : TO_JSONS.apply(packet)) {
         Long current = Long.parseLong(json.get("ts_micro").toString());
-        Assert.assertNotNull(current);
-        Assert.assertTrue(Long.compareUnsigned(current, previous) >= 0);
+        assertNotNull(current);
+        assertTrue(Long.compareUnsigned(current, previous) >= 0);
         previous = current;
       }
     }
diff --git a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
index 3049782..d15fe1d 100644
--- a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
+++ b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/pcap/query/PcapCliTest.java
@@ -17,27 +17,6 @@
  */
 package org.apache.metron.pcap.query;
 
-import static org.apache.metron.pcap.config.PcapGlobalDefaults.BASE_INPUT_PATH_DEFAULT;
-import static org.apache.metron.pcap.config.PcapGlobalDefaults.BASE_INTERIM_RESULT_PATH_DEFAULT;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.isA;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.PrintStream;
-import java.io.UnsupportedEncodingException;
-import java.nio.charset.StandardCharsets;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.mapreduce.MRJobConfig;
 import org.apache.metron.common.Constants;
@@ -52,11 +31,29 @@
 import org.hamcrest.Description;
 import org.hamcrest.Matcher;
 import org.hamcrest.TypeSafeMatcher;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.io.*;
+import java.nio.charset.StandardCharsets;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import static org.apache.metron.pcap.config.PcapGlobalDefaults.BASE_INPUT_PATH_DEFAULT;
+import static org.apache.metron.pcap.config.PcapGlobalDefaults.BASE_INTERIM_RESULT_PATH_DEFAULT;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.ArgumentMatchers.isA;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+import static org.mockito.hamcrest.MockitoHamcrest.argThat;
+
 public class PcapCliTest {
 
   @Mock
@@ -66,7 +63,7 @@
   private String execDir;
   private PrefixStrategy prefixStrategy;
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     MockitoAnnotations.initMocks(this);
     execDir = System.getProperty("user.dir");
diff --git a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/spout/pcap/deserializer/FromKeyDeserializerTest.java b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/spout/pcap/deserializer/FromKeyDeserializerTest.java
index 1d49103..e504958 100644
--- a/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/spout/pcap/deserializer/FromKeyDeserializerTest.java
+++ b/metron-platform/metron-pcap-backend/src/test/java/org/apache/metron/spout/pcap/deserializer/FromKeyDeserializerTest.java
@@ -19,21 +19,16 @@
 package org.apache.metron.spout.pcap.deserializer;
 
 import org.apache.metron.common.utils.timestamp.TimestampConverters;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 public class FromKeyDeserializerTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   @Test
   public void empty_or_null_key_throws_illegal_argument_exception() {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("Expected a key but none provided");
-
     FromKeyDeserializer deserializer = new FromKeyDeserializer(TimestampConverters.NANOSECONDS);
-    deserializer.deserializeKeyValue(null, null);
+    IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> deserializer.deserializeKeyValue(null, null));
+    assertEquals("Expected a key but none provided", e.getMessage());
   }
 }
diff --git a/metron-platform/metron-pcap/pom.xml b/metron-platform/metron-pcap/pom.xml
index 6510dc8..f4334d6 100644
--- a/metron-platform/metron-pcap/pom.xml
+++ b/metron-platform/metron-pcap/pom.xml
@@ -214,5 +214,22 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-core</artifactId>
+            <version>${global_hamcrest_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-params</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapFilenameHelperTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapFilenameHelperTest.java
index 03778d0..a2c95d3 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapFilenameHelperTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapFilenameHelperTest.java
@@ -18,10 +18,10 @@
 
 package org.apache.metron.pcap;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import org.junit.jupiter.api.Test;
 
-import org.junit.Test;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class PcapFilenameHelperTest {
 
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapHelperTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapHelperTest.java
index 73f359d..fafbea7 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapHelperTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapHelperTest.java
@@ -25,8 +25,7 @@
 import org.apache.hadoop.io.IntWritable;
 import org.apache.hadoop.io.SequenceFile;
 import org.apache.metron.spout.pcap.Endianness;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.krakenapps.pcap.decoder.ip.Ipv4Packet;
 import org.krakenapps.pcap.decoder.tcp.TcpPacket;
 import org.krakenapps.pcap.decoder.udp.UdpPacket;
@@ -41,6 +40,8 @@
 import java.util.Map;
 
 import static org.apache.metron.common.Constants.Fields;
+import static org.junit.jupiter.api.Assertions.assertArrayEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -82,7 +83,7 @@
         for(int i = 0;i < reconstitutedPacket.length;++i) {
           System.out.println((i + 1) + ". " + String.format("%02X", pcap[i]) + " = " + String.format("%02X", reconstitutedPacket[i]));
         }
-        Assert.assertArrayEquals(reconstitutedPacket, pcap);
+        assertArrayEquals(reconstitutedPacket, pcap);
       }
     }
   }
@@ -111,13 +112,13 @@
     when(packetInfo.getIpv4Packet()).thenReturn(ipv4Packet);
 
     Map<String, Object> actualFields = PcapHelper.packetToFields(packetInfo);
-    Assert.assertArrayEquals("packet bytes".getBytes(StandardCharsets.UTF_8),
+    assertArrayEquals("packet bytes".getBytes(StandardCharsets.UTF_8),
             (byte[]) actualFields.get(PcapHelper.PacketFields.PACKET_DATA.getName()));
-    Assert.assertEquals("tcp source address", actualFields.get(Fields.SRC_ADDR.getName()));
-    Assert.assertEquals(22, actualFields.get(Fields.SRC_PORT.getName()));
-    Assert.assertEquals("tcp destination address", actualFields.get(Fields.DST_ADDR.getName()));
-    Assert.assertEquals(55791, actualFields.get(Fields.DST_PORT.getName()));
-    Assert.assertEquals(6, actualFields.get(Fields.PROTOCOL.getName()));
+    assertEquals("tcp source address", actualFields.get(Fields.SRC_ADDR.getName()));
+    assertEquals(22, actualFields.get(Fields.SRC_PORT.getName()));
+    assertEquals("tcp destination address", actualFields.get(Fields.DST_ADDR.getName()));
+    assertEquals(55791, actualFields.get(Fields.DST_PORT.getName()));
+    assertEquals(6, actualFields.get(Fields.PROTOCOL.getName()));
   }
 
   @Test
@@ -143,12 +144,12 @@
     when(packetInfo.getIpv4Packet()).thenReturn(ipv4Packet);
 
     Map<String, Object> actualFields = PcapHelper.packetToFields(packetInfo);
-    Assert.assertArrayEquals("packet bytes".getBytes(StandardCharsets.UTF_8),
+    assertArrayEquals("packet bytes".getBytes(StandardCharsets.UTF_8),
             (byte[]) actualFields.get(PcapHelper.PacketFields.PACKET_DATA.getName()));
-    Assert.assertEquals("udp source address", actualFields.get(Fields.SRC_ADDR.getName()));
-    Assert.assertEquals(68, actualFields.get(Fields.SRC_PORT.getName()));
-    Assert.assertEquals("udp destination address", actualFields.get(Fields.DST_ADDR.getName()));
-    Assert.assertEquals(67, actualFields.get(Fields.DST_PORT.getName()));
-    Assert.assertEquals(17, actualFields.get(Fields.PROTOCOL.getName()));
+    assertEquals("udp source address", actualFields.get(Fields.SRC_ADDR.getName()));
+    assertEquals(68, actualFields.get(Fields.SRC_PORT.getName()));
+    assertEquals("udp destination address", actualFields.get(Fields.DST_ADDR.getName()));
+    assertEquals(67, actualFields.get(Fields.DST_PORT.getName()));
+    assertEquals(17, actualFields.get(Fields.PROTOCOL.getName()));
   }
 }
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapPackerComparatorTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapPackerComparatorTest.java
index 9062c17..8facb4a 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapPackerComparatorTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapPackerComparatorTest.java
@@ -18,17 +18,16 @@
 
 package org.apache.metron.pcap;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.krakenapps.pcap.packet.PacketHeader;
 import org.krakenapps.pcap.packet.PacketPayload;
 import org.krakenapps.pcap.packet.PcapPacket;
 
-import java.text.ParseException;
 import java.time.ZonedDateTime;
 import java.time.format.DateTimeFormatter;
 
-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 PcapPackerComparatorTest {
   private static final String BASE_DATE = "July 26, 2016 8:21:13 AM UTC";
@@ -46,19 +45,19 @@
   private static final PcapPacketComparator comp = new PcapPacketComparator();
 
   @Test
-  public void testEqual() throws ParseException {
+  public void testEqual() {
     PacketHeader ph = new PacketHeader((int) JULY_26_SECONDS, 0, 0, 0);
     PcapPacket packet = new PcapPacket(ph, EMPTY_PAYLOAD);
 
     PacketHeader ph2 = new PacketHeader((int) JULY_26_SECONDS, 0, 0, 0);
     PcapPacket packet2 = new PcapPacket(ph2, EMPTY_PAYLOAD);
 
-    assertEquals("Timestamps should be equal", comp.compare(packet, packet2), 0);
-    assertEquals("Timestamps should be equal", comp.compare(packet2, packet), 0);
+    assertEquals(comp.compare(packet, packet2), 0, "Timestamps should be equal");
+    assertEquals(comp.compare(packet2, packet), 0, "Timestamps should be equal");
   }
 
   @Test
-  public void testDifferingSeconds() throws ParseException {
+  public void testDifferingSeconds() {
     PacketHeader ph = new PacketHeader((int) JULY_26_SECONDS, 0, 0, 0);
     PcapPacket earlier = new PcapPacket(ph, EMPTY_PAYLOAD);
 
@@ -66,12 +65,12 @@
     PcapPacket later = new PcapPacket(ph2, EMPTY_PAYLOAD);
 
     PcapPacketComparator comp = new PcapPacketComparator();
-    assertTrue("Earlier should be less than later", comp.compare(earlier, later) < 0);
-    assertTrue("Later should be greater than earlier", comp.compare(later, earlier) > 0);
+    assertTrue(comp.compare(earlier, later) < 0, "Earlier should be less than later");
+    assertTrue(comp.compare(later, earlier) > 0, "Later should be greater than earlier");
   }
 
   @Test
-  public void testDifferingMicroseconds() throws ParseException {
+  public void testDifferingMicroseconds() {
     PacketHeader ph = new PacketHeader((int) JULY_26_SECONDS, 0, 0, 0);
     PcapPacket earlier = new PcapPacket(ph, EMPTY_PAYLOAD);
 
@@ -79,12 +78,12 @@
     PcapPacket later = new PcapPacket(ph2, EMPTY_PAYLOAD);
 
     PcapPacketComparator comp = new PcapPacketComparator();
-    assertTrue("Earlier should be less than later", comp.compare(earlier, later) < 0);
-    assertTrue("Later should be greater than earlier", comp.compare(later, earlier) > 0);
+    assertTrue(comp.compare(earlier, later) < 0, "Earlier should be less than later");
+    assertTrue(comp.compare(later, earlier) > 0, "Later should be greater than earlier");
   }
 
   @Test
-  public void testBothSmallDifferences() throws ParseException {
+  public void testBothSmallDifferences() {
     PacketHeader ph = new PacketHeader((int) JULY_26_SECONDS, 0, 0, 0);
     PcapPacket earlier = new PcapPacket(ph, EMPTY_PAYLOAD);
 
@@ -92,12 +91,12 @@
     PcapPacket later = new PcapPacket(ph2, EMPTY_PAYLOAD);
 
     PcapPacketComparator comp = new PcapPacketComparator();
-    assertTrue("Earlier should be less than later", comp.compare(earlier, later) < 0);
-    assertTrue("Later should be greater than earlier", comp.compare(later, earlier) > 0);
+    assertTrue(comp.compare(earlier, later) < 0, "Earlier should be less than later");
+    assertTrue(comp.compare(later, earlier) > 0, "Later should be greater than earlier");
   }
 
   @Test
-  public void testLargeDifference() throws ParseException {
+  public void testLargeDifference() {
     PacketHeader ph = new PacketHeader((int) JULY_26_SECONDS, 0, 0, 0);
     PcapPacket earlier = new PcapPacket(ph, EMPTY_PAYLOAD);
 
@@ -105,7 +104,7 @@
     PcapPacket later = new PcapPacket(ph2, EMPTY_PAYLOAD);
 
     PcapPacketComparator comp = new PcapPacketComparator();
-    assertTrue("Earlier should be less than later", comp.compare(earlier, later) < 0);
-    assertTrue("Later should be greater than earlier", comp.compare(later, earlier) > 0);
+    assertTrue(comp.compare(earlier, later) < 0, "Earlier should be less than later");
+    assertTrue(comp.compare(later, earlier) > 0, "Later should be greater than earlier");
   }
 }
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapPagesTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapPagesTest.java
index 0be2bb5..1e0e630 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapPagesTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/PcapPagesTest.java
@@ -22,12 +22,12 @@
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.CoreMatchers.sameInstance;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 import java.util.ArrayList;
 import java.util.List;
 import org.apache.hadoop.fs.Path;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class PcapPagesTest {
 
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/PcapFiltersTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/PcapFiltersTest.java
index 75871e9..92280f0 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/PcapFiltersTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/PcapFiltersTest.java
@@ -19,17 +19,17 @@
 
 import org.apache.metron.pcap.filter.fixed.FixedPcapFilter;
 import org.apache.metron.pcap.filter.query.QueryPcapFilter;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class PcapFiltersTest {
 
   @Test
-  public void creates_pcap_filters() throws Exception {
-    Assert.assertThat("filter type should be Fixed", PcapFilters.FIXED.create(), instanceOf(FixedPcapFilter.class));
-    Assert.assertThat("filter type should be Query", PcapFilters.QUERY.create(), instanceOf(QueryPcapFilter.class));
+  public void creates_pcap_filters() {
+    assertThat("filter type should be Fixed", PcapFilters.FIXED.create(), instanceOf(FixedPcapFilter.class));
+    assertThat("filter type should be Query", PcapFilters.QUERY.create(), instanceOf(QueryPcapFilter.class));
   }
 
 }
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/fixed/FixedPcapFilterTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/fixed/FixedPcapFilterTest.java
index b32f23f..d8847d1 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/fixed/FixedPcapFilterTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/fixed/FixedPcapFilterTest.java
@@ -18,21 +18,24 @@
 
 package org.apache.metron.pcap.filter.fixed;
 
-import static org.hamcrest.CoreMatchers.equalTo;
+import org.apache.hadoop.conf.Configuration;
+import org.apache.metron.common.Constants;
+import org.apache.metron.pcap.PacketInfo;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.Map;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.metron.common.Constants;
-import org.apache.metron.pcap.PacketInfo;
-import org.junit.Assert;
-import org.junit.Test;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class FixedPcapFilterTest {
 
   @Test
-  public void string_representation_of_query_gets_formatted() throws Exception {
+  public void string_representation_of_query_gets_formatted() {
     final LinkedHashMap<String, String> fields = new LinkedHashMap<String, String>() {{
       put(Constants.Fields.SRC_ADDR.getName(), "src_ip");
       put(Constants.Fields.SRC_PORT.getName(), "0");
@@ -42,21 +45,21 @@
     }};
     String actual = new FixedPcapFilter.Configurator().queryToString(fields);
     String expected = "src_ip_0_dst_ip_1_false";
-    Assert.assertThat("string representation did not match", actual, equalTo(expected));
+    assertThat("string representation did not match", actual, equalTo(expected));
   }
 
   @Test
-  public void string_representation_of_empty_fields_empty() throws Exception {
+  public void string_representation_of_empty_fields_empty() {
     {
-      final LinkedHashMap<String, String> fields = new LinkedHashMap<String, String>();
+      final LinkedHashMap<String, String> fields = new LinkedHashMap<>();
       String actual = new FixedPcapFilter.Configurator().queryToString(fields);
       String expected = "";
-      Assert.assertThat("string representation did not match", actual, equalTo(expected));
+      assertThat("string representation did not match", actual, equalTo(expected));
     }
     {
       String actual = new FixedPcapFilter.Configurator().queryToString(null);
       String expected = "";
-      Assert.assertThat("string representation did not match", actual, equalTo(expected));
+      assertThat("string representation did not match", actual, equalTo(expected));
     }
     {
       final LinkedHashMap<String, String> fields = new LinkedHashMap<String, String>() {{
@@ -65,12 +68,12 @@
       }};
       String actual = new FixedPcapFilter.Configurator().queryToString(fields);
       String expected = "_";
-      Assert.assertThat("string representation did not match", actual, equalTo(expected));
+      assertThat("string representation did not match", actual, equalTo(expected));
     }
   }
 
   @Test
-  public void testTrivialEquality() throws Exception {
+  public void testTrivialEquality() {
     Configuration config = new Configuration();
     final Map<String, String> fields = new HashMap<String, String>() {{
       put(Constants.Fields.SRC_ADDR.getName(), "src_ip");
@@ -93,12 +96,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
   }
 
   @Test
-  public void testReverseTraffic() throws Exception {
+  public void testReverseTraffic() {
     Configuration config = new Configuration();
     final Map<String, String> fields = new HashMap<String, String>() {{
       put(Constants.Fields.SRC_ADDR.getName(), "src_ip");
@@ -121,7 +124,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new FixedPcapFilter.Configurator().addToConfig(fields, config);
     {
@@ -137,7 +140,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new FixedPcapFilter.Configurator().addToConfig(fields, config);
     {
@@ -153,12 +156,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertFalse(filter.test(null));
+      assertFalse(filter.test(null));
     }
   }
 
   @Test
-  public void testMissingDstAddr() throws Exception {
+  public void testMissingDstAddr() {
     Configuration config = new Configuration();
     final HashMap<String, String> fields = new HashMap<String, String>() {{
       put(Constants.Fields.SRC_ADDR.getName(), "src_ip");
@@ -180,7 +183,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new FixedPcapFilter.Configurator().addToConfig(fields, config);
     {
@@ -196,12 +199,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertFalse(filter.test(null));
+      assertFalse(filter.test(null));
     }
   }
 
   @Test
-  public void testMissingDstPort() throws Exception {
+  public void testMissingDstPort() {
     Configuration config = new Configuration();
     final HashMap<String, String> fields = new HashMap<String, String>() {{
       put(Constants.Fields.SRC_ADDR.getName(), "src_ip");
@@ -223,7 +226,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new FixedPcapFilter.Configurator().addToConfig(fields, config);
     {
@@ -239,7 +242,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new FixedPcapFilter.Configurator().addToConfig(fields, config);
     {
@@ -255,12 +258,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertFalse(filter.test(null));
+      assertFalse(filter.test(null));
     }
   }
 
   @Test
-  public void testMissingSrcAddr() throws Exception {
+  public void testMissingSrcAddr() {
     Configuration config = new Configuration();
     final HashMap<String, String> fields = new HashMap<String, String>() {{
       put(Constants.Fields.SRC_PORT.getName(), "0");
@@ -282,12 +285,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
   }
 
   @Test
-  public void testMissingSrcPort() throws Exception {
+  public void testMissingSrcPort() {
     Configuration config = new Configuration();
     final HashMap<String, String> fields = new HashMap<String, String>() {{
       put(Constants.Fields.SRC_ADDR.getName(), "src_ip");
@@ -309,7 +312,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new FixedPcapFilter.Configurator().addToConfig(fields, config);
     {
@@ -325,7 +328,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
   }
 
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/query/QueryPcapFilterTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/query/QueryPcapFilterTest.java
index 2724e06..ba13da5 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/query/QueryPcapFilterTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/filter/query/QueryPcapFilterTest.java
@@ -18,50 +18,53 @@
 
 package org.apache.metron.pcap.filter.query;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-
-import java.util.HashMap;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.metron.common.Constants;
 import org.apache.metron.pcap.PacketInfo;
 import org.apache.metron.pcap.filter.PcapFilter;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import java.util.HashMap;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class QueryPcapFilterTest {
 
   @Test
-  public void string_representation_of_query_gets_formatted() throws Exception {
+  public void string_representation_of_query_gets_formatted() {
     String query = "ip_src_addr == 'srcIp' and ip_src_port == '80' and ip_dst_addr == 'dstIp' and ip_dst_port == '100' and protocol == 'protocol'";
     String actual = new QueryPcapFilter.Configurator().queryToString(query);
     String expected = "ip_src_addr_==_'srcIp'_and_ip_src_port_==_'80'_and_ip_dst_addr_==_'dstIp'_and_ip_dst_port_==_'100'_and_protocol_==_'protocol'";
-    Assert.assertThat("string representation did not match", actual, equalTo(expected));
+    assertThat("string representation did not match", actual, equalTo(expected));
   }
 
   @Test
-  public void string_representation_of_empty_query_empty() throws Exception {
+  public void string_representation_of_empty_query_empty() {
     {
       String query = "";
       String actual = new QueryPcapFilter.Configurator().queryToString(query);
       String expected = "";
-      Assert.assertThat("string representation did not match", actual, equalTo(expected));
+      assertThat("string representation did not match", actual, equalTo(expected));
     }
     {
       String query = " ";
       String actual = new QueryPcapFilter.Configurator().queryToString(query);
       String expected = "";
-      Assert.assertThat("string representation did not match", actual, equalTo(expected));
+      assertThat("string representation did not match", actual, equalTo(expected));
     }
     {
       String query = null;
       String actual = new QueryPcapFilter.Configurator().queryToString(query);
       String expected = "";
-      Assert.assertThat("string representation did not match", actual, equalTo(expected));
+      assertThat("string representation did not match", actual, equalTo(expected));
     }
   }
 
   @Test
-  public void testEmptyQueryFilter() throws Exception {
+  public void testEmptyQueryFilter() {
     Configuration config = new Configuration();
     String query = "";
     new QueryPcapFilter.Configurator().addToConfig(query, config);
@@ -78,12 +81,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
   }
 
   @Test
-  public void testTrivialEquality() throws Exception {
+  public void testTrivialEquality() {
     Configuration config = new Configuration();
     String query = "ip_src_addr == 'src_ip' and ip_src_port == 0 and ip_dst_addr == 'dst_ip' and ip_dst_port == 1";
     new QueryPcapFilter.Configurator().addToConfig(query, config);
@@ -100,12 +103,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
   }
 
   @Test
-  public void testMissingDstAddr() throws Exception {
+  public void testMissingDstAddr() {
     Configuration config = new Configuration();
     String query = "ip_src_addr == 'src_ip' and ip_src_port == 0 and ip_dst_port == 1";
     new QueryPcapFilter.Configurator().addToConfig(query, config);
@@ -122,7 +125,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new QueryPcapFilter.Configurator().addToConfig(query, config);
     {
@@ -138,12 +141,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertFalse(filter.test(null));
+      assertFalse(filter.test(null));
     }
   }
 
   @Test
-  public void testMissingDstPort() throws Exception {
+  public void testMissingDstPort() {
     Configuration config = new Configuration();
     String query = "ip_src_addr == 'src_ip' and ip_src_port == 0 and ip_dst_addr == 'dst_ip'";
     new QueryPcapFilter.Configurator().addToConfig(query, config);
@@ -160,7 +163,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new QueryPcapFilter.Configurator().addToConfig(query, config);
     {
@@ -176,7 +179,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new QueryPcapFilter.Configurator().addToConfig(query, config);
     {
@@ -192,12 +195,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertFalse(filter.test(null));
+      assertFalse(filter.test(null));
     }
   }
 
   @Test
-  public void testMissingSrcAddr() throws Exception {
+  public void testMissingSrcAddr() {
     Configuration config = new Configuration();
     String query = "ip_src_port == 0 and ip_dst_addr == 'dst_ip' and ip_dst_port == 1";
     new QueryPcapFilter.Configurator().addToConfig(query, config);
@@ -214,12 +217,12 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
   }
 
   @Test
-  public void testMissingSrcPort() throws Exception {
+  public void testMissingSrcPort() {
     Configuration config = new Configuration();
     String query = "ip_src_addr == 'src_ip' and ip_dst_addr == 'dst_ip' and ip_dst_port == 1";
     new QueryPcapFilter.Configurator().addToConfig(query, config);
@@ -236,7 +239,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
     new QueryPcapFilter.Configurator().addToConfig(query, config);
     {
@@ -252,7 +255,7 @@
         }
       };
       filter.configure(config);
-      Assert.assertTrue(filter.test(null));
+      assertTrue(filter.test(null));
     }
   }
 
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/FileFilterUtilTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/FileFilterUtilTest.java
index 72e2b93..6af79c5 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/FileFilterUtilTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/FileFilterUtilTest.java
@@ -18,27 +18,25 @@
 
 package org.apache.metron.pcap.mr;
 
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
 import com.google.common.collect.Iterables;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
 import org.apache.hadoop.fs.Path;
 import org.apache.metron.pcap.utils.FileFilterUtil;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class FileFilterUtilTest {
 
   private List<Path> filesIn;
 
-  @Before
+  @BeforeEach
   public void setup() {
     filesIn = new ArrayList<>();
     filesIn.add(new Path("/apath/pcap_pcap5_1495135372055519000_2_pcap-9-1495134910"));
@@ -51,7 +49,7 @@
   @Test
   public void returns_files_by_partition() {
     Map<Integer, List<Path>> filesByPartition = FileFilterUtil.getFilesByPartition(filesIn);
-    Map<Integer, List<Path>> expectedFilesPartitioned = new HashMap() {{
+    Map<Integer, List<Path>> expectedFilesPartitioned = new HashMap<Integer, List<Path>>() {{
       put(0, toList("/apath/pcap_pcap5_1495135377055375000_0_pcap-9-1495134910"));
       put(1, toList("/apath/pcap_pcap5_1495135372168719000_1_pcap-9-1495134910"));
       put(2, toList("/apath/pcap_pcap5_1495135372055519000_2_pcap-9-1495134910"));
@@ -67,7 +65,7 @@
 
   @Test
   public void returns_left_trailing_filtered_list() {
-    Map<Integer, List<Path>> filesByPartition = new HashMap() {{
+    Map<Integer, List<Path>> filesByPartition = new HashMap<Integer, List<Path>>() {{
       put(0, toList("/apath/pcap_pcap5_1495135377055375000_0_pcap-9-1495134910"));
       put(1, toList("/apath/pcap_pcap5_1495135372168719000_1_pcap-9-1495134910"));
       put(2, toList("/apath/pcap_pcap5_1495135372055519000_2_pcap-9-1495134910"));
@@ -99,14 +97,14 @@
   }
 
   @Test
-  public void test_getPaths_NoFiles() throws Exception {
-    final List<Path> inputFiles = new ArrayList<Path>();
+  public void test_getPaths_NoFiles() {
+    final List<Path> inputFiles = new ArrayList<>();
     Iterable<String> paths = FileFilterUtil.getPathsInTimeRange(0, 1000, inputFiles);
-    Assert.assertTrue(Iterables.isEmpty(paths));
+    assertTrue(Iterables.isEmpty(paths));
   }
 
   @Test
-  public void test_getPaths_leftEdge() throws Exception {
+  public void test_getPaths_leftEdge() {
     final long firstFileTSNanos = 1461589332993573000L;
     final long secondFileTSNanos = 1561589332993573000L;
     final List<Path> inputFiles = new ArrayList<Path>() {{
@@ -114,11 +112,11 @@
       add(new Path("/apps/metron/pcap/pcap_pcap_" + secondFileTSNanos + "_0_73686171-64a1-46e5-9e67-66cf603fb094"));
     }};
     Iterable<String> paths = FileFilterUtil.getPathsInTimeRange(0, secondFileTSNanos - 1L, inputFiles);
-    Assert.assertEquals(1, Iterables.size(paths));
+    assertEquals(1, Iterables.size(paths));
   }
 
   @Test
-  public void test_getPaths_rightEdge() throws Exception {
+  public void test_getPaths_rightEdge() {
     final long firstFileTSNanos = 1461589332993573000L;
     final long secondFileTSNanos = 1461589333993573000L;
     final long thirdFileTSNanos = 1461589334993573000L;
@@ -128,7 +126,7 @@
         add(new Path("/apps/metron/pcap/pcap1_pcap_" + secondFileTSNanos + "_0_73686171-64a1-46e5-9e67-66cf603fb094"));
       }};
       Iterable<String> paths = FileFilterUtil.getPathsInTimeRange(secondFileTSNanos - 1L, secondFileTSNanos + 1L, inputFiles);
-      Assert.assertEquals(2, Iterables.size(paths));
+      assertEquals(2, Iterables.size(paths));
     }
     {
       final List<Path> inputFiles = new ArrayList<Path>() {{
@@ -137,12 +135,12 @@
         add(new Path("/apps/metron/pcap/pcap1_pcap_" + thirdFileTSNanos + "_0_73686171-64a1-46e5-9e67-66cf603fb094"));
       }};
       Iterable<String> paths = FileFilterUtil.getPathsInTimeRange(thirdFileTSNanos - 1L, thirdFileTSNanos + 1L, inputFiles);
-      Assert.assertEquals(2, Iterables.size(paths));
+      assertEquals(2, Iterables.size(paths));
     }
   }
 
   @Test
-  public void test_getPaths_bothEdges() throws Exception {
+  public void test_getPaths_bothEdges() {
     final long firstFileTSNanos = 1461589332993573000L;
     final long secondFileTSNanos = 1461589333993573000L;
     final long thirdFileTSNanos = 1461589334993573000L;
@@ -152,6 +150,6 @@
       add(new Path("/apps/metron/pcap/pcap1_pcap_" + thirdFileTSNanos + "_0_73686171-64a1-46e5-9e67-66cf603fb094"));
     }};
     Iterable<String> paths = FileFilterUtil.getPathsInTimeRange(0, thirdFileTSNanos + 1L, inputFiles);
-    Assert.assertEquals(3, Iterables.size(paths));
+    assertEquals(3, Iterables.size(paths));
   }
 }
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/OutputDirFormatterTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/OutputDirFormatterTest.java
index ae1cda4..acc314a 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/OutputDirFormatterTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/OutputDirFormatterTest.java
@@ -18,21 +18,22 @@
 
 package org.apache.metron.pcap.mr;
 
-import static org.hamcrest.CoreMatchers.containsString;
-import static org.junit.Assert.assertThat;
-
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.hadoop.fs.Path;
 import org.apache.metron.common.utils.timestamp.TimestampConverters;
 import org.apache.metron.pcap.filter.fixed.FixedPcapFilter;
 import org.apache.metron.pcap.filter.query.QueryPcapFilter;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.core.StringContains.containsString;
 
 public class OutputDirFormatterTest {
 
   @Test
-  public void formats_directory_name_for_query_filter_types() throws Exception {
+  public void formats_directory_name_for_query_filter_types() {
     long beginNS = TimestampConverters.MILLISECONDS.toNanoseconds(System.currentTimeMillis());
     long endNS = TimestampConverters.MILLISECONDS.toNanoseconds(System.currentTimeMillis());
     String query = "ip_dst_addr == '207.28.210.1' and protocol == 'PROTOCOL: ICMP(1)";
@@ -45,7 +46,7 @@
   }
 
   @Test
-  public void formats_directory_name_for_fixed_filter_types() throws Exception {
+  public void formats_directory_name_for_fixed_filter_types() {
     long beginNS = TimestampConverters.MILLISECONDS.toNanoseconds(System.currentTimeMillis());
     long endNS = TimestampConverters.MILLISECONDS.toNanoseconds(System.currentTimeMillis());
     Map<String, String> fields = new HashMap<>();
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/PcapJobTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/PcapJobTest.java
index bbac79a..9879980 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/PcapJobTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/mr/PcapJobTest.java
@@ -18,21 +18,6 @@
 
 package org.apache.metron.pcap.mr;
 
-import static java.lang.Long.toUnsignedString;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Timer;
-import java.util.TimerTask;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -51,12 +36,19 @@
 import org.apache.metron.pcap.config.PcapOptions;
 import org.apache.metron.pcap.filter.PcapFilterConfigurator;
 import org.apache.metron.pcap.filter.fixed.FixedPcapFilter;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.io.IOException;
+import java.util.*;
+
+import static java.lang.Long.toUnsignedString;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.Mockito.*;
+
 public class PcapJobTest {
 
   @Mock
@@ -83,7 +75,7 @@
   private Map<String, String> fixedFields;
   private PcapJob<Map<String, String>> testJob;
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     MockitoAnnotations.initMocks(this);
     basePath = new Path("basepath");
@@ -139,7 +131,7 @@
         T fields,
         Configuration conf,
         FileSystem fs,
-        PcapFilterConfigurator<T> filterImpl) throws IOException {
+        PcapFilterConfigurator<T> filterImpl) {
       return mrJob;
     }
   }
@@ -160,7 +152,7 @@
   }
 
   @Test
-  public void partition_gives_value_in_range() throws Exception {
+  public void partition_gives_value_in_range() {
     long start = 1473897600000000000L;
     long end = TimestampConverters.MILLISECONDS.toNanoseconds(1473995927455L);
     Configuration conf = new Configuration();
@@ -169,7 +161,7 @@
     conf.set(PcapJob.WIDTH_CONF, "" + PcapJob.findWidth(start, end, 10));
     PcapJob.PcapPartitioner partitioner = new PcapJob.PcapPartitioner();
     partitioner.setConf(conf);
-    Assert.assertThat("Partition not in range",
+    assertThat("Partition not in range",
         partitioner.getPartition(new LongWritable(1473978789181189000L), new BytesWritable(), 10),
         equalTo(8));
   }
@@ -185,11 +177,11 @@
     Statusable<Path> statusable = testJob.submit(finalizer, config);
     timer.updateJobStatus();
     Pageable<Path> results = statusable.get();
-    Assert.assertThat(results.getSize(), equalTo(3));
+    assertThat(results.getSize(), equalTo(3));
     JobStatus status = statusable.getStatus();
-    Assert.assertThat(status.getState(), equalTo(State.SUCCEEDED));
-    Assert.assertThat(status.getPercentComplete(), equalTo(100.0));
-    Assert.assertThat(status.getJobId(), equalTo(jobIdVal));
+    assertThat(status.getState(), equalTo(State.SUCCEEDED));
+    assertThat(status.getPercentComplete(), equalTo(100.0));
+    assertThat(status.getJobId(), equalTo(jobIdVal));
   }
 
   @Test
@@ -201,9 +193,9 @@
     timer.updateJobStatus();
     Pageable<Path> results = statusable.get();
     JobStatus status = statusable.getStatus();
-    Assert.assertThat(status.getState(), equalTo(State.FAILED));
-    Assert.assertThat(status.getPercentComplete(), equalTo(100.0));
-    Assert.assertThat(results.getSize(), equalTo(0));
+    assertThat(status.getState(), equalTo(State.FAILED));
+    assertThat(status.getPercentComplete(), equalTo(100.0));
+    assertThat(results.getSize(), equalTo(0));
   }
 
   @Test
@@ -215,9 +207,9 @@
     timer.updateJobStatus();
     Pageable<Path> results = statusable.get();
     JobStatus status = statusable.getStatus();
-    Assert.assertThat(status.getState(), equalTo(State.KILLED));
-    Assert.assertThat(status.getPercentComplete(), equalTo(100.0));
-    Assert.assertThat(results.getSize(), equalTo(0));
+    assertThat(status.getState(), equalTo(State.KILLED));
+    assertThat(status.getPercentComplete(), equalTo(100.0));
+    assertThat(results.getSize(), equalTo(0));
   }
 
   @Test
@@ -228,8 +220,8 @@
     Statusable<Path> statusable = testJob.submit(finalizer, config);
     timer.updateJobStatus();
     JobStatus status = statusable.getStatus();
-    Assert.assertThat(status.getState(), equalTo(State.SUCCEEDED));
-    Assert.assertThat(status.getPercentComplete(), equalTo(100.0));
+    assertThat(status.getState(), equalTo(State.SUCCEEDED));
+    assertThat(status.getPercentComplete(), equalTo(100.0));
   }
 
   @Test
@@ -242,29 +234,29 @@
     Statusable<Path> statusable = testJob.submit(finalizer, config);
     timer.updateJobStatus();
     JobStatus status = statusable.getStatus();
-    Assert.assertThat(status.getState(), equalTo(State.RUNNING));
-    Assert.assertThat(status.getDescription(), equalTo("map: 50.0%, reduce: 0.0%"));
-    Assert.assertThat(status.getPercentComplete(), equalTo(25.0 * 0.75));
+    assertThat(status.getState(), equalTo(State.RUNNING));
+    assertThat(status.getDescription(), equalTo("map: 50.0%, reduce: 0.0%"));
+    assertThat(status.getPercentComplete(), equalTo(25.0 * 0.75));
     when(mrJob.mapProgress()).thenReturn(1.0f);
     when(mrJob.reduceProgress()).thenReturn(0.5f);
     timer.updateJobStatus();
     status = statusable.getStatus();
-    Assert.assertThat(status.getDescription(), equalTo("map: 100.0%, reduce: 50.0%"));
-    Assert.assertThat(status.getPercentComplete(), equalTo(75.0 * 0.75));
+    assertThat(status.getDescription(), equalTo("map: 100.0%, reduce: 50.0%"));
+    assertThat(status.getPercentComplete(), equalTo(75.0 * 0.75));
     when(mrJob.mapProgress()).thenReturn(1.0f);
     when(mrJob.reduceProgress()).thenReturn(1.0f);
     timer.updateJobStatus();
     status = statusable.getStatus();
-    Assert.assertThat(status.getDescription(), equalTo("map: 100.0%, reduce: 100.0%"));
-    Assert.assertThat(status.getPercentComplete(), equalTo(75.0));
+    assertThat(status.getDescription(), equalTo("map: 100.0%, reduce: 100.0%"));
+    assertThat(status.getPercentComplete(), equalTo(75.0));
     when(mrJob.isComplete()).thenReturn(true);
     when(mrStatus.getState()).thenReturn(org.apache.hadoop.mapreduce.JobStatus.State.SUCCEEDED);
     when(mrJob.mapProgress()).thenReturn(1.0f);
     when(mrJob.reduceProgress()).thenReturn(1.0f);
     timer.updateJobStatus();
     status = statusable.getStatus();
-    Assert.assertThat(status.getDescription(), equalTo("Job completed."));
-    Assert.assertThat(status.getPercentComplete(), equalTo(100.0));
+    assertThat(status.getDescription(), equalTo("Job completed."));
+    assertThat(status.getPercentComplete(), equalTo(100.0));
   }
 
   @Test
@@ -278,7 +270,7 @@
     when(mrStatus.getState()).thenReturn(org.apache.hadoop.mapreduce.JobStatus.State.KILLED);
     timer.updateJobStatus();
     JobStatus status = statusable.getStatus();
-    Assert.assertThat(status.getState(), equalTo(State.KILLED));
+    assertThat(status.getState(), equalTo(State.KILLED));
   }
 
   @Test
@@ -297,11 +289,11 @@
     Statusable<Path> statusable = testJob.submit(finalizer, config);
     timer.updateJobStatus();
     Pageable<Path> results = statusable.get();
-    Assert.assertThat(results.getSize(), equalTo(3));
+    assertThat(results.getSize(), equalTo(3));
     JobStatus status = statusable.getStatus();
-    Assert.assertThat(status.getState(), equalTo(State.SUCCEEDED));
-    Assert.assertThat(status.getPercentComplete(), equalTo(100.0));
-    Assert.assertThat(status.getJobId(), equalTo(jobIdVal));
+    assertThat(status.getState(), equalTo(State.SUCCEEDED));
+    assertThat(status.getPercentComplete(), equalTo(100.0));
+    assertThat(status.getJobId(), equalTo(jobIdVal));
   }
 
   @Test
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/pattern/ByteArrayMatchingUtilTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/pattern/ByteArrayMatchingUtilTest.java
index 97f222e..b1a321c 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/pattern/ByteArrayMatchingUtilTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/pattern/ByteArrayMatchingUtilTest.java
@@ -17,18 +17,21 @@
  */
 package org.apache.metron.pcap.pattern;
 
-import java.nio.charset.StandardCharsets;
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
-import org.junit.Assert;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.MethodSource;
 
 import javax.xml.bind.DatatypeConverter;
-import java.util.*;
+import java.nio.charset.StandardCharsets;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.concurrent.ExecutionException;
 
-@RunWith(Parameterized.class)
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class ByteArrayMatchingUtilTest {
   public static byte[] DEADBEEF = new byte[] {(byte) 0xde, (byte) 0xad, (byte) 0xbe, (byte) 0xef};
   public static byte[] DEADBEEF_DONUTHOLE = new byte[] {(byte) 0xde, (byte) 0xad, (byte)0x00, (byte)0x00, (byte) 0xbe, (byte) 0xef};
@@ -70,54 +73,51 @@
       return evaluator.evaluate(pattern, data);
     }
   }
-  private EvaluationStrategy strategy = null;
-  public ByteArrayMatchingUtilTest(EvaluationStrategy strategy) {
-    this.strategy = strategy;
-  }
 
-  @Parameterized.Parameters
-  public static Collection<Object[]> strategies() {
-    List<Object[]> strategies = new ArrayList<>();
+  private static List<EvaluationStrategy[]> strategies() {
+    List<EvaluationStrategy[]> strategies = new ArrayList<>();
     for(EvaluationStrategy s : EvaluationStrategy.values()) {
-      strategies.add(new Object[] { s });
+      strategies.add(new EvaluationStrategy[] { s });
     }
     return strategies;
   }
 
-  @Test
-  public void testStringMatch() throws ExecutionException {
-    Assert.assertTrue(strategy.evaluate("`metron`", "metron".getBytes(StandardCharsets.UTF_8)));
-    Assert.assertTrue(strategy.evaluate("`metron`", "metron example".getBytes(StandardCharsets.UTF_8)));
-    Assert.assertTrue(strategy.evaluate("`metron`", "edward metron example".getBytes(StandardCharsets.UTF_8)));
-    Assert.assertFalse(strategy.evaluate("`metron`", "apache".getBytes(StandardCharsets.UTF_8)));
+  @ParameterizedTest
+  @MethodSource("strategies")
+  public void testStringMatch(EvaluationStrategy strategy) {
+    assertTrue(strategy.evaluate("`metron`", "metron".getBytes(StandardCharsets.UTF_8)));
+    assertTrue(strategy.evaluate("`metron`", "metron example".getBytes(StandardCharsets.UTF_8)));
+    assertTrue(strategy.evaluate("`metron`", "edward metron example".getBytes(StandardCharsets.UTF_8)));
+    assertFalse(strategy.evaluate("`metron`", "apache".getBytes(StandardCharsets.UTF_8)));
   }
 
-  @Test
-  public void testBytesMatch() throws ExecutionException {
-    Assert.assertTrue(strategy.evaluate("2f56abd814bc56420489ca38e7faf8cec3d4", REALPACKET));
-    Assert.assertTrue(strategy.evaluate("2f56..14bc56420489ca38e7faf8cec3d4", REALPACKET));
-    Assert.assertTrue(strategy.evaluate("(2f56)(.){2}(14bc56420489ca38e7faf8cec3d4)", REALPACKET));
-    Assert.assertFalse(strategy.evaluate("(3f56)(.){2}(14bc56420489ca38e7faf8cec3d4)", REALPACKET));
-    Assert.assertFalse(strategy.evaluate("3f56abd814bc56420489ca38e7faf8cec3d4", REALPACKET));
-    Assert.assertTrue(strategy.evaluate("deadbeef", join(DEADBEEF, "metron".getBytes(StandardCharsets.UTF_8))));
-    Assert.assertTrue(strategy.evaluate("deadbeef", join(DEADBEEF, "metron".getBytes(StandardCharsets.UTF_8))));
-    Assert.assertTrue(strategy.evaluate("deadbeef `metron`", join(DEADBEEF, "metron".getBytes(StandardCharsets.UTF_8))));
-    Assert.assertTrue(strategy.evaluate("deadbeef `metron`", join(DEADBEEF, "metronjones".getBytes(StandardCharsets.UTF_8))));
-    Assert.assertTrue(strategy.evaluate("deadbeef `metron`", join(DEADBEEF, "metronjones".getBytes(StandardCharsets.UTF_8), DEADBEEF)));
-    Assert.assertTrue(strategy.evaluate("([ff]){4}", ALLFS));
-    Assert.assertFalse(strategy.evaluate("([ff]){6}", ALLFS));
-    Assert.assertTrue(strategy.evaluate("[^ff]", new byte[] { (byte)0x00 }));
-    Assert.assertTrue(strategy.evaluate("&01", new byte[] { (byte)0x07 }));
-    Assert.assertFalse(strategy.evaluate("&01", new byte[] { (byte)0x00 }));
-    Assert.assertTrue(strategy.evaluate("&01", new byte[] { (byte)0x00, (byte)0x01 }));
-    Assert.assertTrue(strategy.evaluate("(dead).{2}(beef)", DEADBEEF_DONUTHOLE));
+  @ParameterizedTest
+  @MethodSource("strategies")
+  public void testBytesMatch(EvaluationStrategy strategy) {
+    assertTrue(strategy.evaluate("2f56abd814bc56420489ca38e7faf8cec3d4", REALPACKET));
+    assertTrue(strategy.evaluate("2f56..14bc56420489ca38e7faf8cec3d4", REALPACKET));
+    assertTrue(strategy.evaluate("(2f56)(.){2}(14bc56420489ca38e7faf8cec3d4)", REALPACKET));
+    assertFalse(strategy.evaluate("(3f56)(.){2}(14bc56420489ca38e7faf8cec3d4)", REALPACKET));
+    assertFalse(strategy.evaluate("3f56abd814bc56420489ca38e7faf8cec3d4", REALPACKET));
+    assertTrue(strategy.evaluate("deadbeef", join(DEADBEEF, "metron".getBytes(StandardCharsets.UTF_8))));
+    assertTrue(strategy.evaluate("deadbeef", join(DEADBEEF, "metron".getBytes(StandardCharsets.UTF_8))));
+    assertTrue(strategy.evaluate("deadbeef `metron`", join(DEADBEEF, "metron".getBytes(StandardCharsets.UTF_8))));
+    assertTrue(strategy.evaluate("deadbeef `metron`", join(DEADBEEF, "metronjones".getBytes(StandardCharsets.UTF_8))));
+    assertTrue(strategy.evaluate("deadbeef `metron`", join(DEADBEEF, "metronjones".getBytes(StandardCharsets.UTF_8), DEADBEEF)));
+    assertTrue(strategy.evaluate("([ff]){4}", ALLFS));
+    assertFalse(strategy.evaluate("([ff]){6}", ALLFS));
+    assertTrue(strategy.evaluate("[^ff]", new byte[] { (byte)0x00 }));
+    assertTrue(strategy.evaluate("&01", new byte[] { (byte)0x07 }));
+    assertFalse(strategy.evaluate("&01", new byte[] { (byte)0x00 }));
+    assertTrue(strategy.evaluate("&01", new byte[] { (byte)0x00, (byte)0x01 }));
+    assertTrue(strategy.evaluate("(dead).{2}(beef)", DEADBEEF_DONUTHOLE));
   }
 
   public byte[] join(byte[]... array) {
     byte[] ret;
     int size = 0;
-    for(int i = 0;i < array.length;++i) {
-      size += array[i].length;
+    for (byte[] bytes : array) {
+      size += bytes.length;
     }
     ret = new byte[size];
     int j = 0;
diff --git a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/utils/PcapUtilsTest.java b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/utils/PcapUtilsTest.java
index 5704d76..b2cc270 100644
--- a/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/utils/PcapUtilsTest.java
+++ b/metron-platform/metron-pcap/src/test/java/org/apache/metron/pcap/utils/PcapUtilsTest.java
@@ -17,8 +17,9 @@
  */
 package org.apache.metron.pcap.utils;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class PcapUtilsTest {
 
@@ -26,6 +27,6 @@
   public void testConvertHexToIpv4Ip() {
     String hex = "c0a88a9e";
     String ipAddress = PcapUtils.convertHexToIpv4Ip(hex);
-    Assert.assertEquals("192.168.138.158", ipAddress);
+    assertEquals("192.168.138.158", ipAddress);
   }
 }
diff --git a/metron-platform/metron-solr/metron-solr-common/pom.xml b/metron-platform/metron-solr/metron-solr-common/pom.xml
index ec3645d..9bf261e 100644
--- a/metron-platform/metron-solr/metron-solr-common/pom.xml
+++ b/metron-platform/metron-solr/metron-solr-common/pom.xml
@@ -202,7 +202,6 @@
         <dependency>
             <groupId>org.mockito</groupId>
             <artifactId>mockito-core</artifactId>
-            <version>${global_mockito_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -232,7 +231,7 @@
         <dependency>
             <groupId>org.hamcrest</groupId>
             <artifactId>hamcrest-core</artifactId>
-            <version>1.3</version>
+            <version>${global_hamcrest_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/metron-platform/metron-solr/metron-solr-common/src/main/java/org/apache/metron/solr/dao/SolrDao.java b/metron-platform/metron-solr/metron-solr-common/src/main/java/org/apache/metron/solr/dao/SolrDao.java
index 4a58808..64ab4b2 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/main/java/org/apache/metron/solr/dao/SolrDao.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/main/java/org/apache/metron/solr/dao/SolrDao.java
@@ -17,22 +17,11 @@
  */
 package org.apache.metron.solr.dao;
 
-import java.io.IOException;
-import java.lang.invoke.MethodHandles;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
 import org.apache.metron.indexing.dao.AccessConfig;
 import org.apache.metron.indexing.dao.ColumnMetadataDao;
 import org.apache.metron.indexing.dao.IndexDao;
 import org.apache.metron.indexing.dao.RetrieveLatestDao;
-import org.apache.metron.indexing.dao.search.FieldType;
-import org.apache.metron.indexing.dao.search.GetRequest;
-import org.apache.metron.indexing.dao.search.GroupRequest;
-import org.apache.metron.indexing.dao.search.GroupResponse;
-import org.apache.metron.indexing.dao.search.InvalidSearchException;
-import org.apache.metron.indexing.dao.search.SearchRequest;
-import org.apache.metron.indexing.dao.search.SearchResponse;
+import org.apache.metron.indexing.dao.search.*;
 import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
 import org.apache.metron.indexing.dao.update.Document;
 import org.apache.metron.indexing.dao.update.OriginalNotFoundException;
@@ -44,6 +33,12 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.io.IOException;
+import java.lang.invoke.MethodHandles;
+import java.util.List;
+import java.util.Map;
+import java.util.Optional;
+
 public class SolrDao implements IndexDao {
 
   private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
@@ -175,4 +170,9 @@
   public SolrUpdateDao getSolrUpdateDao() {
     return solrUpdateDao;
   }
+
+  // Used for testing to ensure that we're actually setting up all the proper delegated DAOs
+  protected boolean daosSetup() {
+    return solrSearchDao != null && solrUpdateDao != null && solrColumnMetadataDao != null && solrRetrieveLatestDao != null;
+  }
 }
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/client/SolrClientFactoryTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/client/SolrClientFactoryTest.java
index 12fdcc7..4b2a47a 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/client/SolrClientFactoryTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/client/SolrClientFactoryTest.java
@@ -18,7 +18,7 @@
 
 package org.apache.metron.solr.client;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -26,7 +26,7 @@
 import java.util.Map;
 
 import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class SolrClientFactoryTest {
 
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrColumnMetadataTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrColumnMetadataTest.java
index df471c8..abc0a1d 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrColumnMetadataTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrColumnMetadataTest.java
@@ -18,38 +18,22 @@
 package org.apache.metron.solr.dao;
 
 import org.apache.metron.indexing.dao.search.FieldType;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.common.SolrException;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.spy;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 public class SolrColumnMetadataTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private SolrColumnMetadataDao solrColumnMetadataDao;
 
-  @SuppressWarnings("unchecked")
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     solrColumnMetadataDao = new SolrColumnMetadataDao(null);
   }
 
@@ -125,13 +109,11 @@
 
   @Test
   public void getColumnMetadataShouldThrowSolrException() throws Exception {
-    exception.expect(IOException.class);
-    exception.expectMessage("solr exception");
-
     solrColumnMetadataDao = spy(new SolrColumnMetadataDao(null));
     doThrow(new SolrServerException("solr exception")).when(solrColumnMetadataDao).getIndexFields("bro");
 
-    solrColumnMetadataDao.getColumnMetadata(Arrays.asList("bro", "snort"));
+    IOException e = assertThrows(IOException.class, () -> solrColumnMetadataDao.getColumnMetadata(Arrays.asList("bro", "snort")));
+    assertTrue(e.getMessage().contains("solr exception"));
   }
 
   @Test
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrDaoTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrDaoTest.java
index df7845f..e7a3f10 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrDaoTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrDaoTest.java
@@ -17,42 +17,26 @@
  */
 package org.apache.metron.solr.dao;
 
-import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-import static org.mockito.Mockito.verify;
-import static org.mockito.internal.verification.VerificationModeFactory.times;
-import static org.powermock.api.mockito.PowerMockito.doNothing;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.spy;
-import static org.powermock.api.mockito.PowerMockito.when;
-import static org.powermock.api.mockito.PowerMockito.whenNew;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Optional;
 import org.apache.metron.indexing.dao.AccessConfig;
 import org.apache.metron.indexing.dao.search.GetRequest;
 import org.apache.metron.indexing.dao.search.GroupRequest;
 import org.apache.metron.indexing.dao.search.SearchRequest;
 import org.apache.metron.indexing.dao.update.Document;
-import org.apache.metron.solr.client.SolrClientFactory;
 import org.apache.solr.client.solrj.SolrClient;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({SolrDao.class, SolrClientFactory.class})
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Optional;
+
+import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.mockito.Mockito.*;
+import static org.mockito.internal.verification.VerificationModeFactory.times;
+
 public class SolrDaoTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private SolrClient client;
   private SolrSearchDao solrSearchDao;
   private SolrUpdateDao solrUpdateDao;
@@ -60,15 +44,13 @@
   private SolrColumnMetadataDao solrColumnMetadataDao;
   private SolrDao solrDao;
 
-  @SuppressWarnings("unchecked")
-  @Before
+  @BeforeEach
   public void setUp() {
     client = mock(SolrClient.class);
     solrSearchDao = mock(SolrSearchDao.class);
     solrUpdateDao = mock(SolrUpdateDao.class);
     solrRetrieveLatestDao = mock(SolrRetrieveLatestDao.class);
     solrColumnMetadataDao = mock(SolrColumnMetadataDao.class);
-    mockStatic(SolrClientFactory.class);
   }
 
   @Test
@@ -95,7 +77,20 @@
   }
 
   @Test
-  public void initShouldCreateDaos() throws Exception {
+  public void testInitShouldCreateDaos() {
+    AccessConfig accessConfig = new AccessConfig();
+    accessConfig.setGlobalConfigSupplier(() ->
+            new HashMap<String, Object>() {{
+              put(SOLR_ZOOKEEPER, "zookeeper:2181");
+            }}
+    );
+    solrDao = new SolrDao();
+    solrDao.init(accessConfig);
+    assertTrue(solrDao.daosSetup());
+  }
+
+  @Test
+  public void testDaoDelegatesQueries() throws Exception {
     AccessConfig accessConfig = new AccessConfig();
     accessConfig.setGlobalConfigSupplier(() ->
         new HashMap<String, Object>() {{
@@ -103,15 +98,13 @@
         }}
     );
 
-    solrDao = spy(new SolrDao());
-    when(SolrClientFactory.create(accessConfig.getGlobalConfigSupplier().get())).thenReturn(client);
-    whenNew(SolrSearchDao.class).withArguments(client, accessConfig).thenReturn(solrSearchDao);
-    whenNew(SolrRetrieveLatestDao.class).withArguments(client, accessConfig)
-        .thenReturn(solrRetrieveLatestDao);
-    whenNew(SolrUpdateDao.class).withArguments(client, solrRetrieveLatestDao, accessConfig)
-        .thenReturn(solrUpdateDao);
-    whenNew(SolrColumnMetadataDao.class).withArguments(client)
-        .thenReturn(solrColumnMetadataDao);
+    solrDao = spy(new SolrDao(
+            client,
+            accessConfig,
+            solrSearchDao,
+            solrUpdateDao,
+            solrRetrieveLatestDao,
+            solrColumnMetadataDao));
 
     solrDao.init(accessConfig);
 
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrMetaAlertDaoTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrMetaAlertDaoTest.java
index 6817299..1d37529 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrMetaAlertDaoTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrMetaAlertDaoTest.java
@@ -18,49 +18,24 @@
 
 package org.apache.metron.solr.dao;
 
-import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-import static org.powermock.api.mockito.PowerMockito.when;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import org.apache.metron.indexing.dao.AccessConfig;
-import org.apache.metron.indexing.dao.HBaseDao;
-import org.apache.metron.indexing.dao.IndexDao;
-import org.apache.metron.indexing.dao.MultiIndexDao;
-import org.apache.metron.indexing.dao.RetrieveLatestDao;
+import org.apache.metron.indexing.dao.*;
 import org.apache.metron.indexing.dao.metaalert.MetaAlertCreateRequest;
-import org.apache.metron.indexing.dao.search.FieldType;
-import org.apache.metron.indexing.dao.search.GetRequest;
-import org.apache.metron.indexing.dao.search.GroupRequest;
-import org.apache.metron.indexing.dao.search.GroupResponse;
-import org.apache.metron.indexing.dao.search.InvalidCreateException;
-import org.apache.metron.indexing.dao.search.SearchRequest;
-import org.apache.metron.indexing.dao.search.SearchResponse;
+import org.apache.metron.indexing.dao.search.*;
 import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
 import org.apache.metron.indexing.dao.update.Document;
 import org.apache.metron.indexing.dao.update.PatchRequest;
-import org.apache.metron.solr.client.SolrClientFactory;
-import org.apache.solr.client.solrj.SolrClient;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({SolrMetaAlertDao.class, SolrClientFactory.class})
+import java.util.*;
+
+import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 public class SolrMetaAlertDaoTest {
   private static AccessConfig accessConfig = new AccessConfig();
-  private SolrClient client;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupBefore() {
     accessConfig.setGlobalConfigSupplier(() ->
         new HashMap<String, Object>() {{
@@ -69,15 +44,7 @@
     );
   }
 
-  @SuppressWarnings("unchecked")
-  @Before
-  public void setUp() {
-    client = mock(SolrClient.class);
-    mockStatic(SolrClientFactory.class);
-    when(SolrClientFactory.create(accessConfig.getGlobalConfigSupplier().get())).thenReturn(client);
-  }
-
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testInvalidInit() {
     IndexDao dao = new IndexDao() {
       @Override
@@ -146,29 +113,29 @@
       }
     };
     SolrMetaAlertDao metaAlertDao = new SolrMetaAlertDao();
-    metaAlertDao.init(dao);
+    assertThrows(IllegalArgumentException.class, () -> metaAlertDao.init(dao));
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testInitInvalidDao() {
     HBaseDao dao = new HBaseDao();
     SolrMetaAlertDao solrDao = new SolrMetaAlertDao();
-    solrDao.init(dao, Optional.empty());
+    assertThrows(IllegalArgumentException.class, () -> solrDao.init(dao, Optional.empty()));
   }
 
-  @Test(expected = InvalidCreateException.class)
-  public void testCreateMetaAlertEmptyGuids() throws InvalidCreateException, IOException {
+  @Test
+  public void testCreateMetaAlertEmptyGuids() {
     SolrDao solrDao = new SolrDao();
     solrDao.init(accessConfig);
     SolrMetaAlertDao emaDao = new SolrMetaAlertDao();
     emaDao.init(solrDao);
 
     MetaAlertCreateRequest createRequest = new MetaAlertCreateRequest();
-    emaDao.createMetaAlert(createRequest);
+    assertThrows(InvalidCreateException.class, () -> emaDao.createMetaAlert(createRequest));
   }
 
-  @Test(expected = InvalidCreateException.class)
-  public void testCreateMetaAlertEmptyGroups() throws InvalidCreateException, IOException {
+  @Test
+  public void testCreateMetaAlertEmptyGroups() {
     SolrDao solrDao = new SolrDao();
     solrDao.init(accessConfig);
     MultiIndexDao miDao = new MultiIndexDao(solrDao);
@@ -177,6 +144,6 @@
 
     MetaAlertCreateRequest createRequest = new MetaAlertCreateRequest();
     createRequest.setAlerts(Collections.singletonList(new GetRequest("don't", "care")));
-    emaDao.createMetaAlert(createRequest);
+    assertThrows(InvalidCreateException.class, () -> emaDao.createMetaAlert(createRequest));
   }
 }
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrSearchDaoTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrSearchDaoTest.java
index c02a612..d95e8cc 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrSearchDaoTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrSearchDaoTest.java
@@ -17,48 +17,14 @@
  */
 package org.apache.metron.solr.dao;
 
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.hamcrest.core.IsCollectionContaining.hasItems;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.UUID;
-
 import org.apache.metron.common.Constants;
 import org.apache.metron.indexing.dao.AccessConfig;
-import org.apache.metron.indexing.dao.search.GetRequest;
-import org.apache.metron.indexing.dao.search.Group;
-import org.apache.metron.indexing.dao.search.GroupOrder;
-import org.apache.metron.indexing.dao.search.GroupRequest;
-import org.apache.metron.indexing.dao.search.GroupResponse;
-import org.apache.metron.indexing.dao.search.GroupResult;
-import org.apache.metron.indexing.dao.search.InvalidSearchException;
-import org.apache.metron.indexing.dao.search.SearchRequest;
-import org.apache.metron.indexing.dao.search.SearchResponse;
-import org.apache.metron.indexing.dao.search.SearchResult;
-import org.apache.metron.indexing.dao.search.SortField;
+import org.apache.metron.indexing.dao.search.*;
 import org.apache.metron.indexing.dao.update.Document;
 import org.apache.metron.solr.matcher.ModifiableSolrParamsMatcher;
 import org.apache.metron.solr.matcher.SolrQueryMatcher;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.response.FacetField;
 import org.apache.solr.client.solrj.response.FieldStatsInfo;
 import org.apache.solr.client.solrj.response.PivotField;
@@ -67,36 +33,30 @@
 import org.apache.solr.common.SolrDocumentList;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.NamedList;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({CollectionAdminRequest.class})
+import java.util.*;
+
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.hasItems;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.Mockito.*;
+
 public class SolrSearchDaoTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private SolrClient client;
   private AccessConfig accessConfig;
   private SolrSearchDao solrSearchDao;
   private SolrRetrieveLatestDao solrRetrieveLatestDao;
 
-  @SuppressWarnings("unchecked")
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     client = mock(SolrClient.class);
     accessConfig = mock(AccessConfig.class);
     when(accessConfig.getIndexSupplier()).thenReturn(sensorType -> sensorType);
     solrSearchDao = new SolrSearchDao(client, accessConfig);
     solrRetrieveLatestDao = new SolrRetrieveLatestDao(client, accessConfig);
-    mockStatic(CollectionAdminRequest.class);
-    when(CollectionAdminRequest.listCollections(client)).thenReturn(Arrays.asList("bro", "snort"));
   }
 
   @Test
@@ -120,30 +80,23 @@
   }
 
   @Test
-  public void searchShouldThrowInvalidSearchExceptionOnEmptyQuery() throws Exception {
-    exception.expect(InvalidSearchException.class);
-    exception.expectMessage("Search query is invalid: null");
-
-    solrSearchDao.search(new SearchRequest());
+  public void searchShouldThrowInvalidSearchExceptionOnEmptyQuery() {
+    InvalidSearchException e = assertThrows(InvalidSearchException.class, () -> solrSearchDao.search(new SearchRequest()));
+    assertEquals("Search query is invalid: null", e.getMessage());
   }
 
   @Test
-  public void searchShouldThrowInvalidSearchExceptionOnEmptyClient() throws Exception {
-    exception.expect(InvalidSearchException.class);
-    exception.expectMessage("Uninitialized Dao!  You must call init() prior to use.");
-
+  public void searchShouldThrowInvalidSearchExceptionOnEmptyClient() {
     SearchRequest searchRequest = new SearchRequest();
     searchRequest.setQuery("query");
-    new SolrSearchDao(null, accessConfig).search(searchRequest);
+    InvalidSearchException e = assertThrows(InvalidSearchException.class,
+            () -> new SolrSearchDao(null, accessConfig).search(searchRequest));
+    assertEquals("Uninitialized Dao!  You must call init() prior to use.", e.getMessage());
   }
 
   @Test
-  public void searchShouldThrowInvalidSearchExceptionOnNullGroup() throws Exception {
-    exception.expect(InvalidSearchException.class);
-    exception.expectMessage("At least 1 group must be provided.");
-
+  public void searchShouldThrowInvalidSearchExceptionOnNullGroup() {
     GroupRequest groupRequest = mock(GroupRequest.class);
-    GroupResponse groupResponse = mock(GroupResponse.class);
 
     solrSearchDao = spy(new SolrSearchDao(client, accessConfig));
     when(groupRequest.getQuery()).thenReturn("query");
@@ -151,17 +104,14 @@
     when(groupRequest.getScoreField()).thenReturn(Optional.of("scoreField"));
     when(groupRequest.getIndices()).thenReturn(Arrays.asList("bro", "snort"));
 
-    assertEquals(groupResponse, solrSearchDao.group(groupRequest));
+    InvalidSearchException e = assertThrows(InvalidSearchException.class, () -> solrSearchDao.group(groupRequest));
+    assertEquals("At least 1 group must be provided.", e.getMessage());
     verifyNoMoreInteractions(client);
   }
 
   @Test
-  public void searchShouldThrowInvalidSearchExceptionOnEmptyGroup() throws Exception {
-    exception.expect(InvalidSearchException.class);
-    exception.expectMessage("At least 1 group must be provided.");
-
+  public void searchShouldThrowInvalidSearchExceptionOnEmptyGroup() {
     GroupRequest groupRequest = mock(GroupRequest.class);
-    GroupResponse groupResponse = mock(GroupResponse.class);
 
     solrSearchDao = spy(new SolrSearchDao(client, accessConfig));
     when(groupRequest.getQuery()).thenReturn("query");
@@ -169,20 +119,19 @@
     when(groupRequest.getScoreField()).thenReturn(Optional.of("scoreField"));
     when(groupRequest.getIndices()).thenReturn(Arrays.asList("bro", "snort"));
 
-    assertEquals(groupResponse, solrSearchDao.group(groupRequest));
+    InvalidSearchException e = assertThrows(InvalidSearchException.class, () -> solrSearchDao.group(groupRequest));
+    assertEquals("At least 1 group must be provided.", e.getMessage());
     verifyNoMoreInteractions(client);
   }
 
   @Test
-  public void searchShouldThrowSearchResultSizeException() throws Exception {
-    exception.expect(InvalidSearchException.class);
-    exception.expectMessage("Search result size must be less than 100");
-
+  public void searchShouldThrowSearchResultSizeException() {
     when(accessConfig.getMaxSearchResults()).thenReturn(100);
     SearchRequest searchRequest = new SearchRequest();
     searchRequest.setQuery("query");
     searchRequest.setSize(200);
-    solrSearchDao.search(searchRequest);
+    InvalidSearchException e = assertThrows(InvalidSearchException.class, () -> solrSearchDao.search(searchRequest));
+    assertEquals("Search result size must be less than 100", e.getMessage());
   }
 
   @Test
@@ -212,8 +161,14 @@
     expectedSolrQuery.set("facet", true);
     expectedSolrQuery.set("facet.pivot", "{!stats=piv1}field1,field2");
 
+    // Feed back an appropriate response regarding the collections
+    NamedList<Object> namedList = new NamedList<>();
+    namedList.add("collections", Arrays.asList("bro","snort"));
+    when(client.request(any(), any())).thenReturn(namedList);
+
     assertEquals(groupResponse, solrSearchDao.group(groupRequest));
     verify(client).query(argThat(new SolrQueryMatcher(expectedSolrQuery)));
+    verify(client).request(any(), any());
     verify(solrSearchDao).buildGroupResponse(groupRequest, queryResponse);
 
     verifyNoMoreInteractions(client);
@@ -255,11 +210,11 @@
     SolrDocumentList snortList = new SolrDocumentList();
     snortList.add(snortSolrDoc1);
     snortList.add(snortSolrDoc2);
-    when(client.getById((Collection<String>) argThat(hasItems("bro-1", "bro-2")),
+    when(client.getById((List<String>) org.mockito.hamcrest.MockitoHamcrest.argThat(hasItems("bro-1", "bro-2")),
         argThat(
             new ModifiableSolrParamsMatcher(new ModifiableSolrParams().set("collection", "bro")))))
         .thenReturn(broList);
-    when(client.getById((Collection<String>) argThat(hasItems("snort-1", "snort-2")),
+    when(client.getById((List<String>) org.mockito.hamcrest.MockitoHamcrest.argThat(hasItems("snort-1", "snort-2")),
         argThat(new ModifiableSolrParamsMatcher(
             new ModifiableSolrParams().set("collection", "snort"))))).thenReturn(snortList);
     assertEquals(Arrays.asList(broDoc1, broDoc2, snortDoc1, snortDoc2), solrRetrieveLatestDao
@@ -289,8 +244,13 @@
         .addFacetField("facetField1", "facetField2");
     exceptedSolrQuery.set("collection", "bro,snort");
 
+    // Feed back an appropriate response regarding the collections
+    NamedList<Object> namedList = new NamedList<>();
+    namedList.add("collections", Arrays.asList("bro","snort"));
+    when(client.request(any(), any())).thenReturn(namedList);
+
     SolrQuery solrQuery = solrSearchDao.buildSearchRequest(searchRequest, "field1,field2");
-    assertThat(solrQuery, new SolrQueryMatcher(exceptedSolrQuery));
+    assertThat(solrQuery, new SolrQueryMatcher(exceptedSolrQuery).asHamcrestMatcher());
   }
 
   @Test
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrUpdateDaoTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrUpdateDaoTest.java
index 21fc79b..5664c5a 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrUpdateDaoTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrUpdateDaoTest.java
@@ -17,24 +17,6 @@
  */
 package org.apache.metron.solr.dao;
 
-import static org.apache.metron.indexing.dao.IndexDao.COMMENTS_FIELD;
-import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.doReturn;
-import static org.powermock.api.mockito.PowerMockito.spy;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.zookeeper.ConfigurationsCache;
@@ -49,22 +31,24 @@
 import org.apache.metron.solr.matcher.SolrInputDocumentListMatcher;
 import org.apache.metron.solr.matcher.SolrInputDocumentMatcher;
 import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.common.SolrInputDocument;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.util.*;
+
+import static org.apache.metron.indexing.dao.IndexDao.COMMENTS_FIELD;
+import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
 
 /**
  * This class contains tests specific to the SolrUpdateDao implementation.  It also returns the SolrUpdateDao
  * implementation to be used in UpdateDaoTest.  UpdateDaoTest contains a common set of tests that all Dao
  * implementations must pass.
  */
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({CollectionAdminRequest.class})
 public class SolrUpdateDaoTest extends UpdateDaoTest {
 
   private SolrClient client;
@@ -73,7 +57,7 @@
 
   private static AccessConfig accessConfig = new AccessConfig();
 
-  @BeforeClass
+  @BeforeAll
   public static void setupBefore() {
     accessConfig.setGlobalConfigSupplier(() ->
         new HashMap<String, Object>() {{
@@ -93,9 +77,8 @@
     accessConfig.setIndexSupplier(IndexingCacheUtil.getIndexLookupFunction(cache, "solr"));
   }
 
-  @SuppressWarnings("unchecked")
-  @Before
-  public void setUp() throws Exception {
+  @BeforeEach
+  public void setUp() {
     client = mock(SolrClient.class);
     solrRetrieveLatestDao = new SolrRetrieveLatestDao(client, accessConfig);
     solrUpdateDao = new SolrUpdateDao(client, solrRetrieveLatestDao, accessConfig);
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrUtilitiesTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrUtilitiesTest.java
index 89441c0..480dd6b 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrUtilitiesTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/dao/SolrUtilitiesTest.java
@@ -18,13 +18,13 @@
 
 package org.apache.metron.solr.dao;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import java.util.HashMap;
 import org.apache.metron.common.Constants;
 import org.apache.metron.indexing.dao.update.Document;
 import org.apache.solr.common.SolrDocument;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 public class SolrUtilitiesTest {
 
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrMetaAlertIntegrationTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrMetaAlertIntegrationTest.java
index 084660f..6168824 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrMetaAlertIntegrationTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrMetaAlertIntegrationTest.java
@@ -18,22 +18,6 @@
 
 package org.apache.metron.solr.integration;
 
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.ALERT_FIELD;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.METAALERT_FIELD;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.METAALERT_TYPE;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.THREAT_FIELD_DEFAULT;
-import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.THREAT_SORT_DEFAULT;
-import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-import static org.apache.metron.solr.dao.SolrMetaAlertDao.METAALERTS_COLLECTION;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-
 import com.google.common.collect.ImmutableMap;
 import org.apache.metron.common.Constants;
 import org.apache.metron.indexing.dao.AccessConfig;
@@ -46,21 +30,22 @@
 import org.apache.metron.indexing.dao.search.SearchResponse;
 import org.apache.metron.indexing.dao.search.SortField;
 import org.apache.metron.solr.client.SolrClientFactory;
-import org.apache.metron.solr.dao.SolrDao;
-import org.apache.metron.solr.dao.SolrMetaAlertDao;
-import org.apache.metron.solr.dao.SolrMetaAlertRetrieveLatestDao;
-import org.apache.metron.solr.dao.SolrMetaAlertSearchDao;
-import org.apache.metron.solr.dao.SolrMetaAlertUpdateDao;
+import org.apache.metron.solr.dao.*;
 import org.apache.metron.solr.integration.components.SolrComponent;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.zookeeper.KeeperException;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.*;
+
+import java.io.IOException;
+import java.util.*;
+import java.util.function.Function;
+
+import static org.apache.metron.indexing.dao.metaalert.MetaAlertConstants.*;
+import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+import static org.apache.metron.solr.dao.SolrMetaAlertDao.METAALERTS_COLLECTION;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class SolrMetaAlertIntegrationTest extends MetaAlertIntegrationTest {
 
@@ -69,7 +54,7 @@
   private static SolrDao solrDao;
   private static SolrComponent solr;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupBefore() throws Exception {
     // Solr doesn't need retries, it'll show up after a commit.
 
@@ -125,7 +110,7 @@
     metaDao = new SolrMetaAlertDao(solrDao, searchDao, updateDao, retrieveLatestDao);
   }
 
-  @Before
+  @BeforeEach
   public void setup()
       throws IOException, InterruptedException, SolrServerException, KeeperException {
     solr.addCollection(METAALERTS_COLLECTION,
@@ -133,7 +118,7 @@
     solr.addCollection(SENSOR_NAME, "./src/test/resources/config/test/conf");
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() {
     SolrClientFactory.close();
     if (solr != null) {
@@ -141,7 +126,7 @@
     }
   }
 
-  @After
+  @AfterEach
   public void reset() {
     solr.reset();
   }
@@ -201,13 +186,13 @@
       }
     });
     // Should have one result because Solr will return the parent.
-    Assert.assertEquals(1, searchResponse.getTotal());
+    assertEquals(1, searchResponse.getTotal());
     // Ensure we returned the child alerts
     List<Map<String, Object>> actualAlerts = (List<Map<String, Object>>) searchResponse.getResults()
         .get(0).getSource()
         .get(MetaAlertConstants.ALERT_FIELD);
-    Assert.assertEquals(2, actualAlerts.size());
-    Assert.assertEquals("meta_active",
+    assertEquals(2, actualAlerts.size());
+    assertEquals("meta_active",
         searchResponse.getResults().get(0).getSource().get("guid"));
 
     // Query against all indices. Only the single active meta alert should be returned.
@@ -228,12 +213,12 @@
     });
 
     // Query should match a parent alert
-    Assert.assertEquals(1, searchResponse.getTotal());
+    assertEquals(1, searchResponse.getTotal());
     // Ensure we returned the child alerts
     actualAlerts = (List<Map<String, Object>>) searchResponse.getResults().get(0).getSource()
         .get(MetaAlertConstants.ALERT_FIELD);
-    Assert.assertEquals(2, actualAlerts.size());
-    Assert.assertEquals("meta_active",
+    assertEquals(2, actualAlerts.size());
+    assertEquals("meta_active",
         searchResponse.getResults().get(0).getSource().get("guid"));
 
     // Query against all indices. The child alert has no actual attached meta alerts, and should
@@ -254,13 +239,13 @@
     });
 
     // Query should match a plain alert
-    Assert.assertEquals(1, searchResponse.getTotal());
+    assertEquals(1, searchResponse.getTotal());
     // Ensure we have no child alerts
     actualAlerts = (List<Map<String, Object>>) searchResponse.getResults()
         .get(0).getSource()
         .get(MetaAlertConstants.ALERT_FIELD);
-    Assert.assertNull(actualAlerts);
-    Assert.assertEquals("message_2",
+    assertNull(actualAlerts);
+    assertEquals("message_2",
         searchResponse.getResults().get(0).getSource().get("guid"));
   }
 
@@ -303,13 +288,13 @@
     });
 
     // Should have one result because Solr will return the parent.
-    Assert.assertEquals(1, searchResponse.getTotal());
+    assertEquals(1, searchResponse.getTotal());
     // Ensure we returned didn't return the child alerts
     List<Map<String, Object>> actualAlerts = (List<Map<String, Object>>) searchResponse.getResults()
         .get(0).getSource()
         .get(MetaAlertConstants.ALERT_FIELD);
-    Assert.assertNull(actualAlerts);
-    Assert.assertEquals("meta_active",
+    assertNull(actualAlerts);
+    assertEquals("meta_active",
         searchResponse.getResults().get(0).getSource().get("guid"));
   }
 
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrRetrieveLatestIntegrationTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrRetrieveLatestIntegrationTest.java
index d147202..c6168d2 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrRetrieveLatestIntegrationTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrRetrieveLatestIntegrationTest.java
@@ -19,9 +19,9 @@
 package org.apache.metron.solr.integration;
 
 import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 import com.google.common.collect.Iterables;
 import java.io.IOException;
@@ -38,11 +38,11 @@
 import org.apache.metron.solr.dao.SolrDao;
 import org.apache.metron.solr.integration.components.SolrComponent;
 import org.apache.solr.client.solrj.SolrServerException;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 public class SolrRetrieveLatestIntegrationTest {
 
@@ -54,13 +54,13 @@
   protected final long expectedTimestamp = 123456789L;
   private static IndexDao dao;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupBeforeClass() throws Exception {
     solrComponent = new SolrComponent.Builder().build();
     solrComponent.start();
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     solrComponent.addCollection(TEST_COLLECTION, "./src/test/resources/config/test/conf");
     solrComponent.addCollection(BRO_SENSOR, "./src/main/config/schema/bro");
@@ -78,12 +78,12 @@
     addData(TEST_COLLECTION, TEST_SENSOR, expectedTimestamp);
   }
 
-  @After
+  @AfterEach
   public void reset() {
     solrComponent.reset();
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() {
     SolrClientFactory.close();
     solrComponent.stop();
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrSearchIntegrationTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrSearchIntegrationTest.java
index b232ed5..537227c 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrSearchIntegrationTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrSearchIntegrationTest.java
@@ -17,13 +17,6 @@
  */
 package org.apache.metron.solr.integration;
 
-import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-
-import java.io.IOException;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.utils.JSONUtils;
 import org.apache.metron.indexing.dao.AccessConfig;
@@ -32,7 +25,6 @@
 import org.apache.metron.indexing.dao.search.FieldType;
 import org.apache.metron.indexing.dao.search.InvalidSearchException;
 import org.apache.metron.indexing.dao.search.SearchRequest;
-import org.apache.metron.indexing.dao.search.SearchResponse;
 import org.apache.metron.integration.InMemoryComponent;
 import org.apache.metron.solr.client.SolrClientFactory;
 import org.apache.metron.solr.dao.SolrDao;
@@ -41,16 +33,24 @@
 import org.json.simple.JSONArray;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterAll;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class SolrSearchIntegrationTest extends SearchIntegrationTest {
   private static SolrComponent solrComponent;
   private static IndexDao dao;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupClass() throws Exception {
     indexComponent = startIndex();
     dao = createDao();
@@ -62,7 +62,7 @@
     loadTestData();
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() {
     SolrClientFactory.close();
     if (solrComponent != null) {
@@ -112,74 +112,74 @@
     {
       Map<String, FieldType> fieldTypes = dao.getColumnMetadata(Collections.singletonList("bro"));
       // Don't test all fields, just test a sample of different fields
-      Assert.assertEquals(263, fieldTypes.size());
+      assertEquals(263, fieldTypes.size());
 
       // Fields present in both with same type
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("guid"));
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("source.type"));
-      Assert.assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
-      Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
-      Assert.assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("guid"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("source.type"));
+      assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
+      assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
+      assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
 
       // Bro only field
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("username"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("username"));
 
       // A dynamic field present in both with same type
-      Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("score"));
+      assertEquals(FieldType.FLOAT, fieldTypes.get("score"));
 
       // Dyanamic field present in both with nonstandard types.
-      Assert.assertEquals(FieldType.OTHER, fieldTypes.get("location_point"));
+      assertEquals(FieldType.OTHER, fieldTypes.get("location_point"));
 
       // Field with nonstandard type
-      Assert.assertEquals(FieldType.OTHER, fieldTypes.get("timestamp"));
+      assertEquals(FieldType.OTHER, fieldTypes.get("timestamp"));
 
       // Bro only field in the dynamic catch all
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("method"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("method"));
 
       // A field is in both bro and snort and they have different types.
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("ttl"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("ttl"));
 
       // Field only present in Snort
-      Assert.assertEquals(null, fieldTypes.get("dgmlen"));
+      assertNull(fieldTypes.get("dgmlen"));
 
       // Field that doesn't exist
-      Assert.assertEquals(null, fieldTypes.get("fake.field"));
+      assertNull(fieldTypes.get("fake.field"));
     }
     // getColumnMetadata with only snort
     {
       Map<String, FieldType> fieldTypes = dao.getColumnMetadata(Collections.singletonList("snort"));
-      Assert.assertEquals(33, fieldTypes.size());
+      assertEquals(33, fieldTypes.size());
 
       // Fields present in both with same type
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("guid"));
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("source.type"));
-      Assert.assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
-      Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
-      Assert.assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("guid"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("source.type"));
+      assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
+      assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
+      assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
 
       // Snort only field
-      Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("dgmlen"));
+      assertEquals(FieldType.INTEGER, fieldTypes.get("dgmlen"));
 
       // A dynamic field present in both with same type
-      Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("score"));
+      assertEquals(FieldType.FLOAT, fieldTypes.get("score"));
 
       // Dyanamic field present in both with nonstandard types.
-      Assert.assertEquals(FieldType.OTHER, fieldTypes.get("location_point"));
+      assertEquals(FieldType.OTHER, fieldTypes.get("location_point"));
 
       // Field with nonstandard type
-      Assert.assertEquals(FieldType.OTHER, fieldTypes.get("timestamp"));
+      assertEquals(FieldType.OTHER, fieldTypes.get("timestamp"));
 
       // Snort only field in the dynamic catch all
-      Assert.assertEquals(FieldType.TEXT, fieldTypes.get("sig_generator"));
+      assertEquals(FieldType.TEXT, fieldTypes.get("sig_generator"));
 
       // A field is in both bro and snort and they have different types.
-      Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ttl"));
+      assertEquals(FieldType.INTEGER, fieldTypes.get("ttl"));
 
       // Field only present in Bro
-      Assert.assertEquals(null, fieldTypes.get("username"));
+      assertNull(fieldTypes.get("username"));
 
       // Field that doesn't exist
-      Assert.assertEquals(null, fieldTypes.get("fake.field"));
+      assertNull(fieldTypes.get("fake.field"));
     }
   }
 
@@ -190,45 +190,45 @@
     // Don't test everything, just test a variety of fields, including fields across collections.
 
     // Fields present in both with same type
-    Assert.assertEquals(FieldType.TEXT, fieldTypes.get("guid"));
-    Assert.assertEquals(FieldType.TEXT, fieldTypes.get("source.type"));
-    Assert.assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
-    Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
-    Assert.assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
+    assertEquals(FieldType.TEXT, fieldTypes.get("guid"));
+    assertEquals(FieldType.TEXT, fieldTypes.get("source.type"));
+    assertEquals(FieldType.IP, fieldTypes.get("ip_src_addr"));
+    assertEquals(FieldType.INTEGER, fieldTypes.get("ip_src_port"));
+    assertEquals(FieldType.BOOLEAN, fieldTypes.get("is_alert"));
 
     // Bro only field
-    Assert.assertEquals(FieldType.TEXT, fieldTypes.get("username"));
+    assertEquals(FieldType.TEXT, fieldTypes.get("username"));
 
     // Snort only field
-    Assert.assertEquals(FieldType.INTEGER, fieldTypes.get("dgmlen"));
+    assertEquals(FieldType.INTEGER, fieldTypes.get("dgmlen"));
 
     // A dynamic field present in both with same type
-    Assert.assertEquals(FieldType.FLOAT, fieldTypes.get("score"));
+    assertEquals(FieldType.FLOAT, fieldTypes.get("score"));
 
     // Dyanamic field present in both with nonstandard types.
-    Assert.assertEquals(FieldType.OTHER, fieldTypes.get("location_point"));
+    assertEquals(FieldType.OTHER, fieldTypes.get("location_point"));
 
     // Field present in both with nonstandard type
-    Assert.assertEquals(FieldType.OTHER, fieldTypes.get("timestamp"));
+    assertEquals(FieldType.OTHER, fieldTypes.get("timestamp"));
 
     // Bro only field in the dynamic catch all
-    Assert.assertEquals(FieldType.TEXT, fieldTypes.get("method"));
+    assertEquals(FieldType.TEXT, fieldTypes.get("method"));
 
     // Snort only field in the dynamic catch all
-    Assert.assertEquals(FieldType.TEXT, fieldTypes.get("sig_generator"));
+    assertEquals(FieldType.TEXT, fieldTypes.get("sig_generator"));
 
     // A field is in both bro and snort and they have different types.
-    Assert.assertEquals(FieldType.OTHER, fieldTypes.get("ttl"));
+    assertEquals(FieldType.OTHER, fieldTypes.get("ttl"));
 
     // Field that doesn't exist
-    Assert.assertEquals(null, fieldTypes.get("fake.field"));
+    assertNull(fieldTypes.get("fake.field"));
   }
 
   @Test
+  @Override
   public void different_type_filter_query() throws Exception {
-    thrown.expect(InvalidSearchException.class);
     SearchRequest request = JSONUtils.INSTANCE.load(differentTypeFilterQuery, SearchRequest.class);
-    SearchResponse response = dao.search(request);
+    assertThrows(InvalidSearchException.class, () -> dao.search(request));
   }
 
   @Override
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrUpdateIntegrationTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrUpdateIntegrationTest.java
index 852ca10..8d80de9 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrUpdateIntegrationTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/SolrUpdateIntegrationTest.java
@@ -30,39 +30,29 @@
 import org.apache.metron.solr.dao.SolrDao;
 import org.apache.metron.solr.integration.components.SolrComponent;
 import org.apache.solr.common.SolrException;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.*;
 
-import java.io.IOException;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 
 import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class SolrUpdateIntegrationTest extends UpdateIntegrationTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   private static SolrComponent solrComponent;
 
   private static final String TABLE_NAME = "modifications";
   private static final String CF = "p";
 
-  @BeforeClass
+  @BeforeAll
   public static void setupBeforeClass() throws Exception {
     solrComponent = new SolrComponent.Builder().build();
     solrComponent.start();
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     solrComponent.addCollection(SENSOR_NAME, "./src/test/resources/config/test/conf");
     solrComponent.addCollection("error", "./src/main/config/schema/error");
@@ -86,12 +76,12 @@
     setDao(dao);
   }
 
-  @After
+  @AfterEach
   public void reset() {
     solrComponent.reset();
   }
 
-  @AfterClass
+  @AfterAll
   public static void teardown() {
     SolrClientFactory.close();
     solrComponent.stop();
@@ -155,7 +145,6 @@
 
     // Ensure that the huge string is returned when not a string field
     Document latest = getDao().getLatest("error_guid", "error");
-    @SuppressWarnings("unchecked")
     String actual = (String) latest.getDocument().get("raw_message");
     assertEquals(actual, hugeString);
     String actualTwo = (String) latest.getDocument().get("raw_message_1");
@@ -163,11 +152,9 @@
 
     // Validate that error occurs for string fields.
     documentMap.put("error_hash", hugeString);
-    errorDoc = new Document(documentMap, "error", "error", 0L);
+    Document errorDoc2= new Document(documentMap, "error", "error", 0L);
 
-    exception.expect(SolrException.class);
-    exception.expectMessage("Document contains at least one immense term in field=\"error_hash\"");
-
-    getDao().update(errorDoc, Optional.of("error"));
+    SolrException e = assertThrows(SolrException.class, () -> getDao().update(errorDoc2, Optional.of("error")));
+    assertTrue(e.getMessage().contains("Document contains at least one immense term in field=\"error_hash\""));
   }
 }
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/schema/SchemaValidationIntegrationTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/schema/SchemaValidationIntegrationTest.java
index ddc7801..82aac1e 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/schema/SchemaValidationIntegrationTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/integration/schema/SchemaValidationIntegrationTest.java
@@ -27,14 +27,16 @@
 import org.apache.metron.solr.writer.SolrWriter;
 import org.apache.metron.stellar.common.utils.ConversionUtils;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
 import java.io.File;
 import java.io.IOException;
 import java.nio.charset.Charset;
 import java.util.*;
 
 import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class SchemaValidationIntegrationTest {
   public static Iterable<String> getData(String sensor) throws IOException {
@@ -50,7 +52,7 @@
     return globalConfig;
   }
 
-  public static SolrComponent createSolrComponent(String sensor) throws Exception {
+  public static SolrComponent createSolrComponent(String sensor) {
     return new SolrComponent.Builder().build();
   }
 
@@ -102,7 +104,7 @@
           messages.add(new BulkMessage<>(String.format("message%d", ++i), new JSONObject(m)));
         }
       }
-      Assert.assertTrue(messages.size() > 0);
+      assertTrue(messages.size() > 0);
 
       SolrWriter solrWriter = new SolrWriter();
 
@@ -160,7 +162,7 @@
       solrWriter.init(null, writerConfig);
 
       BulkWriterResponse response = solrWriter.write(sensorType, writerConfig, messages);
-      Assert.assertTrue(response.getErrors().isEmpty());
+      assertTrue(response.getErrors().isEmpty());
       for (Map<String, Object> m : component.getAllIndexedDocs(sensorType)) {
         Map<String, Object> expected = index.get(getGuid(m));
         for (Map.Entry<String, Object> field : expected.entrySet()) {
@@ -176,10 +178,10 @@
               String s2 = "" + n2.doubleValue();
               isSame = s1.startsWith(s2) || s2.startsWith(s1);
             }
-            Assert.assertTrue("Unable to validate " + field.getKey() + ": " + n1 + " != " + n2, isSame);
+            assertTrue(isSame, "Unable to validate " + field.getKey() + ": " + n1 + " != " + n2);
           }
           else {
-            Assert.assertEquals("Unable to find " + field.getKey(), "" + field.getValue(), "" + m.get(field.getKey()));
+            assertEquals("" + field.getValue(), "" + m.get(field.getKey()), "Unable to find " + field.getKey());
           }
         }
       }
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/ModifiableSolrParamsMatcher.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/ModifiableSolrParamsMatcher.java
index cd68be9..8db0005 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/ModifiableSolrParamsMatcher.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/ModifiableSolrParamsMatcher.java
@@ -18,10 +18,9 @@
 package org.apache.metron.solr.matcher;
 
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.hamcrest.Description;
 import org.mockito.ArgumentMatcher;
 
-public class ModifiableSolrParamsMatcher extends ArgumentMatcher<ModifiableSolrParams> {
+public class ModifiableSolrParamsMatcher implements ArgumentMatcher<ModifiableSolrParams> {
 
   private ModifiableSolrParams expectedModifiableSolrParams;
 
@@ -30,8 +29,7 @@
   }
 
   @Override
-  public boolean matches(Object o) {
-    ModifiableSolrParams modifiableSolrParams = (ModifiableSolrParams) o;
+  public boolean matches(ModifiableSolrParams modifiableSolrParams) {
     for(String name: expectedModifiableSolrParams.getParameterNames()) {
       String expectedValue = expectedModifiableSolrParams.get(name);
       String value = modifiableSolrParams.get(name);
@@ -49,7 +47,7 @@
   }
 
   @Override
-  public void describeTo(Description description) {
-    description.appendValue(expectedModifiableSolrParams);
+  public String toString() {
+    return expectedModifiableSolrParams.toString();
   }
 }
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrInputDocumentListMatcher.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrInputDocumentListMatcher.java
index 6c4ab20..803e666 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrInputDocumentListMatcher.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrInputDocumentListMatcher.java
@@ -23,7 +23,7 @@
 
 import java.util.List;
 
-public class SolrInputDocumentListMatcher extends ArgumentMatcher<List<SolrInputDocument>> {
+public class SolrInputDocumentListMatcher implements ArgumentMatcher<List<SolrInputDocument>> {
 
   private List<SolrInputDocument> expectedSolrInputDocuments;
 
@@ -32,8 +32,7 @@
   }
 
   @Override
-  public boolean matches(Object o) {
-    List<SolrInputDocument> solrInputDocuments = (List<SolrInputDocument>) o;
+  public boolean matches(List<SolrInputDocument> solrInputDocuments) {
     for(int i = 0; i < solrInputDocuments.size(); i++) {
       SolrInputDocument solrInputDocument = solrInputDocuments.get(i);
       for (int j = 0; j < expectedSolrInputDocuments.size(); j++) {
@@ -54,7 +53,7 @@
   }
 
   @Override
-  public void describeTo(Description description) {
-    description.appendValue(expectedSolrInputDocuments);
+  public String toString() {
+    return expectedSolrInputDocuments.toString();
   }
 }
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrInputDocumentMatcher.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrInputDocumentMatcher.java
index b64c9f2..63713a1 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrInputDocumentMatcher.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrInputDocumentMatcher.java
@@ -18,10 +18,9 @@
 package org.apache.metron.solr.matcher;
 
 import org.apache.solr.common.SolrInputDocument;
-import org.hamcrest.Description;
 import org.mockito.ArgumentMatcher;
 
-public class SolrInputDocumentMatcher extends ArgumentMatcher<SolrInputDocument> {
+public class SolrInputDocumentMatcher implements ArgumentMatcher<SolrInputDocument> {
 
   private SolrInputDocument expectedSolrInputDocument;
 
@@ -30,8 +29,7 @@
   }
 
   @Override
-  public boolean matches(Object o) {
-    SolrInputDocument solrInputDocument = (SolrInputDocument) o;
+  public boolean matches(SolrInputDocument solrInputDocument) {
     for(String field: solrInputDocument.getFieldNames()) {
       Object expectedValue = expectedSolrInputDocument.getField(field).getValue();
       Object value = solrInputDocument.getField(field).getValue();
@@ -44,7 +42,7 @@
   }
 
   @Override
-  public void describeTo(Description description) {
-    description.appendValue(expectedSolrInputDocument);
+  public String toString() {
+    return expectedSolrInputDocument.toString();
   }
 }
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrQueryMatcher.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrQueryMatcher.java
index 45bf85d..0a23bec 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrQueryMatcher.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/matcher/SolrQueryMatcher.java
@@ -1,56 +1,72 @@
 /**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance with the License. You may obtain a
+ * copy of the License at
  *
- *     http://www.apache.org/licenses/LICENSE-2.0
+ * <p>http://www.apache.org/licenses/LICENSE-2.0
  *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
+ * <p>Unless required by applicable law or agreed to in writing, software distributed under the
+ * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
+ * express or implied. See the License for the specific language governing permissions and
  * limitations under the License.
  */
 package org.apache.metron.solr.matcher;
 
 import org.apache.solr.client.solrj.SolrQuery;
-import org.apache.solr.common.params.ModifiableSolrParams;
+import org.hamcrest.BaseMatcher;
 import org.hamcrest.Description;
+import org.hamcrest.Matcher;
 import org.mockito.ArgumentMatcher;
 
 import java.util.Arrays;
 import java.util.Objects;
 
-public class SolrQueryMatcher extends ArgumentMatcher<ModifiableSolrParams> {
-
+// This somewhat awkwardly coexists with Mockito's Matchers and Hamcrest's. So use both.
+public class SolrQueryMatcher implements ArgumentMatcher<SolrQuery> {
   private SolrQuery expectedSolrQuery;
+  private SolrQueryHamcrestMatcher hamcrestMatcher;
 
   public SolrQueryMatcher(SolrQuery solrQuery) {
     this.expectedSolrQuery = solrQuery;
+    this.hamcrestMatcher = new SolrQueryHamcrestMatcher();
   }
 
   @Override
-  public boolean matches(Object o) {
-    SolrQuery solrQuery = (SolrQuery) o;
-    return Objects.equals(solrQuery.getStart(), expectedSolrQuery.getStart()) &&
-            Objects.equals(solrQuery.getRows(), expectedSolrQuery.getRows()) &&
-            Objects.equals(solrQuery.getQuery(), expectedSolrQuery.getQuery()) &&
-            Objects.equals(solrQuery.getSorts(), expectedSolrQuery.getSorts()) &&
-            Objects.equals(solrQuery.getFields(), expectedSolrQuery.getFields()) &&
-            Arrays.equals(solrQuery.getFacetFields(), expectedSolrQuery.getFacetFields()) &&
-            Objects.equals(solrQuery.get("collection"), expectedSolrQuery.get("collection")) &&
-            Objects.equals(solrQuery.get("stats"), expectedSolrQuery.get("stats")) &&
-            Objects.equals(solrQuery.get("stats.field"), expectedSolrQuery.get("stats.field")) &&
-            Objects.equals(solrQuery.get("facet"), expectedSolrQuery.get("facet")) &&
-            Objects.equals(solrQuery.get("facet.pivot"), expectedSolrQuery.get("facet.pivot"));
+  public boolean matches(SolrQuery solrQuery) {
+      return hamcrestMatcher.matches(solrQuery);
   }
 
   @Override
-  public void describeTo(Description description) {
-    description.appendValue(expectedSolrQuery);
+  public String toString() {
+    return expectedSolrQuery.toString();
+  }
+
+  public Matcher<SolrQuery> asHamcrestMatcher() {
+      return hamcrestMatcher;
+  }
+
+  private class SolrQueryHamcrestMatcher extends BaseMatcher<SolrQuery>{
+    @Override
+    public boolean matches(Object o) {
+      SolrQuery solrQuery = (SolrQuery) o;
+      return Objects.equals(solrQuery.getStart(), expectedSolrQuery.getStart())
+              && Objects.equals(solrQuery.getRows(), expectedSolrQuery.getRows())
+              && Objects.equals(solrQuery.getQuery(), expectedSolrQuery.getQuery())
+              && Objects.equals(solrQuery.getSorts(), expectedSolrQuery.getSorts())
+              && Objects.equals(solrQuery.getFields(), expectedSolrQuery.getFields())
+              && Arrays.equals(solrQuery.getFacetFields(), expectedSolrQuery.getFacetFields())
+              && Objects.equals(solrQuery.get("collection"), expectedSolrQuery.get("collection"))
+              && Objects.equals(solrQuery.get("stats"), expectedSolrQuery.get("stats"))
+              && Objects.equals(solrQuery.get("stats.field"), expectedSolrQuery.get("stats.field"))
+              && Objects.equals(solrQuery.get("facet"), expectedSolrQuery.get("facet"))
+              && Objects.equals(solrQuery.get("facet.pivot"), expectedSolrQuery.get("facet.pivot"));
+    }
+
+    @Override
+    public void describeTo(Description description) {
+      description.appendValue(expectedSolrQuery);
+    }
   }
 }
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/writer/MetronSolrClientTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/writer/MetronSolrClientTest.java
index 37807e6..6199968 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/writer/MetronSolrClientTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/writer/MetronSolrClientTest.java
@@ -17,25 +17,23 @@
  */
 package org.apache.metron.solr.writer;
 
-import org.apache.metron.solr.writer.MetronSolrClient;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.common.params.CollectionParams;
 import org.apache.solr.common.util.NamedList;
-import org.hamcrest.Description;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mockito;
 
 import java.util.ArrayList;
 
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.isNull;
+import static org.mockito.ArgumentMatchers.argThat;
+import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
 public class MetronSolrClientTest {
 
-  static class CollectionRequestMatcher extends ArgumentMatcher<QueryRequest> {
+  static class CollectionRequestMatcher implements ArgumentMatcher<QueryRequest> {
 
     private String name;
 
@@ -44,14 +42,13 @@
     }
 
     @Override
-    public boolean matches(Object o) {
-      QueryRequest queryRequest = (QueryRequest) o;
+    public boolean matches(QueryRequest queryRequest) {
       return name.equals(queryRequest.getParams().get("action"));
     }
 
     @Override
-    public void describeTo(Description description) {
-      description.appendText(name);
+    public String toString() {
+        return name;
     }
   }
 
@@ -66,18 +63,18 @@
       add("collections", new ArrayList<String>() {{
         add(collection);
       }});
-    }}).when(metronSolrClient).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.LIST.name())), (String) isNull());
+    }}).when(metronSolrClient).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.LIST.name())), isNull());
     metronSolrClient.createCollection(collection, 1, 1);
-    verify(metronSolrClient, times(1)).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.LIST.name())), (String) isNull());
-    verify(metronSolrClient, times(0)).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.CREATE.name())), (String) isNull());
+    verify(metronSolrClient, times(1)).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.LIST.name())), isNull());
+    verify(metronSolrClient, times(0)).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.CREATE.name())), isNull());
 
     metronSolrClient = Mockito.spy(new MetronSolrClient(zookeeperUrl));
     Mockito.doReturn(new NamedList<Object>() {{
       add("collections", new ArrayList<String>());
-    }}).when(metronSolrClient).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.LIST.name())), (String) isNull());
-    Mockito.doReturn(new NamedList<>()).when(metronSolrClient).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.CREATE.name())), (String) isNull());
+    }}).when(metronSolrClient).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.LIST.name())), isNull());
+    Mockito.doReturn(new NamedList<>()).when(metronSolrClient).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.CREATE.name())), isNull());
     metronSolrClient.createCollection(collection, 1, 1);
-    verify(metronSolrClient, times(1)).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.LIST.name())), (String) isNull());
-    verify(metronSolrClient, times(1)).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.CREATE.name())), (String) isNull());
+    verify(metronSolrClient, times(1)).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.LIST.name())), isNull());
+    verify(metronSolrClient, times(1)).request(argThat(new CollectionRequestMatcher(CollectionParams.CollectionAction.CREATE.name())), isNull());
   }
 }
diff --git a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/writer/SolrWriterTest.java b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/writer/SolrWriterTest.java
index 515f2f8..4288e0c 100644
--- a/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/writer/SolrWriterTest.java
+++ b/metron-platform/metron-solr/metron-solr-common/src/test/java/org/apache/metron/solr/writer/SolrWriterTest.java
@@ -17,18 +17,8 @@
  */
 package org.apache.metron.solr.writer;
 
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.argThat;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.configuration.writer.IndexingWriterConfiguration;
@@ -36,17 +26,24 @@
 import org.apache.metron.enrichment.integration.utils.SampleUtil;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.common.SolrInputDocument;
-import org.hamcrest.Description;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mockito;
 
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
+
 
 public class SolrWriterTest {
 
-  static class CollectionRequestMatcher extends ArgumentMatcher<QueryRequest> {
+  static class CollectionRequestMatcher implements ArgumentMatcher<QueryRequest> {
 
     private String name;
 
@@ -55,19 +52,17 @@
     }
 
     @Override
-    public boolean matches(Object o) {
-      QueryRequest queryRequest = (QueryRequest) o;
+    public boolean matches(QueryRequest queryRequest) {
       return name.equals(queryRequest.getParams().get("action"));
     }
 
     @Override
-    public void describeTo(Description description) {
-      description.appendText(name);
+    public String toString() {
+        return name;
     }
   }
 
-  static class SolrInputDocumentMatcher extends ArgumentMatcher<Collection<SolrInputDocument>> {
-
+  static class SolrInputDocumentMatcher implements ArgumentMatcher<List<SolrInputDocument>> {
 
     List<Map<String, Object>> expectedDocs;
 
@@ -76,8 +71,7 @@
     }
 
     @Override
-    public boolean matches(Object o) {
-      List<SolrInputDocument> docs = (List<SolrInputDocument>)o;
+    public boolean matches(List<SolrInputDocument> docs) {
       int size = docs.size();
       if(size != expectedDocs.size()) {
         return false;
@@ -95,8 +89,8 @@
     }
 
     @Override
-    public void describeTo(Description description) {
-      description.appendText(expectedDocs.toString());
+    public String toString() {
+        return expectedDocs.toString();
     }
 
   }
@@ -143,141 +137,143 @@
   }
 
   @Test
-  public void configTest_zookeeperQuorumSpecified() throws Exception {
+  public void configTest_zookeeperQuorumSpecified() {
     String expected = "test";
-    Assert.assertEquals(expected,
+    assertEquals(expected,
             SolrWriter.SolrProperties.ZOOKEEPER_QUORUM.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.ZOOKEEPER_QUORUM.name, expected)
                     , String.class));
   }
 
-  @Test(expected=IllegalArgumentException.class)
-  public void configTest_zookeeperQuorumUnpecified() throws Exception {
-    SolrWriter.SolrProperties.ZOOKEEPER_QUORUM.coerceOrDefaultOrExcept(
-                    new HashMap<>()
-                    , String.class);
+  @Test
+  public void configTest_zookeeperQuorumUnpecified() {
+    assertThrows(
+        IllegalArgumentException.class,
+        () ->
+            SolrWriter.SolrProperties.ZOOKEEPER_QUORUM.coerceOrDefaultOrExcept(
+                new HashMap<>(), String.class));
   }
 
 
   @Test
-  public void configTest_commitPerBatchSpecified() throws Exception {
+  public void configTest_commitPerBatchSpecified() {
     Object expected = false;
-    Assert.assertEquals(expected,
+    assertEquals(expected,
             SolrWriter.SolrProperties.COMMIT_PER_BATCH.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.COMMIT_PER_BATCH.name, false)
                     , Boolean.class));
   }
 
   @Test
-  public void configTest_commitPerBatchUnpecified() throws Exception {
-    Assert.assertEquals(SolrWriter.SolrProperties.COMMIT_PER_BATCH.defaultValue.get(),
+  public void configTest_commitPerBatchUnpecified() {
+    assertEquals(SolrWriter.SolrProperties.COMMIT_PER_BATCH.defaultValue.get(),
     SolrWriter.SolrProperties.COMMIT_PER_BATCH.coerceOrDefaultOrExcept(
                     new HashMap<>()
                     , Boolean.class));
-    Assert.assertEquals(SolrWriter.SolrProperties.COMMIT_PER_BATCH.defaultValue.get(),
+    assertEquals(SolrWriter.SolrProperties.COMMIT_PER_BATCH.defaultValue.get(),
     SolrWriter.SolrProperties.COMMIT_PER_BATCH.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.COMMIT_PER_BATCH.name, new DummyClass())
                     , Boolean.class));
   }
 
   @Test
-  public void configTest_commitSoftSpecified() throws Exception {
+  public void configTest_commitSoftSpecified() {
     Object expected = true;
-    Assert.assertEquals(expected,
+    assertEquals(expected,
             SolrWriter.SolrProperties.COMMIT_SOFT.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.COMMIT_SOFT.name, expected)
                     , Boolean.class));
   }
 
   @Test
-  public void configTest_commitSoftUnpecified() throws Exception {
-    Assert.assertEquals(SolrWriter.SolrProperties.COMMIT_SOFT.defaultValue.get(),
+  public void configTest_commitSoftUnpecified() {
+    assertEquals(SolrWriter.SolrProperties.COMMIT_SOFT.defaultValue.get(),
     SolrWriter.SolrProperties.COMMIT_SOFT.coerceOrDefaultOrExcept(
                     new HashMap<>()
                     , Boolean.class));
-    Assert.assertEquals(SolrWriter.SolrProperties.COMMIT_SOFT.defaultValue.get(),
+    assertEquals(SolrWriter.SolrProperties.COMMIT_SOFT.defaultValue.get(),
     SolrWriter.SolrProperties.COMMIT_SOFT.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.COMMIT_SOFT.name, new DummyClass())
                     , Boolean.class));
   }
 
   @Test
-  public void configTest_commitWaitFlushSpecified() throws Exception {
+  public void configTest_commitWaitFlushSpecified() {
     Object expected = false;
-    Assert.assertEquals(expected,
+    assertEquals(expected,
             SolrWriter.SolrProperties.COMMIT_WAIT_FLUSH.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.COMMIT_WAIT_FLUSH.name, expected)
                     , Boolean.class));
   }
 
   @Test
-  public void configTest_commitWaitFlushUnspecified() throws Exception {
-    Assert.assertEquals(SolrWriter.SolrProperties.COMMIT_WAIT_FLUSH.defaultValue.get(),
+  public void configTest_commitWaitFlushUnspecified() {
+    assertEquals(SolrWriter.SolrProperties.COMMIT_WAIT_FLUSH.defaultValue.get(),
     SolrWriter.SolrProperties.COMMIT_WAIT_FLUSH.coerceOrDefaultOrExcept(
                     new HashMap<>()
                     , Boolean.class));
-    Assert.assertEquals(SolrWriter.SolrProperties.COMMIT_WAIT_FLUSH.defaultValue.get(),
+    assertEquals(SolrWriter.SolrProperties.COMMIT_WAIT_FLUSH.defaultValue.get(),
     SolrWriter.SolrProperties.COMMIT_WAIT_FLUSH.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.COMMIT_WAIT_FLUSH.name, new DummyClass())
                     , Boolean.class));
   }
 
   @Test
-  public void configTest_commitWaitSearcherSpecified() throws Exception {
+  public void configTest_commitWaitSearcherSpecified() {
     Object expected = false;
-    Assert.assertEquals(expected,
+    assertEquals(expected,
             SolrWriter.SolrProperties.COMMIT_WAIT_SEARCHER.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.COMMIT_WAIT_SEARCHER.name, expected)
                     , Boolean.class));
   }
 
   @Test
-  public void configTest_commitWaitSearcherUnspecified() throws Exception {
-    Assert.assertEquals(SolrWriter.SolrProperties.COMMIT_WAIT_SEARCHER.defaultValue.get(),
+  public void configTest_commitWaitSearcherUnspecified() {
+    assertEquals(SolrWriter.SolrProperties.COMMIT_WAIT_SEARCHER.defaultValue.get(),
     SolrWriter.SolrProperties.COMMIT_WAIT_SEARCHER.coerceOrDefaultOrExcept(
                     new HashMap<>()
                     , Boolean.class));
-    Assert.assertEquals(SolrWriter.SolrProperties.COMMIT_WAIT_SEARCHER.defaultValue.get(),
+    assertEquals(SolrWriter.SolrProperties.COMMIT_WAIT_SEARCHER.defaultValue.get(),
     SolrWriter.SolrProperties.COMMIT_WAIT_SEARCHER.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.COMMIT_WAIT_SEARCHER.name, new DummyClass())
                     , Boolean.class));
   }
 
   @Test
-  public void configTest_defaultCollectionSpecified() throws Exception {
+  public void configTest_defaultCollectionSpecified() {
     Object expected = "mycollection";
-    Assert.assertEquals(expected,
+    assertEquals(expected,
             SolrWriter.SolrProperties.DEFAULT_COLLECTION.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.DEFAULT_COLLECTION.name, expected)
                     , String.class));
   }
 
   @Test
-  public void configTest_defaultCollectionUnspecified() throws Exception {
-    Assert.assertEquals(SolrWriter.SolrProperties.DEFAULT_COLLECTION.defaultValue.get(),
+  public void configTest_defaultCollectionUnspecified() {
+    assertEquals(SolrWriter.SolrProperties.DEFAULT_COLLECTION.defaultValue.get(),
     SolrWriter.SolrProperties.DEFAULT_COLLECTION.coerceOrDefaultOrExcept(
                     new HashMap<>()
                     , String.class));
   }
 
   @Test
-  public void configTest_httpConfigSpecified() throws Exception {
+  public void configTest_httpConfigSpecified() {
     Object expected = new HashMap<String, Object>() {{
       put("name", "metron");
     }};
-    Assert.assertEquals(expected,
+    assertEquals(expected,
             SolrWriter.SolrProperties.HTTP_CONFIG.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.HTTP_CONFIG.name, expected)
                     , Map.class));
   }
 
   @Test
-  public void configTest_httpConfigUnspecified() throws Exception {
-    Assert.assertEquals(SolrWriter.SolrProperties.HTTP_CONFIG.defaultValue.get(),
+  public void configTest_httpConfigUnspecified() {
+    assertEquals(SolrWriter.SolrProperties.HTTP_CONFIG.defaultValue.get(),
     SolrWriter.SolrProperties.HTTP_CONFIG.coerceOrDefaultOrExcept(
                     new HashMap<>()
                     , Map.class));
-    Assert.assertEquals(SolrWriter.SolrProperties.HTTP_CONFIG.defaultValue.get(),
+    assertEquals(SolrWriter.SolrProperties.HTTP_CONFIG.defaultValue.get(),
     SolrWriter.SolrProperties.HTTP_CONFIG.coerceOrDefaultOrExcept(
                     ImmutableMap.of( SolrWriter.SolrProperties.HTTP_CONFIG.name, new DummyClass())
                     , Map.class));
diff --git a/metron-platform/metron-storm-kafka-override/src/test/java/org/apache/storm/kafka/spout/internal/TimerTest.java b/metron-platform/metron-storm-kafka-override/src/test/java/org/apache/storm/kafka/spout/internal/TimerTest.java
index 0d49ae1..d501957 100644
--- a/metron-platform/metron-storm-kafka-override/src/test/java/org/apache/storm/kafka/spout/internal/TimerTest.java
+++ b/metron-platform/metron-storm-kafka-override/src/test/java/org/apache/storm/kafka/spout/internal/TimerTest.java
@@ -17,20 +17,22 @@
  */
 package org.apache.storm.kafka.spout.internal;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.concurrent.TimeUnit;
 
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class TimerTest {
 
   @Test
   public void testReset() throws InterruptedException {
     Timer t = new Timer(0, 2, TimeUnit.SECONDS);
     Thread.sleep(1000);
-    Assert.assertFalse(t.isExpiredResetOnTrue());
+    assertFalse(t.isExpiredResetOnTrue());
     Thread.sleep(1000);
-    Assert.assertTrue(t.isExpiredResetOnTrue());
+    assertTrue(t.isExpiredResetOnTrue());
   }
 
 }
diff --git a/metron-platform/metron-storm-kafka/src/test/java/org/apache/metron/storm/kafka/flux/SpoutConfigurationTest.java b/metron-platform/metron-storm-kafka/src/test/java/org/apache/metron/storm/kafka/flux/SpoutConfigurationTest.java
index c6dbd8f..7155fc4 100644
--- a/metron-platform/metron-storm-kafka/src/test/java/org/apache/metron/storm/kafka/flux/SpoutConfigurationTest.java
+++ b/metron-platform/metron-storm-kafka/src/test/java/org/apache/metron/storm/kafka/flux/SpoutConfigurationTest.java
@@ -18,16 +18,15 @@
 package org.apache.metron.storm.kafka.flux;
 
 import org.apache.kafka.clients.consumer.ConsumerConfig;
-import org.apache.metron.common.utils.KafkaUtils;
 import org.apache.storm.kafka.spout.KafkaSpoutConfig;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import java.net.URI;
-import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 public class SpoutConfigurationTest {
 
   @Test
@@ -38,13 +37,13 @@
       put("group.id", "foobar");
     }};
     Map<String, Object> spoutConfig = SpoutConfiguration.separate(config);
-    Assert.assertTrue(spoutConfig.containsKey(SpoutConfiguration.FIRST_POLL_OFFSET_STRATEGY.key));
-    Assert.assertEquals(spoutConfig.get(SpoutConfiguration.FIRST_POLL_OFFSET_STRATEGY.key), "UNCOMMITTED_EARLIEST");
-    Assert.assertTrue(spoutConfig.containsKey(SpoutConfiguration.OFFSET_COMMIT_PERIOD_MS.key));
-    Assert.assertEquals(spoutConfig.get(SpoutConfiguration.OFFSET_COMMIT_PERIOD_MS.key), "1000");
-    Assert.assertEquals(2, spoutConfig.size());
-    Assert.assertEquals(1, config.size());
-    Assert.assertEquals(config.get("group.id"), "foobar");
+    assertTrue(spoutConfig.containsKey(SpoutConfiguration.FIRST_POLL_OFFSET_STRATEGY.key));
+    assertEquals(spoutConfig.get(SpoutConfiguration.FIRST_POLL_OFFSET_STRATEGY.key), "UNCOMMITTED_EARLIEST");
+    assertTrue(spoutConfig.containsKey(SpoutConfiguration.OFFSET_COMMIT_PERIOD_MS.key));
+    assertEquals(spoutConfig.get(SpoutConfiguration.OFFSET_COMMIT_PERIOD_MS.key), "1000");
+    assertEquals(2, spoutConfig.size());
+    assertEquals(1, config.size());
+    assertEquals(config.get("group.id"), "foobar");
   }
 
   @Test
@@ -58,7 +57,7 @@
     KafkaSpoutConfig.Builder<Object, Object> builder = new SimpleStormKafkaBuilder(config, "topic", null);
     SpoutConfiguration.configure(builder, spoutConfig);
     KafkaSpoutConfig c = builder.build();
-    Assert.assertEquals(1000, c.getOffsetsCommitPeriodMs() );
+    assertEquals(1000, c.getOffsetsCommitPeriodMs() );
   }
 
 }
diff --git a/metron-platform/metron-test-utilities/pom.xml b/metron-platform/metron-test-utilities/pom.xml
index 572af09..cd809d2 100644
--- a/metron-platform/metron-test-utilities/pom.xml
+++ b/metron-platform/metron-test-utilities/pom.xml
@@ -153,14 +153,19 @@
       <version>${global_curator_version}</version>
     </dependency>
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>${global_junit_version}</version>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-api</artifactId>
+      <version>${global_junit_jupiter_version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
+      <version>${global_junit_jupiter_version}</version>
+      <scope>test</scope>
     </dependency>
     <dependency>
       <groupId>org.mockito</groupId>
       <artifactId>mockito-core</artifactId>
-      <version>${global_mockito_version}</version>
     </dependency>
     <dependency>
       <groupId>nl.jqno.equalsverifier</groupId>
diff --git a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/BaseBoltTest.java b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/BaseBoltTest.java
index ac64b6a..091c62e 100644
--- a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/BaseBoltTest.java
+++ b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/BaseBoltTest.java
@@ -17,19 +17,17 @@
  */
 package org.apache.metron.test.bolt;
 
+import com.google.common.base.Joiner;
+import com.google.common.collect.ImmutableSet;
+import org.apache.curator.framework.CuratorFramework;
 import org.apache.metron.zookeeper.ZKCache;
 import org.apache.storm.task.OutputCollector;
 import org.apache.storm.task.TopologyContext;
 import org.apache.storm.topology.OutputFieldsDeclarer;
 import org.apache.storm.tuple.Fields;
 import org.apache.storm.tuple.Tuple;
-import com.google.common.base.Joiner;
-import com.google.common.collect.ImmutableSet;
-import org.apache.curator.framework.CuratorFramework;
-import org.apache.curator.framework.recipes.cache.TreeCache;
-import org.hamcrest.Description;
 import org.json.simple.JSONObject;
-import org.junit.Before;
+import org.junit.jupiter.api.BeforeEach;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
@@ -57,12 +55,12 @@
   @Mock
   protected ZKCache cache;
 
-  @Before
+  @BeforeEach
   public void initMocks() {
     MockitoAnnotations.initMocks(this);
   }
 
-  protected static class FieldsMatcher extends ArgumentMatcher<Fields> {
+  protected static class FieldsMatcher implements ArgumentMatcher<Fields> {
 
     private List<String> expectedFields;
 
@@ -71,16 +69,14 @@
     }
 
     @Override
-    public boolean matches(Object o) {
-      Fields fields = (Fields) o;
-      return expectedFields.equals(fields.toList());
+    public boolean matches(Fields o) {
+      return expectedFields.equals(o.toList());
     }
 
     @Override
-    public void describeTo(Description description) {
-      description.appendText(String.format("[%s]", Joiner.on(",").join(expectedFields)));
+    public String toString() {
+        return String.format("[%s]", Joiner.on(",").join(expectedFields));
     }
-
   }
 
   public void removeTimingFields(JSONObject message) {
diff --git a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/BaseEnrichmentBoltTest.java b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/BaseEnrichmentBoltTest.java
index f270d97..3448b49 100644
--- a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/BaseEnrichmentBoltTest.java
+++ b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/BaseEnrichmentBoltTest.java
@@ -22,7 +22,7 @@
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Before;
+import org.junit.jupiter.api.BeforeEach;
 
 import java.util.HashSet;
 import java.util.Set;
@@ -81,7 +81,7 @@
   protected JSONObject hostMessage;
   protected JSONObject hbaseEnrichmentMessage;
 
-  @Before
+  @BeforeEach
   public void parseBaseMessages() throws ParseException {
     JSONParser parser = new JSONParser();
     sampleMessage = (JSONObject) parser.parse(sampleMessageString);
diff --git a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/PrintingBolt.java b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/PrintingBolt.java
index be9fb29..43a43d7 100644
--- a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/PrintingBolt.java
+++ b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/bolt/PrintingBolt.java
@@ -18,14 +18,14 @@
 
 package org.apache.metron.test.bolt;
 
-import java.util.Map;
-
 import org.apache.storm.task.OutputCollector;
 import org.apache.storm.task.TopologyContext;
 import org.apache.storm.topology.OutputFieldsDeclarer;
 import org.apache.storm.topology.base.BaseRichBolt;
 import org.apache.storm.tuple.Tuple;
 
+import java.util.Map;
+
 @SuppressWarnings("serial")
 public class PrintingBolt extends BaseRichBolt {
 
diff --git a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/error/MetronErrorJSONMatcher.java b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/error/MetronErrorJSONMatcher.java
index b3120f8..25ffc0e 100644
--- a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/error/MetronErrorJSONMatcher.java
+++ b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/error/MetronErrorJSONMatcher.java
@@ -21,7 +21,7 @@
 import org.json.simple.JSONObject;
 import org.mockito.ArgumentMatcher;
 
-public class MetronErrorJSONMatcher extends ArgumentMatcher<Values> {
+public class MetronErrorJSONMatcher implements ArgumentMatcher<Values> {
 
   private JSONObject expected;
 
@@ -30,8 +30,7 @@
   }
 
   @Override
-  public boolean matches(Object o) {
-    Values values = (Values) o;
+  public boolean matches(Values values) {
     JSONObject actual = (JSONObject) values.get(0);
     actual.remove("timestamp");
     expected.remove("timestamp");
diff --git a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/spouts/GenericInternalTestSpout.java b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/spouts/GenericInternalTestSpout.java
index 0fdf9f0..5572298 100644
--- a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/spouts/GenericInternalTestSpout.java
+++ b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/spouts/GenericInternalTestSpout.java
@@ -18,16 +18,11 @@
 
 package org.apache.metron.test.spouts;
 
-import java.nio.charset.StandardCharsets;
-import java.util.List;
-import java.util.Map;
-
 import com.google.common.base.Splitter;
 import com.google.common.collect.Iterables;
 import org.apache.metron.test.converters.BinaryConverters;
 import org.apache.metron.test.converters.IConverter;
 import org.apache.metron.test.filereaders.FileReader;
-
 import org.apache.storm.spout.SpoutOutputCollector;
 import org.apache.storm.task.TopologyContext;
 import org.apache.storm.topology.OutputFieldsDeclarer;
@@ -36,6 +31,10 @@
 import org.apache.storm.tuple.Values;
 import org.apache.storm.utils.Utils;
 
+import java.nio.charset.StandardCharsets;
+import java.util.List;
+import java.util.Map;
+
 
 public class GenericInternalTestSpout extends BaseRichSpout {
 
diff --git a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/KafkaLoader.java b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/KafkaLoader.java
index 6812337..5ff867b 100644
--- a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/KafkaLoader.java
+++ b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/KafkaLoader.java
@@ -17,14 +17,13 @@
  */
 package org.apache.metron.test.utils;
 
-import java.io.FileInputStream;
-import java.io.InputStreamReader;
-import java.nio.charset.StandardCharsets;
 import org.apache.kafka.clients.producer.KafkaProducer;
 import org.apache.kafka.clients.producer.ProducerRecord;
 
 import java.io.BufferedReader;
-import java.io.FileReader;
+import java.io.FileInputStream;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
 import java.util.HashMap;
 import java.util.Map;
 
diff --git a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/UnitTestHelper.java b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/UnitTestHelper.java
index 37d122c..b5cb83f 100644
--- a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/UnitTestHelper.java
+++ b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/UnitTestHelper.java
@@ -17,7 +17,10 @@
  */
 package org.apache.metron.test.utils;
 
-import static java.lang.String.format;
+import org.apache.log4j.ConsoleAppender;
+import org.apache.log4j.Level;
+import org.apache.log4j.Logger;
+import org.apache.log4j.PatternLayout;
 
 import java.io.File;
 import java.io.IOException;
@@ -29,11 +32,9 @@
 import java.nio.file.attribute.BasicFileAttributes;
 import java.util.Set;
 import java.util.Stack;
-import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.Level;
-import org.apache.log4j.Logger;
-import org.apache.log4j.PatternLayout;
-import org.junit.Assert;
+
+import static java.lang.String.format;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 public class UnitTestHelper {
   public static String findDir(String name) {
@@ -73,7 +74,7 @@
         System.out.println("Expected " + type + " that I did not index: " + expectedId);
       }
     }
-    Assert.assertFalse(mismatch);
+    assertFalse(mismatch);
   }
 
   public static void verboseLogging() {
@@ -106,7 +107,6 @@
 
   /**
    * Root logger.
-   * @param level level for root logger
    */
   public static Level getLog4jLevel() {
     Logger rootLogger = Logger.getRootLogger();
diff --git a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/ValidationUtils.java b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/ValidationUtils.java
index 98fd258..c191a24 100644
--- a/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/ValidationUtils.java
+++ b/metron-platform/metron-test-utilities/src/main/java/org/apache/metron/test/utils/ValidationUtils.java
@@ -18,10 +18,13 @@
 
 package org.apache.metron.test.utils;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
+
 import java.io.IOException;
 import java.util.Map;
 import org.codehaus.jackson.map.ObjectMapper;
-import org.junit.Assert;
 
 public class ValidationUtils {
 
@@ -44,12 +47,10 @@
       Object v1 = m1.get(k);
       Object v2 = m2.get(k);
 
-      if (v2 == null) {
-        Assert.fail("Unable to find key: " + k + " in output");
-      }
+      assertNotNull(v2, "Unable to find key: " + k + " in output");
       if (k.equals("timestamp") || k.equals("guid")) {
         //TODO: Take the ?!?@ timestamps out of the reference file.
-        Assert.assertEquals(v1.toString().length(), v2.toString().length());
+        assertEquals(v1.toString().length(), v2.toString().length());
       } else if (!v2.equals(v1)) {
         boolean goodDeepDown = false;
         // if this fails, but is the original_string it may be in json format
@@ -64,10 +65,10 @@
           }
         }
         if (!goodDeepDown) {
-          Assert.assertEquals("value mismatch for " + k, v1, v2);
+          assertEquals(v1, v2, "value mismatch for " + k);
         }
       }
     }
-    Assert.assertEquals(m1.size(), m2.size());
+    assertEquals(m1.size(), m2.size());
   }
 }
diff --git a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BatchSizePolicyTest.java b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BatchSizePolicyTest.java
index aab8a73..cd6ed75a 100644
--- a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BatchSizePolicyTest.java
+++ b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BatchSizePolicyTest.java
@@ -21,14 +21,14 @@
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
 import org.apache.metron.common.writer.BulkMessage;
 import org.json.simple.JSONObject;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -38,7 +38,7 @@
   private WriterConfiguration configurations = mock(WriterConfiguration.class);
   private List<BulkMessage<JSONObject>> messages = new ArrayList<>();
 
-  @Before
+  @BeforeEach
   public void setup() {
     when(configurations.getBatchSize(sensorType)).thenReturn(2);
   }
diff --git a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BatchTimeoutPolicyTest.java b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BatchTimeoutPolicyTest.java
index d29c373..70edeef 100644
--- a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BatchTimeoutPolicyTest.java
+++ b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BatchTimeoutPolicyTest.java
@@ -23,14 +23,14 @@
 import org.apache.metron.common.writer.BulkWriterResponse;
 import org.apache.metron.common.writer.BulkMessage;
 import org.json.simple.JSONObject;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
diff --git a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BulkWriterComponentTest.java b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BulkWriterComponentTest.java
index 4880ccd..8564b80 100644
--- a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BulkWriterComponentTest.java
+++ b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/BulkWriterComponentTest.java
@@ -17,44 +17,25 @@
  */
 package org.apache.metron.writer;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.reset;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-import static org.powermock.api.mockito.PowerMockito.mockStatic;
+import org.apache.metron.common.configuration.writer.WriterConfiguration;
+import org.apache.metron.common.writer.BulkMessage;
+import org.apache.metron.common.writer.BulkMessageWriter;
+import org.apache.metron.common.writer.BulkWriterResponse;
+import org.apache.metron.common.writer.MessageId;
+import org.json.simple.JSONObject;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.metron.common.configuration.writer.WriterConfiguration;
-import org.apache.metron.common.writer.BulkMessageWriter;
-import org.apache.metron.common.writer.BulkMessage;
-import org.apache.metron.common.writer.BulkWriterResponse;
-import org.apache.metron.common.writer.MessageId;
-import org.json.simple.JSONObject;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import static org.mockito.Mockito.*;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({BulkWriterComponent.class})
 public class BulkWriterComponentTest {
-
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   @Mock
   private FlushPolicy<JSONObject> flushPolicy;
 
@@ -72,7 +53,7 @@
   private JSONObject message1 = new JSONObject();
   private JSONObject message2 = new JSONObject();
 
-  @Before
+  @BeforeEach
   public void setup() {
     MockitoAnnotations.initMocks(this);
     message1.put("value", "message1");
diff --git a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/NoopWriterTest.java b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/NoopWriterTest.java
index 3a5a762..f8e860a 100644
--- a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/NoopWriterTest.java
+++ b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/NoopWriterTest.java
@@ -17,24 +17,26 @@
  */
 package org.apache.metron.writer;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class NoopWriterTest {
   @Test
   public void testFixedLatencyConfig() {
     NoopWriter writer = new NoopWriter().withLatency("10");
-    Assert.assertTrue(writer.sleepFunction instanceof NoopWriter.FixedLatency);
+    assertTrue(writer.sleepFunction instanceof NoopWriter.FixedLatency);
     NoopWriter.FixedLatency sleepFunction = (NoopWriter.FixedLatency)writer.sleepFunction;
-    Assert.assertEquals(10, sleepFunction.getLatency());
+    assertEquals(10, sleepFunction.getLatency());
   }
 
   private void ensureRandomLatencyConfig(String latencyConfig, int min, int max) {
     NoopWriter writer = new NoopWriter().withLatency(latencyConfig);
-    Assert.assertTrue(writer.sleepFunction instanceof NoopWriter.RandomLatency);
+    assertTrue(writer.sleepFunction instanceof NoopWriter.RandomLatency);
     NoopWriter.RandomLatency sleepFunction = (NoopWriter.RandomLatency)writer.sleepFunction;
-    Assert.assertEquals(min, sleepFunction.getMin());
-    Assert.assertEquals(max, sleepFunction.getMax());
+    assertEquals(min, sleepFunction.getMin());
+    assertEquals(max, sleepFunction.getMax());
   }
 
   @Test
diff --git a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/hbase/SimpleHBaseEnrichmentWriterTest.java b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/hbase/SimpleHBaseEnrichmentWriterTest.java
index 980c5f2..a6bbb5f 100644
--- a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/hbase/SimpleHBaseEnrichmentWriterTest.java
+++ b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/hbase/SimpleHBaseEnrichmentWriterTest.java
@@ -20,12 +20,6 @@
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.apache.hadoop.hbase.client.Result;
 import org.apache.hadoop.hbase.util.Bytes;
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
@@ -37,9 +31,13 @@
 import org.apache.metron.hbase.mock.MockHBaseTableProvider;
 import org.apache.metron.hbase.mock.MockHTable;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.io.IOException;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class SimpleHBaseEnrichmentWriterTest {
   private static final String SENSOR_TYPE= "dummy";
@@ -53,7 +51,7 @@
     put(SimpleHbaseEnrichmentWriter.Configurations.HBASE_PROVIDER.getKey(), MockHBaseTableProvider.class.getName());
   }};
 
-  @Before
+  @BeforeEach
   public void setupMockTable() {
     MockHBaseTableProvider.addToCache(TABLE_NAME, TABLE_CF);
   }
@@ -76,11 +74,11 @@
             }}
     );
     List<LookupKV<EnrichmentKey, EnrichmentValue>> values = getValues();
-    Assert.assertEquals(1, values.size());
-    Assert.assertEquals("localhost", values.get(0).getKey().indicator);
-    Assert.assertEquals("cstella", values.get(0).getValue().getMetadata().get("user"));
-    Assert.assertEquals("bar", values.get(0).getValue().getMetadata().get("foo"));
-    Assert.assertEquals(2, values.get(0).getValue().getMetadata().size());
+    assertEquals(1, values.size());
+    assertEquals("localhost", values.get(0).getKey().indicator);
+    assertEquals("cstella", values.get(0).getValue().getMetadata().get("user"));
+    assertEquals("bar", values.get(0).getValue().getMetadata().get("foo"));
+    assertEquals(2, values.get(0).getValue().getMetadata().size());
   }
 
   @Test
@@ -103,11 +101,11 @@
             }}
     );
     List<LookupKV<EnrichmentKey, EnrichmentValue>> values = getValues();
-    Assert.assertEquals(1, values.size());
-    Assert.assertEquals("localhost", values.get(0).getKey().indicator);
-    Assert.assertEquals("cstella", values.get(0).getValue().getMetadata().get("user"));
-    Assert.assertNull(values.get(0).getValue().getMetadata().get("foo"));
-    Assert.assertEquals(1, values.get(0).getValue().getMetadata().size());
+    assertEquals(1, values.size());
+    assertEquals("localhost", values.get(0).getKey().indicator);
+    assertEquals("cstella", values.get(0).getValue().getMetadata().get("user"));
+    assertNull(values.get(0).getValue().getMetadata().get("foo"));
+    assertEquals(1, values.get(0).getValue().getMetadata().size());
   }
 
   @Test
@@ -130,15 +128,15 @@
             }}
     );
     List<LookupKV<EnrichmentKey, EnrichmentValue>> values = getValues();
-    Assert.assertEquals(1, values.size());
-    Assert.assertEquals("localhost", values.get(0).getKey().indicator);
-    Assert.assertEquals("cstella", values.get(0).getValue().getMetadata().get("user"));
-    Assert.assertEquals("localhost", values.get(0).getValue().getMetadata().get("ip"));
-    Assert.assertNull(values.get(0).getValue().getMetadata().get("foo"));
-    Assert.assertEquals(2, values.get(0).getValue().getMetadata().size());
+    assertEquals(1, values.size());
+    assertEquals("localhost", values.get(0).getKey().indicator);
+    assertEquals("cstella", values.get(0).getValue().getMetadata().get("user"));
+    assertEquals("localhost", values.get(0).getValue().getMetadata().get("ip"));
+    assertNull(values.get(0).getValue().getMetadata().get("foo"));
+    assertEquals(2, values.get(0).getValue().getMetadata().size());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testConfigValidation_missing_enrichment_type() {
     final String sensorType = "dummy";
     SimpleHbaseEnrichmentWriter writer = new SimpleHbaseEnrichmentWriter();
@@ -148,16 +146,14 @@
               put(SimpleHbaseEnrichmentWriter.Configurations.KEY_COLUMNS.getKey(), "ip");
             }}
     );
-    try {
-      writer.configure(sensorType, configuration);
-    } catch (IllegalArgumentException ex) {
-      Assert.assertEquals(String.format("%s must be provided",
-              SimpleHbaseEnrichmentWriter.Configurations.ENRICHMENT_TYPE.getKey()), ex.getMessage());
-      throw ex;
-    }
+
+    IllegalArgumentException ex = assertThrows(IllegalArgumentException.class,
+            () -> writer.configure(sensorType, configuration));
+    assertEquals(String.format("%s must be provided", SimpleHbaseEnrichmentWriter.Configurations.ENRICHMENT_TYPE.getKey()),
+        ex.getMessage());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testConfigValidation_enrichment_type_is_not_a_string() {
     final String sensorType = "dummy";
     SimpleHbaseEnrichmentWriter writer = new SimpleHbaseEnrichmentWriter();
@@ -168,16 +164,13 @@
               put(SimpleHbaseEnrichmentWriter.Configurations.ENRICHMENT_TYPE.getKey(), 10);
             }}
     );
-    try {
-      writer.configure(sensorType, configuration);
-    } catch (IllegalArgumentException ex) {
-      Assert.assertEquals(String.format("%s must be a string",
-              SimpleHbaseEnrichmentWriter.Configurations.ENRICHMENT_TYPE.getKey()), ex.getMessage());
-      throw ex;
-    }
+    IllegalArgumentException ex = assertThrows(IllegalArgumentException.class,
+            () -> writer.configure(sensorType, configuration));
+    assertEquals(String.format("%s must be a string", SimpleHbaseEnrichmentWriter.Configurations.ENRICHMENT_TYPE.getKey()),
+            ex.getMessage());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testConfigValidation_enrichment_type_is_empty() {
     final String sensorType = "dummy";
     SimpleHbaseEnrichmentWriter writer = new SimpleHbaseEnrichmentWriter();
@@ -188,16 +181,13 @@
               put(SimpleHbaseEnrichmentWriter.Configurations.ENRICHMENT_TYPE.getKey(), "  ");
             }}
     );
-    try {
-      writer.configure(sensorType, configuration);
-    } catch (IllegalArgumentException ex) {
-        Assert.assertEquals(String.format("%s must not be an empty string",
-                SimpleHbaseEnrichmentWriter.Configurations.ENRICHMENT_TYPE.getKey()), ex.getMessage());
-      throw ex;
-    }
+    IllegalArgumentException ex = assertThrows(IllegalArgumentException.class,
+              () -> writer.configure(sensorType, configuration));
+    assertEquals(String.format("%s must not be an empty string", SimpleHbaseEnrichmentWriter.Configurations.ENRICHMENT_TYPE.getKey()),
+            ex.getMessage());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testConfigValidation_missing_key_columns() {
     final String sensorType = "dummy";
     SimpleHbaseEnrichmentWriter writer = new SimpleHbaseEnrichmentWriter();
@@ -207,16 +197,13 @@
               put(SimpleHbaseEnrichmentWriter.Configurations.ENRICHMENT_TYPE.getKey(), ENRICHMENT_TYPE);
             }}
     );
-    try {
-      writer.configure(sensorType, configuration);
-    } catch (IllegalArgumentException ex) {
-        Assert.assertEquals(String.format("%s must be provided",
-                SimpleHbaseEnrichmentWriter.Configurations.KEY_COLUMNS.getKey()), ex.getMessage());
-      throw ex;
-    }
+    IllegalArgumentException ex = assertThrows(IllegalArgumentException.class,
+              () -> writer.configure(sensorType, configuration));
+    assertEquals(String.format("%s must be provided", SimpleHbaseEnrichmentWriter.Configurations.KEY_COLUMNS.getKey()),
+            ex.getMessage());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testConfigValidation_key_columns_contain_an_empty_value() {
     final String sensorType = "dummy";
     SimpleHbaseEnrichmentWriter writer = new SimpleHbaseEnrichmentWriter();
@@ -227,15 +214,12 @@
               put(SimpleHbaseEnrichmentWriter.Configurations.KEY_COLUMNS.getKey(), Arrays.asList("ip", "  "));
             }}
     );
-    try {
-      writer.configure(sensorType, configuration);
-    } catch (IllegalArgumentException ex) {
-        Assert.assertEquals("Column name must not be empty", ex.getMessage());
-      throw ex;
-    }
+    IllegalArgumentException ex = assertThrows(IllegalArgumentException.class,
+            () -> writer.configure(sensorType, configuration));
+    assertEquals("Column name must not be empty", ex.getMessage());
   }
 
-  @Test(expected = IllegalArgumentException.class)
+  @Test
   public void testConfigValidation_key_columns_contain_a_null_value() {
     final String sensorType = "dummy";
     SimpleHbaseEnrichmentWriter writer = new SimpleHbaseEnrichmentWriter();
@@ -246,17 +230,14 @@
               put(SimpleHbaseEnrichmentWriter.Configurations.KEY_COLUMNS.getKey(), Arrays.asList("ip", null));
             }}
     );
-    try {
-      writer.configure(sensorType, configuration);
-    } catch (IllegalArgumentException ex) {
-        Assert.assertEquals("Column name must not be null", ex.getMessage());
-      throw ex;
-    }
+    IllegalArgumentException ex = assertThrows(IllegalArgumentException.class,
+            () -> writer.configure(sensorType, configuration));
+    assertEquals("Column name must not be null", ex.getMessage());
   }
 
   public static List<LookupKV<EnrichmentKey, EnrichmentValue>> getValues() throws IOException {
     MockHTable table = (MockHTable) MockHBaseTableProvider.getFromCache(TABLE_NAME);
-    Assert.assertNotNull(table);
+    assertNotNull(table);
     List<LookupKV<EnrichmentKey, EnrichmentValue>> ret = new ArrayList<>();
     EnrichmentConverter converter = new EnrichmentConverter();
     for(Result r : table.getScanner(Bytes.toBytes(TABLE_CF))) {
diff --git a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/kafka/KafkaWriterTest.java b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/kafka/KafkaWriterTest.java
index cac3d0b..9240683 100644
--- a/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/kafka/KafkaWriterTest.java
+++ b/metron-platform/metron-writer/metron-writer-common/src/test/java/org/apache/metron/writer/kafka/KafkaWriterTest.java
@@ -31,30 +31,17 @@
 import org.apache.metron.common.writer.BulkWriterResponse;
 import org.apache.metron.common.writer.MessageId;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
+import java.util.*;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Future;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
 public class KafkaWriterTest {
 
@@ -72,7 +59,7 @@
     return new ParserWriterConfiguration(configurations);
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     MockitoAnnotations.initMocks(this);
   }
@@ -138,7 +125,7 @@
                           put("kafka_topic", "metron");
                          }}).get()
                        );
-    Assert.assertFalse( writer.getKafkaTopic(new JSONObject()).isPresent() );
+    assertFalse( writer.getKafkaTopic(new JSONObject()).isPresent() );
 
   }
 
@@ -159,7 +146,7 @@
                           put("kafka_topic", "metron");
                          }}).get()
                        );
-    Assert.assertFalse( writer.getKafkaTopic(new JSONObject()).isPresent() );
+    assertFalse( writer.getKafkaTopic(new JSONObject()).isPresent() );
   }
 
   @Test
@@ -178,7 +165,7 @@
                           put("kafka_topic", "metron");
                          }}).get()
                        );
-    Assert.assertTrue( writer.getKafkaTopic(new JSONObject()).isPresent() );
+    assertTrue( writer.getKafkaTopic(new JSONObject()).isPresent() );
   }
 
   @Test
diff --git a/metron-platform/metron-writer/metron-writer-storm/pom.xml b/metron-platform/metron-writer/metron-writer-storm/pom.xml
index b1e33a9..fd82739 100644
--- a/metron-platform/metron-writer/metron-writer-storm/pom.xml
+++ b/metron-platform/metron-writer/metron-writer-storm/pom.xml
@@ -123,5 +123,11 @@
             <version>${project.parent.version}</version>
             <scope>test</scope>
         </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-migrationsupport</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 </project>
diff --git a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/AckTuplesPolicyTest.java b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/AckTuplesPolicyTest.java
index f34e186..306595d 100644
--- a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/AckTuplesPolicyTest.java
+++ b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/AckTuplesPolicyTest.java
@@ -19,32 +19,24 @@
 
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.error.MetronError;
-import org.apache.metron.storm.common.message.MessageGetStrategy;
 import org.apache.metron.common.writer.BulkWriterResponse;
 import org.apache.metron.common.writer.MessageId;
+import org.apache.metron.storm.common.message.MessageGetStrategy;
 import org.apache.metron.test.error.MetronErrorJSONMatcher;
 import org.apache.storm.task.OutputCollector;
 import org.apache.storm.tuple.Tuple;
 import org.apache.storm.tuple.Values;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
 import java.util.Arrays;
 import java.util.Collections;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Matchers.any;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
 
 public class AckTuplesPolicyTest {
 
@@ -65,7 +57,7 @@
 
   private AckTuplesPolicy ackTuplesPolicy;
 
-  @Before
+  @BeforeEach
   public void setup() {
     MockitoAnnotations.initMocks(this);
     ackTuplesPolicy = new AckTuplesPolicy(collector, messageGetStrategy);
@@ -103,8 +95,8 @@
 
     ackTuplesPolicy.onFlush(sensorType, response);
 
-    Assert.assertEquals(0, ackTuplesPolicy.getTupleMessageMap().size());
-    Assert.assertEquals(0, ackTuplesPolicy.getTupleErrorMap().size());
+    assertEquals(0, ackTuplesPolicy.getTupleMessageMap().size());
+    assertEquals(0, ackTuplesPolicy.getTupleErrorMap().size());
     verify(collector, times(1)).emit(eq(Constants.ERROR_STREAM),
             new Values(argThat(new MetronErrorJSONMatcher(expectedError1.getJSONObject()))));
     verify(collector, times(1)).emit(eq(Constants.ERROR_STREAM),
@@ -156,8 +148,8 @@
 
     ackTuplesPolicy.onFlush(sensorType, response);
 
-    Assert.assertEquals(2, ackTuplesPolicy.getTupleMessageMap().size());
-    Assert.assertEquals(1, ackTuplesPolicy.getTupleErrorMap().size());
+    assertEquals(2, ackTuplesPolicy.getTupleMessageMap().size());
+    assertEquals(1, ackTuplesPolicy.getTupleErrorMap().size());
     verify(collector, times(0)).ack(any());
     verify(collector, times(0)).reportError(any());
     verify(collector, times(1)).emit(eq(Constants.ERROR_STREAM), new Values(argThat(new MetronErrorJSONMatcher(expectedError1.getJSONObject()))));
@@ -168,8 +160,8 @@
 
     ackTuplesPolicy.onFlush(sensorType, response);
 
-    Assert.assertEquals(0, ackTuplesPolicy.getTupleMessageMap().size());
-    Assert.assertEquals(0, ackTuplesPolicy.getTupleErrorMap().size());
+    assertEquals(0, ackTuplesPolicy.getTupleMessageMap().size());
+    assertEquals(0, ackTuplesPolicy.getTupleErrorMap().size());
     verify(collector, times(1)).ack(tuple1);
     verify(collector, times(1)).ack(tuple2);
     verify(collector, times(1)).reportError(e1);
@@ -190,7 +182,7 @@
 
     ackTuplesPolicy.onFlush(sensorType, response);
 
-    Assert.assertEquals(0, ackTuplesPolicy.getTupleMessageMap().size());
+    assertEquals(0, ackTuplesPolicy.getTupleMessageMap().size());
     verify(collector, times(1)).ack(tuple1);
     verify(collector, times(1)).ack(tuple2);
     verifyNoMoreInteractions(collector);
@@ -212,7 +204,7 @@
 
     ackTuplesPolicy.onFlush(sensorType, response);
 
-    Assert.assertEquals(0, ackTuplesPolicy.getTupleMessageMap().size());
+    assertEquals(0, ackTuplesPolicy.getTupleMessageMap().size());
     verify(collector, times(1)).ack(tuple1);
     verifyNoMoreInteractions(collector);
   }
diff --git a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/bolt/BatchTimeoutHelperTest.java b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/bolt/BatchTimeoutHelperTest.java
index 6fafbec..b5aff83 100644
--- a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/bolt/BatchTimeoutHelperTest.java
+++ b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/bolt/BatchTimeoutHelperTest.java
@@ -19,13 +19,13 @@
 
 import org.apache.storm.Config;
 import org.apache.storm.utils.Utils;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.function.Supplier;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  *
diff --git a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/bolt/BulkMessageWriterBoltTest.java b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/bolt/BulkMessageWriterBoltTest.java
index 2256f26..d9e1011 100644
--- a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/bolt/BulkMessageWriterBoltTest.java
+++ b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/bolt/BulkMessageWriterBoltTest.java
@@ -17,21 +17,21 @@
  */
 package org.apache.metron.writer.bolt;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.fail;
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.anyList;
-import static org.mockito.Matchers.argThat;
-import static org.mockito.Matchers.eq;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.any;
+import static org.mockito.Mockito.anyList;
+import static org.mockito.Mockito.argThat;
 import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
 
+
 import java.io.FileInputStream;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
@@ -43,12 +43,12 @@
 import org.apache.metron.common.Constants;
 import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
-import org.apache.metron.storm.common.message.MessageGetters;
 import org.apache.metron.common.system.FakeClock;
-import org.apache.metron.common.writer.BulkMessageWriter;
 import org.apache.metron.common.writer.BulkMessage;
+import org.apache.metron.common.writer.BulkMessageWriter;
 import org.apache.metron.common.writer.BulkWriterResponse;
 import org.apache.metron.common.writer.MessageId;
+import org.apache.metron.storm.common.message.MessageGetters;
 import org.apache.metron.test.bolt.BaseEnrichmentBoltTest;
 import org.apache.metron.test.utils.UnitTestHelper;
 import org.apache.metron.writer.BulkWriterComponent;
@@ -57,8 +57,8 @@
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mock;
 import org.mockito.Mockito;
 import org.mockito.MockitoAnnotations;
@@ -84,7 +84,7 @@
   private List<JSONObject> fullMessageList;
   private List<Tuple> tupleList;
 
-  @Before
+  @BeforeEach
   public void parseMessages() throws ParseException {
     JSONParser parser = new JSONParser();
     fullMessageList = new ArrayList<>();
@@ -165,10 +165,7 @@
             new FileInputStream("../" + BaseEnrichmentBoltTest.sampleSensorIndexingConfigPath));
     {
       doThrow(new Exception()).when(bulkMessageWriter).init(eq(stormConf), any(WriterConfiguration.class));
-      try {
-        bulkMessageWriterBolt.prepare(stormConf, topologyContext, outputCollector);
-        fail("A runtime exception should be thrown when bulkMessageWriter.init throws an exception");
-      } catch(RuntimeException e) {}
+      assertThrows(RuntimeException.class, () -> bulkMessageWriterBolt.prepare(stormConf, topologyContext, outputCollector));
       reset(bulkMessageWriter);
     }
     {
diff --git a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/ClonedSyncPolicyCreatorTest.java b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/ClonedSyncPolicyCreatorTest.java
index 092bf0f..27ac2ea 100644
--- a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/ClonedSyncPolicyCreatorTest.java
+++ b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/ClonedSyncPolicyCreatorTest.java
@@ -20,8 +20,10 @@
 
 import org.apache.storm.hdfs.bolt.sync.CountSyncPolicy;
 import org.apache.storm.hdfs.bolt.sync.SyncPolicy;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class ClonedSyncPolicyCreatorTest {
 
@@ -32,11 +34,11 @@
     //ensure cloned policy continues to work and adheres to the contract: mark on 5th call.
     SyncPolicy clonedPolicy = creator.create("blah", null);
     for(int i = 0;i < 4;++i) {
-      Assert.assertFalse(clonedPolicy.mark(null, i));
+      assertFalse(clonedPolicy.mark(null, i));
     }
-    Assert.assertTrue(clonedPolicy.mark(null, 5));
+    assertTrue(clonedPolicy.mark(null, 5));
     //reclone policy and ensure it adheres to the original contract.
     clonedPolicy = creator.create("blah", null);
-    Assert.assertFalse(clonedPolicy.mark(null, 0));
+    assertFalse(clonedPolicy.mark(null, 0));
   }
 }
diff --git a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/HdfsWriterTest.java b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/HdfsWriterTest.java
index e48c8e2..5b3da7b 100644
--- a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/HdfsWriterTest.java
+++ b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/HdfsWriterTest.java
@@ -18,14 +18,6 @@
 
 package org.apache.metron.writer.hdfs;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Files;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
 import org.apache.metron.common.configuration.IndexingConfigurations;
 import org.apache.metron.common.configuration.writer.IndexingWriterConfiguration;
 import org.apache.metron.common.configuration.writer.WriterConfiguration;
@@ -35,15 +27,23 @@
 import org.apache.storm.hdfs.bolt.sync.CountSyncPolicy;
 import org.apache.storm.task.TopologyContext;
 import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
 import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
 import org.junit.rules.TemporaryFolder;
 
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
+import java.util.*;
+
+import static org.junit.jupiter.api.Assertions.*;
+
 // Suppress ConstantConditions to avoid NPE warnings that only would occur on test failure anyway
 @SuppressWarnings("ConstantConditions")
+@EnableRuleMigrationSupport
 public class HdfsWriterTest {
   @Rule
   public TemporaryFolder tempFolder = new TemporaryFolder();
@@ -54,14 +54,14 @@
   private File folder;
   private FileNameFormat testFormat;
 
-  @BeforeClass
+  @BeforeAll
   public static void beforeAll() throws Exception {
     // See https://issues.apache.org/jira/browse/METRON-2036
     // The need for this should go away when JUnit 4.13 is released and we can upgrade.
     Thread.interrupted();
   }
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     // Ensure each test has a unique folder to work with.
     folder = tempFolder.newFolder();
@@ -72,7 +72,6 @@
   }
 
   @Test
-  @SuppressWarnings("unchecked")
   public void testGetHdfsPathNull() {
     WriterConfiguration config = new IndexingWriterConfiguration(WRITER_NAME, new IndexingConfigurations());
     HdfsWriter writer = new HdfsWriter().withFileNameFormat(testFormat);
@@ -82,11 +81,10 @@
     JSONObject message = new JSONObject();
     Object result = writer.getHdfsPathExtension(SENSOR_NAME,null, message);
     writer.close();
-    Assert.assertEquals(SENSOR_NAME, result);
+    assertEquals(SENSOR_NAME, result);
   }
 
   @Test
-  @SuppressWarnings("unchecked")
   public void testGetHdfsPathEmptyString() {
     WriterConfiguration config = new IndexingWriterConfiguration(WRITER_NAME, new IndexingConfigurations());
     HdfsWriter writer = new HdfsWriter().withFileNameFormat(testFormat);
@@ -96,11 +94,10 @@
     JSONObject message = new JSONObject();
     Object result = writer.getHdfsPathExtension(SENSOR_NAME, "", message);
     writer.close();
-    Assert.assertEquals(SENSOR_NAME, result);
+    assertEquals(SENSOR_NAME, result);
   }
 
   @Test
-  @SuppressWarnings("unchecked")
   public void testGetHdfsPathConstant() {
     WriterConfiguration config = new IndexingWriterConfiguration(WRITER_NAME, new IndexingConfigurations());
     HdfsWriter writer = new HdfsWriter().withFileNameFormat(testFormat);
@@ -110,7 +107,7 @@
     JSONObject message = new JSONObject();
     Object result = writer.getHdfsPathExtension(SENSOR_NAME, "'new'", message);
     writer.close();
-    Assert.assertEquals("new", result);
+    assertEquals("new", result);
   }
 
   @Test
@@ -125,11 +122,10 @@
     message.put("test.key", "test.value");
     Object result = writer.getHdfsPathExtension(SENSOR_NAME, "test.key", message);
     writer.close();
-    Assert.assertEquals("test.value", result);
+    assertEquals("test.value", result);
   }
 
   @Test
-  @SuppressWarnings("unchecked")
   public void testGetHdfsPathFormatConstant() {
     WriterConfiguration config = new IndexingWriterConfiguration(WRITER_NAME, new IndexingConfigurations());
     HdfsWriter writer = new HdfsWriter().withFileNameFormat(testFormat);
@@ -139,7 +135,7 @@
     JSONObject message = new JSONObject();
     Object result = writer.getHdfsPathExtension(SENSOR_NAME, "FORMAT('/test/folder/')", message);
     writer.close();
-    Assert.assertEquals("/test/folder/", result);
+    assertEquals("/test/folder/", result);
   }
 
   @Test
@@ -157,7 +153,7 @@
     message.put("test.key.3", "test.value.3");
     Object result = writer.getHdfsPathExtension(SENSOR_NAME,"FORMAT('%s/%s/%s', test.key, test.key.2, test.key.3)", message);
     writer.close();
-    Assert.assertEquals("test.value/test.value.2/test.value.3", result);
+    assertEquals("test.value/test.value.2/test.value.3", result);
   }
 
   @Test
@@ -168,7 +164,7 @@
     writer.init(new HashMap<String, String>(), config);
     writer.initFileNameFormat(createTopologyContext());
     String filename = writer.fileNameFormat.getName(1,1);
-    Assert.assertEquals("prefix-Xcom-7-1-1.json", filename);
+    assertEquals("prefix-Xcom-7-1-1.json", filename);
     writer.close();
   }
 
@@ -185,14 +181,14 @@
     message.put("test.key", "test.value");
     message.put("test.key.2", "test.value.2");
     Object result = writer.getHdfsPathExtension(SENSOR_NAME, "FORMAT('%s', test.key)", message);
-    Assert.assertEquals("test.value", result);
+    assertEquals("test.value", result);
 
     result = writer.getHdfsPathExtension(SENSOR_NAME, "FORMAT('%s/%s', test.key, test.key.2)", message);
-    Assert.assertEquals("test.value/test.value.2", result);
+    assertEquals("test.value/test.value.2", result);
 
     result = writer.getHdfsPathExtension(SENSOR_NAME, "FORMAT('%s', test.key)", message);
     writer.close();
-    Assert.assertEquals("test.value", result);
+    assertEquals("test.value", result);
   }
 
   @Test
@@ -208,10 +204,10 @@
     message.put("test.key", "test.value");
     Object result = writer.getHdfsPathExtension(SENSOR_NAME, "TO_UPPER(FORMAT(MAP_GET('key', {'key': 'AbC%s'}), test.key))", message);
     writer.close();
-    Assert.assertEquals("ABCTEST.VALUE", result);
+    assertEquals("ABCTEST.VALUE", result);
   }
 
-  @Test(expected=IllegalArgumentException.class)
+  @Test
   public void testGetHdfsPathNonString() {
     WriterConfiguration config = new IndexingWriterConfiguration(WRITER_NAME, new IndexingConfigurations());
     HdfsWriter writer = new HdfsWriter().withFileNameFormat(testFormat);
@@ -219,8 +215,11 @@
     writer.initFileNameFormat(createTopologyContext());
 
     JSONObject message = new JSONObject();
-    writer.getHdfsPathExtension(SENSOR_NAME, "{'key':'value'}", message);
-    writer.close();
+    try {
+      assertThrows(IllegalArgumentException.class, () -> writer.getHdfsPathExtension(SENSOR_NAME, "{'key':'value'}", message));
+    } finally {
+      writer.close();
+    }
   }
 
   @Test
@@ -239,7 +238,7 @@
     writer.close();
   }
 
-  @Test(expected=IllegalStateException.class)
+  @Test
   public void testGetSourceHandlerOpenFilesOverMax() throws IOException {
     int maxFiles = 2;
     IndexingConfigurations indexingConfig = new IndexingConfigurations();
@@ -249,10 +248,17 @@
     writer.init(new HashMap<String, String>(), config);
     writer.initFileNameFormat(createTopologyContext());
 
-    for(int i = 0; i < maxFiles+1; i++) {
+    for(int i = 0; i < maxFiles; i++) {
       writer.getSourceHandler(SENSOR_NAME, Integer.toString(i), null);
     }
-    writer.close();
+    // Should fail on max files + 1
+    try {
+      assertThrows(
+          IllegalStateException.class,
+          () -> writer.getSourceHandler(SENSOR_NAME, Integer.toString(maxFiles + 1), null));
+    } finally {
+      writer.close();
+    }
   }
 
   @Test
@@ -289,13 +295,13 @@
 
     // Default to just putting it in the base folder + the sensor name
     File outputFolder = new File(folder.getAbsolutePath() + "/" + SENSOR_NAME);
-    Assert.assertTrue(outputFolder.exists() && outputFolder.isDirectory());
-    Assert.assertEquals(1, outputFolder.listFiles().length);
+    assertTrue(outputFolder.exists() && outputFolder.isDirectory());
+    assertEquals(1, outputFolder.listFiles().length);
 
     for(File file : outputFolder.listFiles()) {
       List<String> lines = Files.readAllLines(file.toPath());
       Collections.sort(lines);
-      Assert.assertEquals(expected, lines);
+      assertEquals(expected, lines);
     }
   }
 
@@ -333,13 +339,13 @@
     Collections.sort(expected);
 
     File outputFolder = new File(folder.getAbsolutePath() + "/test-test.value/test.value/");
-    Assert.assertTrue(outputFolder.exists() && outputFolder.isDirectory());
-    Assert.assertEquals(1, outputFolder.listFiles().length);
+    assertTrue(outputFolder.exists() && outputFolder.isDirectory());
+    assertEquals(1, outputFolder.listFiles().length);
 
     for(File file : outputFolder.listFiles()) {
       List<String> lines = Files.readAllLines(file.toPath());
       Collections.sort(lines);
-      Assert.assertEquals(expected, lines);
+      assertEquals(expected, lines);
     }
   }
 
@@ -376,13 +382,13 @@
     Collections.sort(expected1);
 
     File outputFolder1 = new File(folder.getAbsolutePath() + "/test-test.value/test.value/");
-    Assert.assertTrue(outputFolder1.exists() && outputFolder1.isDirectory());
-    Assert.assertEquals(1, outputFolder1.listFiles().length);
+    assertTrue(outputFolder1.exists() && outputFolder1.isDirectory());
+    assertEquals(1, outputFolder1.listFiles().length);
 
     for(File file : outputFolder1.listFiles()) {
       List<String> lines = Files.readAllLines(file.toPath());
       Collections.sort(lines);
-      Assert.assertEquals(expected1, lines);
+      assertEquals(expected1, lines);
     }
 
     ArrayList<String> expected2 = new ArrayList<>();
@@ -390,13 +396,13 @@
     Collections.sort(expected2);
 
     File outputFolder2 = new File(folder.getAbsolutePath() + "/test-test.value2/test.value2/");
-    Assert.assertTrue(outputFolder2.exists() && outputFolder2.isDirectory());
-    Assert.assertEquals(1, outputFolder2.listFiles().length);
+    assertTrue(outputFolder2.exists() && outputFolder2.isDirectory());
+    assertEquals(1, outputFolder2.listFiles().length);
 
     for(File file : outputFolder2.listFiles()) {
       List<String> lines = Files.readAllLines(file.toPath());
       Collections.sort(lines);
-      Assert.assertEquals(expected2, lines);
+      assertEquals(expected2, lines);
     }
   }
 
@@ -428,13 +434,13 @@
     Collections.sort(expected);
 
     File outputFolder = new File(folder.getAbsolutePath() + "/test-null/null/");
-    Assert.assertTrue(outputFolder.exists() && outputFolder.isDirectory());
-    Assert.assertEquals(1, outputFolder.listFiles().length);
+    assertTrue(outputFolder.exists() && outputFolder.isDirectory());
+    assertEquals(1, outputFolder.listFiles().length);
 
     for(File file : outputFolder.listFiles()) {
       List<String> lines = Files.readAllLines(file.toPath());
       Collections.sort(lines);
-      Assert.assertEquals(expected, lines);
+      assertEquals(expected, lines);
     }
   }
 
@@ -468,12 +474,12 @@
     expected.add(message.toJSONString());
 
     // Assert both messages are in the same file, because the stream stayed open
-    Assert.assertEquals(1, outputFolder.listFiles().length);
+    assertEquals(1, outputFolder.listFiles().length);
     for (File file : outputFolder.listFiles()) {
       List<String> lines = Files.readAllLines(file.toPath());
       // One line per file
-      Assert.assertEquals(2, lines.size());
-      Assert.assertEquals(expected, lines);
+      assertEquals(2, lines.size());
+      assertEquals(expected, lines);
     }
   }
 
@@ -488,7 +494,7 @@
   }
 
   private TopologyContext createTopologyContext(){
-      Map<Integer, String> taskToComponent = new HashMap<Integer, String>();
+      Map<Integer, String> taskToComponent = new HashMap<>();
       taskToComponent.put(7, "Xcom");
       return new TopologyContext(null, null, taskToComponent, null, null, null, null, null, 7, 6703, null, null, null, null, null, null);
   }
diff --git a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/PathExtensionFileNameFormatTest.java b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/PathExtensionFileNameFormatTest.java
index 9825311..f1f2f7d 100644
--- a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/PathExtensionFileNameFormatTest.java
+++ b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/PathExtensionFileNameFormatTest.java
@@ -20,8 +20,9 @@
 
 import org.apache.storm.hdfs.bolt.format.DefaultFileNameFormat;
 import org.apache.storm.hdfs.bolt.format.FileNameFormat;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class PathExtensionFileNameFormatTest {
 
@@ -35,7 +36,7 @@
     FileNameFormat sourceFormat = new PathExtensionFileNameFormat(PATH_EXTENSION, delegate);
     String actual = sourceFormat.getPath();
     String expected = PATH + "/" + PATH_EXTENSION;
-    Assert.assertEquals(expected, actual);
+    assertEquals(expected, actual);
   }
 
   @Test
@@ -43,6 +44,6 @@
     FileNameFormat delegate = new DefaultFileNameFormat().withExtension(EXTENSION).withPath(PATH);
     FileNameFormat sourceFormat = new PathExtensionFileNameFormat("", delegate);
     String actual = sourceFormat.getPath();
-    Assert.assertEquals(PATH + "/", actual);
+    assertEquals(PATH + "/", actual);
   }
 }
diff --git a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/SourceHandlerTest.java b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/SourceHandlerTest.java
index b4f3d46..a371957 100644
--- a/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/SourceHandlerTest.java
+++ b/metron-platform/metron-writer/metron-writer-storm/src/test/java/org/apache/metron/writer/hdfs/SourceHandlerTest.java
@@ -16,26 +16,26 @@
  * limitations under the License.
  */
 
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
 import org.apache.storm.hdfs.bolt.format.DefaultFileNameFormat;
 import org.apache.storm.hdfs.bolt.format.FileNameFormat;
 import org.apache.storm.hdfs.bolt.rotation.FileSizeRotationPolicy;
 import org.apache.storm.hdfs.bolt.rotation.FileSizeRotationPolicy.Units;
 import org.apache.storm.hdfs.bolt.sync.CountSyncPolicy;
 import org.apache.storm.hdfs.common.rotation.RotationAction;
-import org.json.simple.JSONObject;
-import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Rule;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
 import org.junit.rules.TemporaryFolder;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
 import static org.mockito.Mockito.*;
 
+@EnableRuleMigrationSupport
 public class SourceHandlerTest {
   @Rule
   public TemporaryFolder tempFolder = new TemporaryFolder();
@@ -52,7 +52,7 @@
 
   SourceHandlerCallback callback = mock(SourceHandlerCallback.class);
 
-  @Before
+  @BeforeEach
   public void setup() throws IOException {
     // Ensure each test has a unique folder to work with.
     folder = tempFolder.newFolder();
diff --git a/metron-platform/pom.xml b/metron-platform/pom.xml
index 1f028b5..c5c1945 100644
--- a/metron-platform/pom.xml
+++ b/metron-platform/pom.xml
@@ -76,21 +76,15 @@
 			<version>${global_slf4j_version}</version>
 		</dependency>
 		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>${global_junit_version}</version>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-api</artifactId>
+			<version>${global_junit_jupiter_version}</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
-			<groupId>org.powermock</groupId>
-			<artifactId>powermock-module-junit4</artifactId>
-			<version>${global_powermock_version}</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.powermock</groupId>
-			<artifactId>powermock-api-mockito</artifactId>
-			<version>${global_powermock_version}</version>
+			<groupId>org.junit.jupiter</groupId>
+			<artifactId>junit-jupiter-engine</artifactId>
+			<version>${global_junit_jupiter_version}</version>
 			<scope>test</scope>
 		</dependency>
 		<dependency>
diff --git a/metron-stellar/pom.xml b/metron-stellar/pom.xml
index ab9396f..809ba32 100644
--- a/metron-stellar/pom.xml
+++ b/metron-stellar/pom.xml
@@ -57,21 +57,20 @@
             <version>${global_slf4j_version}</version>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${global_junit_version}</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${global_junit_jupiter_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-module-junit4</artifactId>
-            <version>1.6.6</version>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${global_junit_jupiter_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>org.powermock</groupId>
-            <artifactId>powermock-api-mockito</artifactId>
-            <version>1.6.6</version>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
             <scope>test</scope>
         </dependency>
         <dependency>
@@ -82,8 +81,8 @@
         </dependency>
         <dependency>
             <groupId>org.hamcrest</groupId>
-            <artifactId>hamcrest-all</artifactId>
-            <version>1.3</version>
+            <artifactId>hamcrest-core</artifactId>
+            <version>${global_hamcrest_version}</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/metron-stellar/stellar-common/pom.xml b/metron-stellar/stellar-common/pom.xml
index f6c16b0..7a6c8fd 100644
--- a/metron-stellar/stellar-common/pom.xml
+++ b/metron-stellar/stellar-common/pom.xml
@@ -236,9 +236,27 @@
             <version>${global_httpclient_version}</version>
         </dependency>
         <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${global_junit_version}</version>
+            <groupId>org.hamcrest</groupId>
+            <artifactId>hamcrest-core</artifactId>
+            <version>${global_hamcrest_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-migrationsupport</artifactId>
+            <version>${global_junit_jupiter_version}</version>
             <scope>test</scope>
         </dependency>
         <dependency>
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/BaseStellarProcessorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/BaseStellarProcessorTest.java
index 4caca42..424c6f2 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/BaseStellarProcessorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/BaseStellarProcessorTest.java
@@ -20,21 +20,16 @@
 
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 @SuppressWarnings("ALL")
 public class BaseStellarProcessorTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   BaseStellarProcessor<Object> processor;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     processor = new BaseStellarProcessor<>(Object.class);
   }
@@ -72,34 +67,26 @@
 
   @Test
   public void validateShouldProperlyThrowExceptionOnInvalidStellarExpression() throws Exception {
-    exception.expect(ParseException.class);
-    exception.expectMessage("Unable to parse ': ");
-
-    processor.validate("'", true, Context.EMPTY_CONTEXT());
+    ParseException e = assertThrows(ParseException.class, () -> processor.validate("'", true, Context.EMPTY_CONTEXT()));
+    assertTrue(e.getMessage().contains("Unable to parse ': "));
   }
 
   @Test
   public void validateShouldProperlyThrowExceptionByDefaultOnInvalidStellarExpression() throws Exception {
-    exception.expect(ParseException.class);
-    exception.expectMessage("Unable to parse ': ");
-
-    processor.validate("'", Context.EMPTY_CONTEXT());
+    ParseException e = assertThrows(ParseException.class, () -> processor.validate("'", Context.EMPTY_CONTEXT()));
+    assertTrue(e.getMessage().contains("Unable to parse ': "));
   }
 
   @Test
   public void validateShouldProperlyThrowExceptionByDefaultOnInvalidStellarExpression2() throws Exception {
-    exception.expect(ParseException.class);
-    exception.expectMessage("Unable to parse ': ");
-
-    processor.validate("'");
+    ParseException e = assertThrows(ParseException.class, () -> processor.validate("'"));
+    assertTrue(e.getMessage().contains("Unable to parse ': "));
   }
 
   @Test
   public void validateMethodShouldFailOnUnknownFunctions() throws Exception {
-    exception.expect(ParseException.class);
-    exception.expectMessage(" Unable to resolve function named 'UNKNOWN_FUNCTION'.");
-
-    assertTrue(processor.validate("1 < UNKNOWN_FUNCTION(3)", Context.EMPTY_CONTEXT()));
+    ParseException e = assertThrows(ParseException.class, () -> processor.validate("1 < UNKNOWN_FUNCTION(3)", Context.EMPTY_CONTEXT()));
+    assertTrue(e.getMessage().contains(" Unable to resolve function named 'UNKNOWN_FUNCTION'."));
   }
 
   @Test
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/CachingStellarProcessorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/CachingStellarProcessorTest.java
index 1690236..55338f8 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/CachingStellarProcessorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/CachingStellarProcessorTest.java
@@ -22,16 +22,16 @@
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.MapVariableResolver;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.slf4j.LoggerFactory;
 
 import java.lang.invoke.MethodHandles;
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class CachingStellarProcessorTest {
 
@@ -45,7 +45,7 @@
   private Cache<CachingStellarProcessor.Key, Object> cache;
   private Context contextWithCache;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // create the cache
@@ -92,7 +92,7 @@
    * The processor should work, even if no cache is present in the execution context.
    */
   @Test
-  public void testNoCache() throws Exception {
+  public void testNoCache() {
 
     // the execution context does not contain a cache
     Context contextNoCache = Context.EMPTY_CONTEXT();
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/DefaultStellarStatefulExecutorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/DefaultStellarStatefulExecutorTest.java
index 8c55d7d..b865c5e 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/DefaultStellarStatefulExecutorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/DefaultStellarStatefulExecutorTest.java
@@ -26,9 +26,9 @@
 import org.json.simple.JSONObject;
 import org.json.simple.parser.JSONParser;
 import org.json.simple.parser.ParseException;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
@@ -37,8 +37,9 @@
 
 import static org.hamcrest.CoreMatchers.equalTo;
 import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 /**
  * Tests the DefaultStellarStatefulExecutor.
@@ -60,7 +61,7 @@
   private JSONObject message;
   private DefaultStellarStatefulExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() throws ParseException {
 
     // parse the input message
@@ -147,7 +148,7 @@
    * a PredicateProcessor and the other a TransformationProcessor.  The StellarStatefulExecutor
    * abstracts away that complication.
    */
-  @Ignore  //until field validations avail to Stellar
+  @Disabled  //until field validations avail to Stellar
   @Test
   public void testExecutePredicate() {
     boolean actual = executor.execute("IS_INTEGER(2)", message, Boolean.class);
@@ -157,9 +158,9 @@
   /**
    * An exception is expected if an expression results in an unexpected type.
    */
-  @Test(expected = RuntimeException.class)
+  @Test
   public void testExecuteWithWrongType() {
-    executor.execute("2 + 2", message, Boolean.class);
+    assertThrows(RuntimeException.class, () -> executor.execute("2 + 2", message, Boolean.class));
   }
 
   /**
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarArithmeticTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarArithmeticTest.java
index 841ab5b..3035016 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarArithmeticTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarArithmeticTest.java
@@ -22,52 +22,45 @@
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.Token;
-import org.junit.Assert;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @SuppressWarnings("unchecked")
 public class StellarArithmeticTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   @Test
-  public void addingLongsShouldYieldLong() throws Exception {
+  public void addingLongsShouldYieldLong() {
     final long timestamp = 1452013350000L;
     String query = "TO_EPOCH_TIMESTAMP('2016-01-05 17:02:30', 'yyyy-MM-dd HH:mm:ss', 'UTC') + 2";
     assertEquals(timestamp + 2, run(query, new HashMap<>()));
   }
 
   @Test
-  public void addingIntegersShouldYieldAnInteger() throws Exception {
+  public void addingIntegersShouldYieldAnInteger() {
     String query = "1 + 2";
     assertEquals(3, run(query, new HashMap<>()));
   }
 
   @Test
-  public void addingDoublesShouldYieldADouble() throws Exception {
+  public void addingDoublesShouldYieldADouble() {
     String query = "1.0 + 2.0";
     assertEquals(3.0, run(query, new HashMap<>()));
   }
 
   @Test
-  public void addingDoubleAndIntegerWhereSubjectIsDoubleShouldYieldADouble() throws Exception {
+  public void addingDoubleAndIntegerWhereSubjectIsDoubleShouldYieldADouble() {
     String query = "2.1 + 1";
     assertEquals(3.1, run(query, new HashMap<>()));
   }
 
   @Test
-  public void addingDoubleAndIntegerWhereSubjectIsIntegerShouldYieldADouble() throws Exception {
+  public void addingDoubleAndIntegerWhereSubjectIsIntegerShouldYieldADouble() {
     String query = "1 + 2.1";
     assertEquals(3.1, run(query, new HashMap<>()));
   }
@@ -122,7 +115,7 @@
     }
     {
       String query = "TO_LONG(foo)";
-      Assert.assertNull(run(query, ImmutableMap.of("foo", "not a number")));
+      assertNull(run(query, ImmutableMap.of("foo", "not a number")));
     }
     {
       String query = "TO_LONG(foo)";
@@ -135,7 +128,7 @@
   }
 
   @Test
-  public void verifyExpectedReturnTypes() throws Exception {
+  public void verifyExpectedReturnTypes() {
     Token<Integer> integer = mock(Token.class);
     when(integer.getValue()).thenReturn(1);
 
@@ -180,7 +173,7 @@
   }
 
   @Test
-  public void happyPathFloatArithmetic() throws Exception {
+  public void happyPathFloatArithmetic() {
     Object run = run(".0f * 1", ImmutableMap.of());
     assertEquals(.0f * 1, run);
     assertEquals(Float.class, run.getClass());
@@ -200,7 +193,7 @@
 
   @SuppressWarnings("PointlessArithmeticExpression")
   @Test
-  public void happyPathLongArithmetic() throws Exception {
+  public void happyPathLongArithmetic() {
     assertEquals(0L * 1L, run("0L * 1L", ImmutableMap.of()));
     assertEquals(0l / 1L, run("0l / 1L", ImmutableMap.of()));
     assertEquals(1L - 1l, run("1L - 1l", ImmutableMap.of()));
@@ -209,14 +202,14 @@
 
   @SuppressWarnings("NumericOverflow")
   @Test
-  public void checkInterestingCases() throws Exception {
+  public void checkInterestingCases() {
     assertEquals((((((1L) + .5d)))) * 6.f, run("(((((1L) + .5d)))) * 6.f", ImmutableMap.of()));
     assertEquals((((((1L) + .5d)))) * 6.f / 0.f, run("(((((1L) + .5d)))) * 6.f / 0.f", ImmutableMap.of()));
     assertEquals(Double.class, run("(((((1L) + .5d)))) * 6.f / 0.f", ImmutableMap.of()).getClass());
   }
 
   @Test
-  public void makeSureStellarProperlyEvaluatesLiteralsToExpectedTypes() throws Exception {
+  public void makeSureStellarProperlyEvaluatesLiteralsToExpectedTypes() {
     {
       assertEquals(Float.class, run("6.f", ImmutableMap.of()).getClass());
       assertEquals(Float.class, run(".0f", ImmutableMap.of()).getClass());
@@ -267,59 +260,52 @@
   }
 
   @Test
-  public void parseExceptionMultipleLeadingZerosOnInteger() throws Exception {
-    exception.expect(ParseException.class);
-    run("000000", ImmutableMap.of());
+  public void parseExceptionMultipleLeadingZerosOnInteger() {
+    assertThrows(ParseException.class, () -> run("000000", ImmutableMap.of()));
   }
 
   @Test
-  public void parseExceptionMultipleLeadingZerosOnLong() throws Exception {
-    exception.expect(ParseException.class);
-    run("000000l", ImmutableMap.of());
+  public void parseExceptionMultipleLeadingZerosOnLong() {
+    assertThrows(ParseException.class, () -> run("000000l", ImmutableMap.of()));
   }
 
   @Test
-  public void parseExceptionMultipleLeadingZerosOnDouble() throws Exception {
-    exception.expect(ParseException.class);
-    run("000000d", ImmutableMap.of());
+  public void parseExceptionMultipleLeadingZerosOnDouble() {
+    assertThrows(ParseException.class, () -> run("000000d", ImmutableMap.of()));
   }
 
   @Test
-  public void parseExceptionMultipleLeadingZerosOnFloat() throws Exception {
-    exception.expect(ParseException.class);
-    run("000000f", ImmutableMap.of());
+  public void parseExceptionMultipleLeadingZerosOnFloat() {
+    assertThrows(ParseException.class, () -> run("000000f", ImmutableMap.of()));
   }
 
   @Test
-  public void parseExceptionMultipleLeadingNegativeSignsFloat() throws Exception {
-    exception.expect(ParseException.class);
-    run("--000000f", ImmutableMap.of());
+  public void parseExceptionMultipleLeadingNegativeSignsFloat() {
+    assertThrows(ParseException.class, () -> run("--000000f", ImmutableMap.of()));
   }
 
   @Test
-  public void parseExceptionMultipleLeadingNegativeSignsDouble() throws Exception {
-    exception.expect(ParseException.class);
-    run("--000000D", ImmutableMap.of());
+  public void parseExceptionMultipleLeadingNegativeSignsDouble() {
+    assertThrows(ParseException.class, () -> run("--000000D", ImmutableMap.of()));
   }
 
   @Test
-  public void parseExceptionMultipleLeadingNegativeSignsLong() throws Exception {
-    exception.expect(ParseException.class);
-    run("--000000L", ImmutableMap.of());
-  }
-
-  @Test(expected = ParseException.class)
-  public void unableToDivideByZeroWithIntegers() throws Exception {
-    run("0/0", ImmutableMap.of());
-  }
-
-  @Test(expected = ParseException.class)
-  public void unableToDivideByZeroWithLongs() throws Exception {
-    run("0L/0L", ImmutableMap.of());
+  public void parseExceptionMultipleLeadingNegativeSignsLong() {
+    assertThrows(ParseException.class, () -> run("--000000L", ImmutableMap.of()));
   }
 
   @Test
-  public void ableToDivideByZero() throws Exception {
+  public void unableToDivideByZeroWithIntegers() {
+    assertThrows(ParseException.class, () -> run("0/0", ImmutableMap.of()));
+  }
+
+  @Test
+  public void unableToDivideByZeroWithLongs() {
+    assertThrows(ParseException.class, () -> run("0L/0L", ImmutableMap.of()));
+  }
+
+  @Test
+  public void ableToDivideByZero() {
     assertEquals(0F/0F, run("0F/0F", ImmutableMap.of()));
     assertEquals(0D/0D, run("0D/0D", ImmutableMap.of()));
     assertEquals(0D/0F, run("0D/0F", ImmutableMap.of()));
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarAssignmentTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarAssignmentTest.java
index a2a6c14..4ae03fc 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarAssignmentTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarAssignmentTest.java
@@ -18,9 +18,9 @@
 package org.apache.metron.stellar.common;
 
 import com.google.common.collect.ImmutableList;
-import org.apache.metron.stellar.common.StellarAssignment;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 public class StellarAssignmentTest {
 
@@ -33,10 +33,10 @@
        )
     {
       StellarAssignment assignment = StellarAssignment.from(statement);
-      Assert.assertEquals("foo", assignment.getKey());
-      Assert.assertEquals("foo", assignment.getVariable());
-      Assert.assertEquals("bar + grok", assignment.getStatement());
-      Assert.assertEquals("bar + grok", assignment.getValue());
+      assertEquals("foo", assignment.getKey());
+      assertEquals("foo", assignment.getVariable());
+      assertEquals("bar + grok", assignment.getStatement());
+      assertEquals("bar + grok", assignment.getValue());
     }
   }
 
@@ -49,16 +49,16 @@
             )
     {
       StellarAssignment assignment = StellarAssignment.from(statement);
-      Assert.assertNull( assignment.getKey());
-      Assert.assertNull( assignment.getVariable());
-      Assert.assertEquals("bar + grok", assignment.getStatement());
-      Assert.assertEquals("bar + grok", assignment.getValue());
+      assertNull( assignment.getKey());
+      assertNull( assignment.getVariable());
+      assertEquals("bar + grok", assignment.getStatement());
+      assertEquals("bar + grok", assignment.getValue());
     }
   }
 
-  @Test(expected=UnsupportedOperationException.class)
+  @Test
   public void testImmutability() {
     StellarAssignment assignment = StellarAssignment.from("foo := bar");
-    assignment.setValue("myval");
+    assertThrows(UnsupportedOperationException.class, () -> assignment.setValue("myval"));
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarComparisonExpressionWithOperatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarComparisonExpressionWithOperatorTest.java
index e587a1f..f2629e6 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarComparisonExpressionWithOperatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarComparisonExpressionWithOperatorTest.java
@@ -21,7 +21,7 @@
 import com.google.common.collect.ImmutableMap;
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.HashMap;
@@ -30,9 +30,7 @@
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 @SuppressWarnings("ALL")
 public class StellarComparisonExpressionWithOperatorTest {
@@ -242,28 +240,48 @@
     assertEquals(0.1 + 0.2 == 0.3, runPredicate("0.1 + 0.2 == 0.3", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void differentTypesShouldThrowErrorWhenUsingLT() throws Exception {
     final Map<String, Object> variableMap = new HashMap<>();
-    runPredicate("1 < '1'", new DefaultVariableResolver(variableMap::get,variableMap::containsKey));
+    assertThrows(
+        ParseException.class,
+        () ->
+            runPredicate(
+                "1 < '1'",
+                new DefaultVariableResolver(variableMap::get, variableMap::containsKey)));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void differentTypesShouldThrowErrorWhenUsingLTE() throws Exception {
     final Map<String, Object> variableMap = new HashMap<>();
-    runPredicate("'1' <= 1", new DefaultVariableResolver(variableMap::get,variableMap::containsKey));
+    assertThrows(
+        ParseException.class,
+        () ->
+            runPredicate(
+                "'1' <= 1",
+                new DefaultVariableResolver(variableMap::get, variableMap::containsKey)));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void differentTypesShouldThrowErrorWhenUsingGT() throws Exception {
     final Map<String, Object> variableMap = new HashMap<>();
-    runPredicate("1 > '1'", new DefaultVariableResolver(variableMap::get,variableMap::containsKey));
+    assertThrows(
+        ParseException.class,
+        () ->
+            runPredicate(
+                "1 > '1'",
+                new DefaultVariableResolver(variableMap::get, variableMap::containsKey)));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void differentTypesShouldThrowErrorWhenUsingGTE() throws Exception {
     final Map<String, Object> variableMap = new HashMap<>();
-    runPredicate("'1' >= 1", new DefaultVariableResolver(variableMap::get,variableMap::containsKey));
+    assertThrows(
+        ParseException.class,
+        () ->
+            runPredicate(
+                "'1' >= 1",
+                new DefaultVariableResolver(variableMap::get, variableMap::containsKey)));
   }
 
   @Test
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarCompilerTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarCompilerTest.java
index e0230c6..23c68c1 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarCompilerTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarCompilerTest.java
@@ -18,33 +18,24 @@
 
 package org.apache.metron.stellar.common;
 
-import org.apache.metron.stellar.dsl.Context;
-import org.apache.metron.stellar.dsl.Token;
-import org.apache.metron.stellar.dsl.VariableResolver;
-import org.apache.metron.stellar.dsl.functions.resolver.FunctionResolver;
 import org.apache.metron.stellar.common.evaluators.ArithmeticEvaluator;
 import org.apache.metron.stellar.common.evaluators.ComparisonExpressionWithOperatorEvaluator;
 import org.apache.metron.stellar.common.evaluators.NumberLiteralEvaluator;
 import org.apache.metron.stellar.common.generated.StellarParser;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.apache.metron.stellar.dsl.Context;
+import org.apache.metron.stellar.dsl.Token;
+import org.apache.metron.stellar.dsl.VariableResolver;
+import org.apache.metron.stellar.dsl.functions.resolver.FunctionResolver;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayDeque;
 import java.util.Deque;
 
-import static org.mockito.Matchers.any;
-import static org.mockito.Matchers.eq;
-import static org.mockito.Mockito.verify;
-import static org.powermock.api.mockito.PowerMockito.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.mockito.Mockito.*;
 
-
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({Deque.class, ArithmeticEvaluator.class, NumberLiteralEvaluator.class, ComparisonExpressionWithOperatorEvaluator.class})
-public class StellarCompilerTest {
+public class StellarCompilerTest  {
   VariableResolver variableResolver;
   FunctionResolver functionResolver;
   Context context;
@@ -55,8 +46,7 @@
   StellarCompiler compiler;
   StellarCompiler.Expression expression;
 
-  @SuppressWarnings("unchecked")
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     variableResolver = mock(VariableResolver.class);
     functionResolver = mock(FunctionResolver.class);
@@ -71,25 +61,25 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void exitIntLiteralShouldProperlyParseStringsAsIntegers() throws Exception {
+  public void exitIntLiteralShouldProperlyParseStringsAsIntegers() {
     StellarParser.IntLiteralContext ctx = mock(StellarParser.IntLiteralContext.class);
     Token result = mock(Token.class);
     when(ctx.getText()).thenReturn("1000");
     when(numberLiteralEvaluator.evaluate(ctx, null)).thenReturn(result);
     compiler.exitIntLiteral(ctx);
     verify(numberLiteralEvaluator).evaluate(ctx, null);
-    Assert.assertEquals(1, tokenStack.size());
-    Assert.assertEquals(tokenStack.getFirst(), result);
-    verifyZeroInteractions(variableResolver);
-    verifyZeroInteractions(functionResolver);
-    verifyZeroInteractions(context);
-    verifyZeroInteractions(arithmeticEvaluator);
-    verifyZeroInteractions(comparisonExpressionWithOperatorEvaluator);
+    assertEquals(1, tokenStack.size());
+    assertEquals(tokenStack.getFirst(), result);
+    verifyNoInteractions(variableResolver);
+    verifyNoInteractions(functionResolver);
+    verifyNoInteractions(context);
+    verifyNoInteractions(arithmeticEvaluator);
+    verifyNoInteractions(comparisonExpressionWithOperatorEvaluator);
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void exitDoubleLiteralShouldProperlyParseStringsAsDoubles() throws Exception {
+  public void exitDoubleLiteralShouldProperlyParseStringsAsDoubles() {
     StellarParser.DoubleLiteralContext ctx = mock(StellarParser.DoubleLiteralContext.class);
     Token result = mock(Token.class);
     when(numberLiteralEvaluator.evaluate(ctx, null)).thenReturn(result);
@@ -98,18 +88,18 @@
     compiler.exitDoubleLiteral(ctx);
 
     verify(numberLiteralEvaluator).evaluate(ctx, null);
-    Assert.assertEquals(1, tokenStack.size());
-    Assert.assertEquals(tokenStack.getFirst(), result);
-    verifyZeroInteractions(variableResolver);
-    verifyZeroInteractions(functionResolver);
-    verifyZeroInteractions(context);
-    verifyZeroInteractions(arithmeticEvaluator);
-    verifyZeroInteractions(comparisonExpressionWithOperatorEvaluator);
+    assertEquals(1, tokenStack.size());
+    assertEquals(tokenStack.getFirst(), result);
+    verifyNoInteractions(variableResolver);
+    verifyNoInteractions(functionResolver);
+    verifyNoInteractions(context);
+    verifyNoInteractions(arithmeticEvaluator);
+    verifyNoInteractions(comparisonExpressionWithOperatorEvaluator);
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void exitFloatLiteralShouldProperlyParseStringsAsFloats() throws Exception {
+  public void exitFloatLiteralShouldProperlyParseStringsAsFloats() {
     StellarParser.FloatLiteralContext ctx = mock(StellarParser.FloatLiteralContext.class);
     when(ctx.getText()).thenReturn("1000f");
     Token result = mock(Token.class);
@@ -118,18 +108,18 @@
     compiler.exitFloatLiteral(ctx);
 
     verify(numberLiteralEvaluator).evaluate(ctx, null);
-    Assert.assertEquals(1, tokenStack.size());
-    Assert.assertEquals(tokenStack.getFirst(), result);
-    verifyZeroInteractions(variableResolver);
-    verifyZeroInteractions(functionResolver);
-    verifyZeroInteractions(context);
-    verifyZeroInteractions(arithmeticEvaluator);
-    verifyZeroInteractions(comparisonExpressionWithOperatorEvaluator);
+    assertEquals(1, tokenStack.size());
+    assertEquals(tokenStack.getFirst(), result);
+    verifyNoInteractions(variableResolver);
+    verifyNoInteractions(functionResolver);
+    verifyNoInteractions(context);
+    verifyNoInteractions(arithmeticEvaluator);
+    verifyNoInteractions(comparisonExpressionWithOperatorEvaluator);
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void exitLongLiteralShouldProperlyParseStringsAsLongs() throws Exception {
+  public void exitLongLiteralShouldProperlyParseStringsAsLongs() {
     StellarParser.LongLiteralContext ctx = mock(StellarParser.LongLiteralContext.class);
     when(ctx.getText()).thenReturn("1000l");
     Token result = mock(Token.class);
@@ -138,18 +128,18 @@
     compiler.exitLongLiteral(ctx);
 
     verify(numberLiteralEvaluator).evaluate(ctx, null);
-    Assert.assertEquals(1, tokenStack.size());
-    Assert.assertEquals(tokenStack.getFirst(), result);
-    verifyZeroInteractions(variableResolver);
-    verifyZeroInteractions(functionResolver);
-    verifyZeroInteractions(context);
-    verifyZeroInteractions(arithmeticEvaluator);
-    verifyZeroInteractions(comparisonExpressionWithOperatorEvaluator);
+    assertEquals(1, tokenStack.size());
+    assertEquals(tokenStack.getFirst(), result);
+    verifyNoInteractions(variableResolver);
+    verifyNoInteractions(functionResolver);
+    verifyNoInteractions(context);
+    verifyNoInteractions(arithmeticEvaluator);
+    verifyNoInteractions(comparisonExpressionWithOperatorEvaluator);
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void properlyCompareTwoNumbers() throws Exception {
+  public void properlyCompareTwoNumbers() {
     StellarParser.ComparisonExpressionWithOperatorContext ctx = mock(StellarParser.ComparisonExpressionWithOperatorContext.class);
     StellarParser.ComparisonOpContext mockOp = mock(StellarParser.ComparisonOpContext.class);
     when(ctx.comp_operator()).thenReturn(mockOp);
@@ -157,18 +147,18 @@
     when(comparisonExpressionWithOperatorEvaluator.evaluate(any(Token.class), any(Token.class), any(StellarParser.ComparisonOpContext.class), any())).thenReturn(result);
 
     compiler.exitComparisonExpressionWithOperator(ctx);
-    Assert.assertEquals(1, tokenStack.size());
+    assertEquals(1, tokenStack.size());
     StellarCompiler.DeferredFunction func = (StellarCompiler.DeferredFunction) tokenStack.pop().getValue();
     tokenStack.push(new Token<>(1000, Integer.class, null));
     tokenStack.push(new Token<>(1500f, Float.class, null));
     func.apply(tokenStack, new StellarCompiler.ExpressionState(context, functionResolver, variableResolver));
-    Assert.assertEquals(1, tokenStack.size());
-    Assert.assertEquals(tokenStack.getFirst(), result);
+    assertEquals(1, tokenStack.size());
+    assertEquals(tokenStack.getFirst(), result);
     verify(comparisonExpressionWithOperatorEvaluator).evaluate(any(Token.class), any(Token.class), eq(mockOp), any());
-    verifyZeroInteractions(numberLiteralEvaluator);
-    verifyZeroInteractions(variableResolver);
-    verifyZeroInteractions(functionResolver);
-    verifyZeroInteractions(context);
-    verifyZeroInteractions(arithmeticEvaluator);
+    verifyNoInteractions(numberLiteralEvaluator);
+    verifyNoInteractions(variableResolver);
+    verifyNoInteractions(functionResolver);
+    verifyNoInteractions(context);
+    verifyNoInteractions(arithmeticEvaluator);
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarPredicateProcessorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarPredicateProcessorTest.java
index 5c5abd4..33745e4 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarPredicateProcessorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/StellarPredicateProcessorTest.java
@@ -18,19 +18,17 @@
 
 package org.apache.metron.stellar.common;
 
-import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Test;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
-import static org.junit.Assert.fail;
+
+import org.apache.metron.stellar.dsl.ParseException;
+import org.junit.jupiter.api.Test;
 
 public class StellarPredicateProcessorTest {
-  @SuppressWarnings("EmptyCatchBlock")
   @Test
-  public void testValidation() throws Exception {
+  public void testValidation() {
     StellarPredicateProcessor processor = new StellarPredicateProcessor();
-    try {
-      processor.validate("enrichedField1 == 'enrichedValue1");
-      fail("Invalid rule found to be valid - unclosed single quotes.");
-    } catch(ParseException e) {}
+    assertThrows(ParseException.class, () -> processor.validate("enrichedField1 == 'enrichedValue1"),
+        "Invalid rule found to be valid - unclosed single quotes.");
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/encoding/EncodingsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/encoding/EncodingsTest.java
index 59896cc..2936464 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/encoding/EncodingsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/encoding/EncodingsTest.java
@@ -18,8 +18,10 @@
 
 package org.apache.metron.stellar.common.encoding;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
+
 
 public class EncodingsTest {
 
@@ -32,73 +34,73 @@
   public static final String HEX_FIXTURE = "48656c6c6f20576f726c64";
 
   @Test
-  public void is() throws Exception {
+  public void is() {
 
     // base32
-    Assert.assertTrue(Encodings.BASE32.is(BASE32_FIXTURE));
-    Assert.assertFalse(Encodings.BASE32.is(STRING_FIXTURE));
+    assertTrue(Encodings.BASE32.is(BASE32_FIXTURE));
+    assertFalse(Encodings.BASE32.is(STRING_FIXTURE));
 
     // base32 hex
-    Assert.assertTrue(Encodings.BASE32HEX.is(BASE32HEX_FIXTURE));
-    Assert.assertFalse(Encodings.BASE32HEX.is(STRING_FIXTURE));
+    assertTrue(Encodings.BASE32HEX.is(BASE32HEX_FIXTURE));
+    assertFalse(Encodings.BASE32HEX.is(STRING_FIXTURE));
 
     // base 64
-    Assert.assertTrue(Encodings.BASE64.is(BASE64_FIXTURE));
-    Assert.assertFalse(Encodings.BASE64.is(STRING_FIXTURE + "\0"));
+    assertTrue(Encodings.BASE64.is(BASE64_FIXTURE));
+    assertFalse(Encodings.BASE64.is(STRING_FIXTURE + "\0"));
 
     // binary
-    Assert.assertTrue(Encodings.BINARY.is(BINARY_FIXTURE));
-    Assert.assertFalse(Encodings.BINARY.is(STRING_FIXTURE));
+    assertTrue(Encodings.BINARY.is(BINARY_FIXTURE));
+    assertFalse(Encodings.BINARY.is(STRING_FIXTURE));
 
     // hex
-    Assert.assertTrue(Encodings.HEX.is(HEX_FIXTURE));
-    Assert.assertFalse(Encodings.HEX.is("AAA"));
+    assertTrue(Encodings.HEX.is(HEX_FIXTURE));
+    assertFalse(Encodings.HEX.is("AAA"));
   }
 
   @Test
-  public void decode() throws Exception {
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BASE32.decode(BASE32_FIXTURE));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(BASE32HEX_FIXTURE));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BASE64.decode(BASE64_FIXTURE));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(BINARY_FIXTURE));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.HEX.decode(HEX_FIXTURE));
+  public void decode() {
+    assertEquals(STRING_FIXTURE,Encodings.BASE32.decode(BASE32_FIXTURE));
+    assertEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(BASE32HEX_FIXTURE));
+    assertEquals(STRING_FIXTURE,Encodings.BASE64.decode(BASE64_FIXTURE));
+    assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(BINARY_FIXTURE));
+    assertEquals(STRING_FIXTURE,Encodings.HEX.decode(HEX_FIXTURE));
 
     // these codecs will just decode away... and return garbage without verification
-    Assert.assertNotEquals(STRING_FIXTURE,Encodings.BASE32.decode(STRING_FIXTURE));
-    Assert.assertNotEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(STRING_FIXTURE));
-    Assert.assertNotEquals(STRING_FIXTURE,Encodings.BASE64.decode(STRING_FIXTURE));
+    assertNotEquals(STRING_FIXTURE,Encodings.BASE32.decode(STRING_FIXTURE));
+    assertNotEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(STRING_FIXTURE));
+    assertNotEquals(STRING_FIXTURE,Encodings.BASE64.decode(STRING_FIXTURE));
 
     // these codecs will fail to decode and return the original string without
     // verification
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(STRING_FIXTURE));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.HEX.decode(STRING_FIXTURE));
+    assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(STRING_FIXTURE));
+    assertEquals(STRING_FIXTURE,Encodings.HEX.decode(STRING_FIXTURE));
   }
 
   @Test
-  public void decodeWithVerify() throws Exception {
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BASE32.decode(BASE32_FIXTURE,true));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(BASE32HEX_FIXTURE,true));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BASE64.decode(BASE64_FIXTURE,true));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(BINARY_FIXTURE,true));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.HEX.decode(HEX_FIXTURE,true));
+  public void decodeWithVerify() {
+    assertEquals(STRING_FIXTURE,Encodings.BASE32.decode(BASE32_FIXTURE,true));
+    assertEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(BASE32HEX_FIXTURE,true));
+    assertEquals(STRING_FIXTURE,Encodings.BASE64.decode(BASE64_FIXTURE,true));
+    assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(BINARY_FIXTURE,true));
+    assertEquals(STRING_FIXTURE,Encodings.HEX.decode(HEX_FIXTURE,true));
 
     // with verification, we will get back the original string
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BASE32.decode(STRING_FIXTURE,true));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(STRING_FIXTURE,true));
+    assertEquals(STRING_FIXTURE,Encodings.BASE32.decode(STRING_FIXTURE,true));
+    assertEquals(STRING_FIXTURE,Encodings.BASE32HEX.decode(STRING_FIXTURE,true));
     // if the string IS coincidentally compatable with base64, then it will decode away
-    Assert.assertNotEquals(STRING_FIXTURE,Encodings.BASE64.decode(STRING_FIXTURE,true));
+    assertNotEquals(STRING_FIXTURE,Encodings.BASE64.decode(STRING_FIXTURE,true));
     // if the string would fail... then we get the original
-    Assert.assertEquals(STRING_FIXTURE + "\0",Encodings.BASE64.decode(STRING_FIXTURE + "\0",true));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(STRING_FIXTURE,true));
-    Assert.assertEquals(STRING_FIXTURE,Encodings.HEX.decode(STRING_FIXTURE,true));
+    assertEquals(STRING_FIXTURE + "\0",Encodings.BASE64.decode(STRING_FIXTURE + "\0",true));
+    assertEquals(STRING_FIXTURE,Encodings.BINARY.decode(STRING_FIXTURE,true));
+    assertEquals(STRING_FIXTURE,Encodings.HEX.decode(STRING_FIXTURE,true));
   }
 
   @Test
-  public void testEncode() throws Exception{
-    Assert.assertEquals(BASE32_FIXTURE,Encodings.BASE32.encode(STRING_FIXTURE));
-    Assert.assertEquals(BASE32HEX_FIXTURE,Encodings.BASE32HEX.encode(STRING_FIXTURE));
-    Assert.assertEquals(BASE64_FIXTURE,Encodings.BASE64.encode(STRING_FIXTURE));
-    Assert.assertEquals(BINARY_FIXTURE,Encodings.BINARY.encode(STRING_FIXTURE));
-    Assert.assertEquals(HEX_FIXTURE,Encodings.HEX.encode(STRING_FIXTURE));
+  public void testEncode() {
+    assertEquals(BASE32_FIXTURE,Encodings.BASE32.encode(STRING_FIXTURE));
+    assertEquals(BASE32HEX_FIXTURE,Encodings.BASE32HEX.encode(STRING_FIXTURE));
+    assertEquals(BASE64_FIXTURE,Encodings.BASE64.encode(STRING_FIXTURE));
+    assertEquals(BINARY_FIXTURE,Encodings.BINARY.encode(STRING_FIXTURE));
+    assertEquals(HEX_FIXTURE,Encodings.HEX.encode(STRING_FIXTURE));
   }
 }
\ No newline at end of file
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ArithmeticEvaluatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ArithmeticEvaluatorTest.java
index c92591a..d0093ff 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ArithmeticEvaluatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ArithmeticEvaluatorTest.java
@@ -20,13 +20,12 @@
 
 import org.apache.commons.lang3.tuple.Pair;
 import org.apache.metron.stellar.dsl.Token;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -35,7 +34,7 @@
   ArithmeticEvaluator evaluator = ArithmeticEvaluator.INSTANCE;
 
   @Test
-  public void evaluateDoubleShouldReturnDoubleAdd() throws Exception {
+  public void evaluateDoubleShouldReturnDoubleAdd() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(1);
 
@@ -51,7 +50,7 @@
   }
 
   @Test
-  public void evaluateIntegerShouldReturnIntegerAdd() throws Exception {
+  public void evaluateIntegerShouldReturnIntegerAdd() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(1);
 
@@ -67,7 +66,7 @@
   }
 
   @Test
-  public void evaluateFloatsShouldReturnFloatAdd() throws Exception {
+  public void evaluateFloatsShouldReturnFloatAdd() {
     Token<Float> l = mock(Token.class);
     when(l.getValue()).thenReturn(1F);
 
@@ -83,7 +82,7 @@
   }
 
   @Test
-  public void evaluateLongsShouldReturnLongAdd() throws Exception {
+  public void evaluateLongsShouldReturnLongAdd() {
     Token<Long> l = mock(Token.class);
     when(l.getValue()).thenReturn(1L);
 
@@ -99,7 +98,7 @@
   }
 
   @Test
-  public void evaluateIntegerShouldReturnDoubleMul() throws Exception {
+  public void evaluateIntegerShouldReturnDoubleMul() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(1);
 
@@ -115,7 +114,7 @@
   }
 
   @Test
-  public void evaluateIntegerShouldReturnIntegerMul() throws Exception {
+  public void evaluateIntegerShouldReturnIntegerMul() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(1);
 
@@ -131,7 +130,7 @@
   }
 
   @Test
-  public void evaluateFloatsShouldReturnFloatMul() throws Exception {
+  public void evaluateFloatsShouldReturnFloatMul() {
     Token<Float> l = mock(Token.class);
     when(l.getValue()).thenReturn(1F);
 
@@ -147,7 +146,7 @@
   }
 
   @Test
-  public void evaluateLongsShouldReturnLongMul() throws Exception {
+  public void evaluateLongsShouldReturnLongMul() {
     Token<Long> l = mock(Token.class);
     when(l.getValue()).thenReturn(1L);
 
@@ -163,7 +162,7 @@
   }
 
   @Test
-  public void evaluateDoubleShouldReturnDoubleSub() throws Exception {
+  public void evaluateDoubleShouldReturnDoubleSub() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(1);
 
@@ -179,7 +178,7 @@
   }
 
   @Test
-  public void evaluateIntegerShouldReturnIntegerSub() throws Exception {
+  public void evaluateIntegerShouldReturnIntegerSub() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(1);
 
@@ -195,7 +194,7 @@
   }
 
   @Test
-  public void evaluateFloatsShouldReturnFloatSub() throws Exception {
+  public void evaluateFloatsShouldReturnFloatSub() {
     Token<Float> l = mock(Token.class);
     when(l.getValue()).thenReturn(1F);
 
@@ -211,7 +210,7 @@
   }
 
   @Test
-  public void evaluateLongsShouldReturnLongSub() throws Exception {
+  public void evaluateLongsShouldReturnLongSub() {
     Token<Long> l = mock(Token.class);
     when(l.getValue()).thenReturn(1L);
 
@@ -227,7 +226,7 @@
   }
 
   @Test
-  public void evaluateDoubleShouldReturnDoubleDiv() throws Exception {
+  public void evaluateDoubleShouldReturnDoubleDiv() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(1);
 
@@ -243,7 +242,7 @@
   }
 
   @Test
-  public void evaluateIntegerShouldReturnIntegerDiv() throws Exception {
+  public void evaluateIntegerShouldReturnIntegerDiv() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(1);
 
@@ -259,7 +258,7 @@
   }
 
   @Test
-  public void evaluateFloatsShouldReturnFloatDiv() throws Exception {
+  public void evaluateFloatsShouldReturnFloatDiv() {
     Token<Float> l = mock(Token.class);
     when(l.getValue()).thenReturn(1F);
 
@@ -275,7 +274,7 @@
   }
 
   @Test
-  public void evaluateLongsShouldReturnLongDiv() throws Exception {
+  public void evaluateLongsShouldReturnLongDiv() {
     Token<Long> l = mock(Token.class);
     when(l.getValue()).thenReturn(1L);
 
@@ -290,25 +289,35 @@
     assertEquals(0L, evaluated.getValue());
   }
 
-  @Test(expected = IllegalArgumentException.class)
-  public void evaluateShouldThroughIllegalArgumentExceptionWhenInputIsNull() throws Exception {
-    evaluator.evaluate(ArithmeticEvaluator.ArithmeticEvaluatorFunctions.division(null), null);
-  }
-
-  @Test(expected = IllegalArgumentException.class)
-  public void evaluateShouldThroughIllegalArgumentExceptionWhenInputsKeyIsNull() throws Exception {
-    Pair<Token<? extends Number>, Token<? extends Number>> p = Pair.of(null, mock(Token.class));
-    evaluator.evaluate(ArithmeticEvaluator.ArithmeticEvaluatorFunctions.division(null), p);
-  }
-
-  @Test(expected = IllegalArgumentException.class)
-  public void evaluateShouldThroughIllegalArgumentExceptionWhenInputsValueIsNull() throws Exception {
-    Pair<Token<? extends Number>, Token<? extends Number>> p = Pair.of(mock(Token.class), null);
-    evaluator.evaluate(ArithmeticEvaluator.ArithmeticEvaluatorFunctions.division(null), p);
+  @Test
+  public void evaluateShouldThroughIllegalArgumentExceptionWhenInputIsNull() {
+    assertThrows(
+        IllegalArgumentException.class,
+        () ->
+            evaluator.evaluate(
+                ArithmeticEvaluator.ArithmeticEvaluatorFunctions.division(null), null));
   }
 
   @Test
-  public void evaluateShouldConvertShortsToIntegersType() throws Exception {
+  public void evaluateShouldThroughIllegalArgumentExceptionWhenInputsKeyIsNull() {
+    Pair<Token<? extends Number>, Token<? extends Number>> p = Pair.of(null, mock(Token.class));
+    assertThrows(
+        IllegalArgumentException.class,
+        () ->
+            evaluator.evaluate(ArithmeticEvaluator.ArithmeticEvaluatorFunctions.division(null), p));
+  }
+
+  @Test
+  public void evaluateShouldThroughIllegalArgumentExceptionWhenInputsValueIsNull() {
+    Pair<Token<? extends Number>, Token<? extends Number>> p = Pair.of(mock(Token.class), null);
+    assertThrows(
+        IllegalArgumentException.class,
+        () ->
+            evaluator.evaluate(ArithmeticEvaluator.ArithmeticEvaluatorFunctions.division(null), p));
+  }
+
+  @Test
+  public void evaluateShouldConvertShortsToIntegersType() {
     Token<Short> l = mock(Token.class);
     when(l.getValue()).thenReturn((short) 2);
 
@@ -334,7 +343,7 @@
   }
 
   @Test
-  public void evaluateIntegerShouldReturnIntegerWhenLeftsValueIsNull() throws Exception {
+  public void evaluateIntegerShouldReturnIntegerWhenLeftsValueIsNull() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(null);
 
@@ -350,7 +359,7 @@
   }
 
   @Test
-  public void evaluateIntegerShouldReturnIntegerWhenRightsValueIsNull() throws Exception {
+  public void evaluateIntegerShouldReturnIntegerWhenRightsValueIsNull() {
     Token<Integer> l = mock(Token.class);
     when(l.getValue()).thenReturn(1);
 
@@ -366,7 +375,7 @@
   }
 
   @Test
-  public void verifyExpectedReturnTypes() throws Exception {
+  public void verifyExpectedReturnTypes() {
     Token<Integer> integer = mock(Token.class);
     when(integer.getValue()).thenReturn(1);
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ComparisonExpressionWithOperatorEvaluatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ComparisonExpressionWithOperatorEvaluatorTest.java
index 4afd4df..5fd74c4 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ComparisonExpressionWithOperatorEvaluatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ComparisonExpressionWithOperatorEvaluatorTest.java
@@ -19,32 +19,21 @@
 package org.apache.metron.stellar.common.evaluators;
 
 import org.antlr.v4.runtime.tree.TerminalNode;
+import org.apache.metron.stellar.common.generated.StellarParser;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.Token;
-import org.apache.metron.stellar.common.generated.StellarParser;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-import org.junit.runner.RunWith;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.junit4.PowerMockRunner;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.powermock.api.mockito.PowerMockito.mock;
-import static org.powermock.api.mockito.PowerMockito.when;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 @SuppressWarnings({"unchecked"})
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({ComparisonExpressionWithOperatorEvaluator.class, ComparisonExpressionWithOperatorEvaluator.Strategy.class})
 public class ComparisonExpressionWithOperatorEvaluatorTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   final ComparisonExpressionWithOperatorEvaluator evaluator = ComparisonExpressionWithOperatorEvaluator.INSTANCE;
 
   @Test
-  public void evaluateEqShouldProperlyCallEqualityOperatorsEvaluator() throws Exception {
+  public void evaluateEqShouldProperlyCallEqualityOperatorsEvaluator() {
     Token<Double> left = mock(Token.class);
     when(left.getValue()).thenReturn(1D);
 
@@ -60,7 +49,7 @@
   }
 
   @Test
-  public void evaluateNotEqShouldProperlyCallEqualityOperatorsEvaluator() throws Exception {
+  public void evaluateNotEqShouldProperlyCallEqualityOperatorsEvaluator() {
     Token<Double> left = mock(Token.class);
     when(left.getValue()).thenReturn(1D);
 
@@ -76,7 +65,7 @@
   }
 
   @Test
-  public void evaluateLessThanEqShouldProperlyCallEqualityOperatorsEvaluator() throws Exception {
+  public void evaluateLessThanEqShouldProperlyCallEqualityOperatorsEvaluator() {
     Token<Double> left = mock(Token.class);
     when(left.getValue()).thenReturn(0D);
 
@@ -92,10 +81,7 @@
   }
 
   @Test
-  public void unexpectedOperatorShouldThrowException() throws Exception {
-    exception.expect(ParseException.class);
-    exception.expectMessage("Unsupported operations. The following expression is invalid: ");
-
+  public void unexpectedOperatorShouldThrowException() {
     Token<Double> left = mock(Token.class);
     when(left.getValue()).thenReturn(0D);
 
@@ -104,14 +90,12 @@
 
     StellarParser.ComparisonOpContext op = mock(StellarParser.ComparisonOpContext.class);
 
-    evaluator.evaluate(left, right, op, null);
+    ParseException e = assertThrows(ParseException.class, () -> evaluator.evaluate(left, right, op, null));
+    assertTrue(e.getMessage().contains("Unsupported operations. The following expression is invalid: "));
   }
 
   @Test
-  public void nonExpectedOperatorShouldThrowException() throws Exception {
-    exception.expect(ParseException.class);
-    exception.expectMessage("Unsupported operations. The following expression is invalid: ");
-
+  public void nonExpectedOperatorShouldThrowException() {
     Token<String> left = mock(Token.class);
     when(left.getValue()).thenReturn("adsf");
 
@@ -121,6 +105,7 @@
     StellarParser.ComparisonOpContext op = mock(StellarParser.ComparisonOpContext.class);
     when(op.LTE()).thenReturn(mock(TerminalNode.class));
 
-    evaluator.evaluate(left, right, op, null);
+    ParseException e = assertThrows(ParseException.class, () -> evaluator.evaluate(left, right, op, null));
+    assertTrue(e.getMessage().contains("Unsupported operations. The following expression is invalid: "));
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ComparisonOperatorsEvaluatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ComparisonOperatorsEvaluatorTest.java
index 29da1ed..35283b5 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ComparisonOperatorsEvaluatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/ComparisonOperatorsEvaluatorTest.java
@@ -19,35 +19,30 @@
 package org.apache.metron.stellar.common.evaluators;
 
 import org.antlr.v4.runtime.tree.TerminalNode;
+import org.apache.metron.stellar.common.generated.StellarParser;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.Token;
-import org.apache.metron.stellar.common.generated.StellarParser;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.Serializable;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 @SuppressWarnings("ALL")
 public class ComparisonOperatorsEvaluatorTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   ComparisonExpressionEvaluator evaluator;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     evaluator = new ComparisonOperatorsEvaluator();
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void nonSupportedOperatorThrowsExceptionNonNumbericComparable() throws Exception {
+  public void nonSupportedOperatorThrowsExceptionNonNumbericComparable() {
     Token<String> left = mock(Token.class);
     when(left.getValue()).thenReturn("b");
 
@@ -56,15 +51,13 @@
 
     StellarParser.ComparisonOpContext op = mock(StellarParser.ComparisonOpContext.class);
 
-    exception.expect(ParseException.class);
-    exception.expectMessage("Unsupported operator: " + op);
-
-    evaluator.evaluate(left, right, op);
+    ParseException e = assertThrows(ParseException.class, () -> evaluator.evaluate(left, right, op));
+    assertTrue(e.getMessage().contains("Unsupported operator: "));
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void nonSupportedOperatorThrowsExceptionNumbericComparison() throws Exception {
+  public void nonSupportedOperatorThrowsExceptionNumbericComparison() {
     Token<Long> left = mock(Token.class);
     when(left.getValue()).thenReturn(1L);
 
@@ -73,15 +66,13 @@
 
     StellarParser.ComparisonOpContext op = mock(StellarParser.ComparisonOpContext.class);
 
-    exception.expect(ParseException.class);
-    exception.expectMessage("Unsupported operator: " + op);
-
-    evaluator.evaluate(left, right, op);
+    ParseException e = assertThrows(ParseException.class, () -> evaluator.evaluate(left, right, op));
+    assertTrue(e.getMessage().contains("Unsupported operator: "));
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void leftIsNullThenThrowException() throws Exception {
+  public void leftIsNullThenThrowException() {
     Token<Long> left = mock(Token.class);
     Token<Long> right = mock(Token.class);
     when(right.getValue()).thenReturn(1L);
@@ -94,7 +85,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void rightIsNullThenReturnFalse() throws Exception {
+  public void rightIsNullThenReturnFalse() {
     Token<Long> left = mock(Token.class);
     when(left.getValue()).thenReturn(1L);
     Token<Long> right = mock(Token.class);
@@ -107,7 +98,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void rightAndLeftIsNullThenReturnFalse() throws Exception {
+  public void rightAndLeftIsNullThenReturnFalse() {
     Token<Long> left = mock(Token.class);
     Token<Long> right = mock(Token.class);
 
@@ -119,10 +110,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void throwParseExceptionWhenTryingToCompareNonComparable() throws Exception {
-    exception.expect(ParseException.class);
-    exception.expectMessage("Unsupported operations. The following expression is invalid: ");
-
+  public void throwParseExceptionWhenTryingToCompareNonComparable() {
     Token<Serializable> left = mock(Token.class);
     when(left.getValue()).thenReturn(mock(Serializable.class));
 
@@ -132,12 +120,13 @@
     StellarParser.ComparisonOpContext op = mock(StellarParser.ComparisonOpContext.class);
     when(op.LT()).thenReturn(mock(TerminalNode.class));
 
-    evaluator.evaluate(left, right, op);
+    ParseException e = assertThrows(ParseException.class, () -> evaluator.evaluate(left, right, op));
+    assertTrue(e.getMessage().contains("Unsupported operations. The following expression is invalid: "));
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsProperlyWorkForLongs() throws Exception {
+  public void makeSureAllOperatorsProperlyWorkForLongs() {
     Token<Long> left = mock(Token.class);
     when(left.getValue()).thenReturn(0L);
 
@@ -168,7 +157,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsProperlyWorkForDoubles() throws Exception {
+  public void makeSureAllOperatorsProperlyWorkForDoubles() {
     Token<Double> left = mock(Token.class);
     when(left.getValue()).thenReturn(0D);
 
@@ -199,7 +188,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsProperlyWorkForFloats() throws Exception {
+  public void makeSureAllOperatorsProperlyWorkForFloats() {
     Token<Float> left = mock(Token.class);
     when(left.getValue()).thenReturn(0F);
 
@@ -230,7 +219,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsProperlyWorkForInts() throws Exception {
+  public void makeSureAllOperatorsProperlyWorkForInts() {
     Token<Integer> left = mock(Token.class);
     when(left.getValue()).thenReturn(0);
 
@@ -261,7 +250,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsWorkForMixedTypesDoublesLong() throws Exception {
+  public void makeSureAllOperatorsWorkForMixedTypesDoublesLong() {
     Token<Long> left = mock(Token.class);
     when(left.getValue()).thenReturn(1L);
 
@@ -292,7 +281,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsWorkForMixedTypesDoublesFloat() throws Exception {
+  public void makeSureAllOperatorsWorkForMixedTypesDoublesFloat() {
     final double leftValue = 1.0000001D;
     final float rightValue = 1.0000001F;
 
@@ -326,7 +315,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsWorkForMixedTypesFloatIntegers() throws Exception {
+  public void makeSureAllOperatorsWorkForMixedTypesFloatIntegers() {
     final int leftValue = 1;
     final float rightValue = 1.0000001F;
 
@@ -360,7 +349,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsWorkForMixedTypesFloatIntegers2() throws Exception {
+  public void makeSureAllOperatorsWorkForMixedTypesFloatIntegers2() {
     final int leftValue = 1;
     final float rightValue = 1.00000001F;
 
@@ -394,7 +383,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsWorkForMixedTypesLongIntegers() throws Exception {
+  public void makeSureAllOperatorsWorkForMixedTypesLongIntegers() {
     final int leftValue = 1;
     final long rightValue = 3L;
 
@@ -428,7 +417,7 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void makeSureAllOperatorsWorkForNonIntegerComparableTypes() throws Exception {
+  public void makeSureAllOperatorsWorkForNonIntegerComparableTypes() {
     final String leftValue = "a";
     final String rightValue = "b";
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/DoubleLiteralEvaluatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/DoubleLiteralEvaluatorTest.java
index 44c48d0..03b2375 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/DoubleLiteralEvaluatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/DoubleLiteralEvaluatorTest.java
@@ -18,31 +18,27 @@
 
 package org.apache.metron.stellar.common.evaluators;
 
-import org.apache.metron.stellar.dsl.Token;
 import org.apache.metron.stellar.common.generated.StellarParser;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.apache.metron.stellar.dsl.Token;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.mockito.Mockito.*;
 
 public class DoubleLiteralEvaluatorTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   NumberEvaluator<StellarParser.DoubleLiteralContext> evaluator;
   StellarParser.DoubleLiteralContext context;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     evaluator = new DoubleLiteralEvaluator();
     context = mock(StellarParser.DoubleLiteralContext.class);
   }
 
   @Test
-  public void verifyHappyPathEvaluation() throws Exception {
+  public void verifyHappyPathEvaluation() {
     when(context.getText()).thenReturn("100D");
 
     Token<? extends Number> evaluated = evaluator.evaluate(context, null);
@@ -53,18 +49,14 @@
   }
 
   @Test
-  public void verifyNumberFormationExceptionWithEmptyString() throws Exception {
-    exception.expect(NumberFormatException.class);
-
+  public void verifyNumberFormationExceptionWithEmptyString() {
     when(context.getText()).thenReturn("");
-    evaluator.evaluate(context, null);
+    assertThrows(NumberFormatException.class, () -> evaluator.evaluate(context, null));
   }
 
   @Test
-  public void throwIllegalArgumentExceptionWhenContextIsNull() throws Exception {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("Cannot evaluate a context that is null.");
-
-    evaluator.evaluate(null, null);
+  public void throwIllegalArgumentExceptionWhenContextIsNull() {
+    IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> evaluator.evaluate(null, null));
+    assertEquals("Cannot evaluate a context that is null.", e.getMessage());
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/EqualityOperatorsEvaluatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/EqualityOperatorsEvaluatorTest.java
index 34708ff..0a9b65d 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/EqualityOperatorsEvaluatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/EqualityOperatorsEvaluatorTest.java
@@ -19,13 +19,13 @@
 package org.apache.metron.stellar.common.evaluators;
 
 import org.antlr.v4.runtime.tree.TerminalNode;
-import org.apache.metron.stellar.dsl.Token;
 import org.apache.metron.stellar.common.generated.StellarParser;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.metron.stellar.dsl.Token;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -33,13 +33,13 @@
 public class EqualityOperatorsEvaluatorTest {
   ComparisonExpressionEvaluator evaluator;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     evaluator = new EqualityOperatorsEvaluator();
   }
 
   @Test
-  public void leftAndRightNullShouldBeTrue() throws Exception {
+  public void leftAndRightNullShouldBeTrue() {
     Token<Double> left = mock(Token.class);
     when(left.getValue()).thenReturn(null);
 
@@ -55,7 +55,7 @@
   }
 
   @Test
-  public void leftNullAndRightNotShouldBeFalse() throws Exception {
+  public void leftNullAndRightNotShouldBeFalse() {
     Token<Double> left = mock(Token.class);
     when(left.getValue()).thenReturn(null);
 
@@ -71,7 +71,7 @@
   }
 
   @Test
-  public void leftNotNullAndRightNullShouldBeFalse() throws Exception {
+  public void leftNotNullAndRightNullShouldBeFalse() {
     Token<Double> left = mock(Token.class);
     when(left.getValue()).thenReturn(1D);
 
@@ -87,7 +87,7 @@
   }
 
   @Test
-  public void eqTestForTwoLongs() throws Exception {
+  public void eqTestForTwoLongs() {
     Token<Long> left = mock(Token.class);
     when(left.getValue()).thenReturn(1L);
 
@@ -101,7 +101,7 @@
   }
 
   @Test
-  public void eqTestForTwoDoubles() throws Exception {
+  public void eqTestForTwoDoubles() {
     Token<Double> left = mock(Token.class);
     when(left.getValue()).thenReturn(1D);
 
@@ -115,7 +115,7 @@
   }
 
   @Test
-  public void eqTestForTwoFloats() throws Exception {
+  public void eqTestForTwoFloats() {
     Token<Float> left = mock(Token.class);
     when(left.getValue()).thenReturn(1F);
 
@@ -129,7 +129,7 @@
   }
 
   @Test
-  public void eqTestForTwoIntegers() throws Exception {
+  public void eqTestForTwoIntegers() {
     Token<Integer> left = mock(Token.class);
     when(left.getValue()).thenReturn(1);
 
@@ -143,7 +143,7 @@
   }
 
   @Test
-  public void eqTestForTwoStrings() throws Exception {
+  public void eqTestForTwoStrings() {
     Token<String> left = mock(Token.class);
     when(left.getValue()).thenReturn("1");
 
@@ -157,7 +157,7 @@
   }
 
   @Test
-  public void eqTestForUnlikeTypes() throws Exception {
+  public void eqTestForUnlikeTypes() {
     Token<String> left = mock(Token.class);
     when(left.getValue()).thenReturn("1");
 
@@ -171,7 +171,7 @@
   }
 
   @Test
-  public void eqTestForUnlikeTypesLongString() throws Exception {
+  public void eqTestForUnlikeTypesLongString() {
     Token<Long> left = mock(Token.class);
     when(left.getValue()).thenReturn(1L);
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/FloatLiteralEvaluatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/FloatLiteralEvaluatorTest.java
index cfcf33e..2b4c9c3 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/FloatLiteralEvaluatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/FloatLiteralEvaluatorTest.java
@@ -18,34 +18,27 @@
 
 package org.apache.metron.stellar.common.evaluators;
 
-import org.apache.metron.stellar.dsl.Token;
 import org.apache.metron.stellar.common.generated.StellarParser;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.apache.metron.stellar.dsl.Token;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
 
 public class FloatLiteralEvaluatorTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   NumberEvaluator<StellarParser.FloatLiteralContext> evaluator;
   StellarParser.FloatLiteralContext context;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     evaluator = new FloatLiteralEvaluator();
     context = mock(StellarParser.FloatLiteralContext.class);
   }
 
   @Test
-  public void verifyHappyPathEvaluation() throws Exception {
+  public void verifyHappyPathEvaluation() {
     when(context.getText()).thenReturn("100f");
 
     Token<? extends Number> evaluated = evaluator.evaluate(context, null);
@@ -56,19 +49,15 @@
   }
 
   @Test
-  public void verifyNumberFormationExceptionWithEmptyString() throws Exception {
-    exception.expect(NumberFormatException.class);
-
+  public void verifyNumberFormationExceptionWithEmptyString() {
     when(context.getText()).thenReturn("");
-    evaluator.evaluate(context, null);
+    assertThrows(NumberFormatException.class, () -> evaluator.evaluate(context, null));
   }
 
   @Test
-  public void throwIllegalArgumentExceptionWhenContextIsNull() throws Exception {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("Cannot evaluate a context that is null.");
-
-    evaluator.evaluate(null, null);
+  public void throwIllegalArgumentExceptionWhenContextIsNull() {
+    IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> evaluator.evaluate(null, null));
+    assertEquals("Cannot evaluate a context that is null.", e.getMessage());
   }
 
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/IntLiteralEvaluatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/IntLiteralEvaluatorTest.java
index 2e0ebed..ddad64c 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/IntLiteralEvaluatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/IntLiteralEvaluatorTest.java
@@ -18,34 +18,27 @@
 
 package org.apache.metron.stellar.common.evaluators;
 
-import org.apache.metron.stellar.dsl.Token;
 import org.apache.metron.stellar.common.generated.StellarParser;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.apache.metron.stellar.dsl.Token;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
 
 public class IntLiteralEvaluatorTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   NumberEvaluator<StellarParser.IntLiteralContext> evaluator;
   StellarParser.IntLiteralContext context;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     evaluator = new IntLiteralEvaluator();
     context = mock(StellarParser.IntLiteralContext.class);
   }
 
   @Test
-  public void verifyHappyPathEvaluation() throws Exception {
+  public void verifyHappyPathEvaluation() {
     when(context.getText()).thenReturn("100");
 
     Token<? extends Number> evaluated = evaluator.evaluate(context, null);
@@ -56,19 +49,15 @@
   }
 
   @Test
-  public void verifyNumberFormationExceptionWithEmptyString() throws Exception {
-    exception.expect(NumberFormatException.class);
-
+  public void verifyNumberFormationExceptionWithEmptyString() {
     when(context.getText()).thenReturn("");
-    evaluator.evaluate(context, null);
+    assertThrows(NumberFormatException.class, () -> evaluator.evaluate(context, null));
   }
 
   @Test
-  public void throwIllegalArgumentExceptionWhenContextIsNull() throws Exception {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("Cannot evaluate a context that is null.");
-
-    evaluator.evaluate(null, null);
+  public void throwIllegalArgumentExceptionWhenContextIsNull() {
+    IllegalArgumentException e = assertThrows(IllegalArgumentException.class, () -> evaluator.evaluate(null, null));
+    assertEquals("Cannot evaluate a context that is null.", e.getMessage());
   }
 
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/LongLiteralEvaluatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/LongLiteralEvaluatorTest.java
index 4bd94ce..7cbed6b 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/LongLiteralEvaluatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/LongLiteralEvaluatorTest.java
@@ -18,35 +18,28 @@
 
 package org.apache.metron.stellar.common.evaluators;
 
+import org.apache.metron.stellar.common.generated.StellarParser;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.Token;
-import org.apache.metron.stellar.common.generated.StellarParser;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyNoMoreInteractions;
-import static org.mockito.Mockito.when;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
 
 public class LongLiteralEvaluatorTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   NumberEvaluator<StellarParser.LongLiteralContext> evaluator;
   StellarParser.LongLiteralContext context;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     evaluator = new LongLiteralEvaluator();
     context = mock(StellarParser.LongLiteralContext.class);
   }
 
   @Test
-  public void verifyHappyPathEvaluation() throws Exception {
+  public void verifyHappyPathEvaluation() {
     when(context.getText()).thenReturn("100L");
 
     Token<? extends Number> evaluated = evaluator.evaluate(context, null);
@@ -57,19 +50,18 @@
   }
 
   @Test
-  public void verifyNumberFormationExceptionWithEmptyString() throws Exception {
-    exception.expect(ParseException.class);
-    exception.expectMessage("Invalid format for long. Failed trying to parse a long with the following value: ");
-
+  public void verifyNumberFormationExceptionWithEmptyString() {
     when(context.getText()).thenReturn("");
-    evaluator.evaluate(context, null);
+    Exception e = assertThrows(ParseException.class, () -> evaluator.evaluate(context, null));
+    assertEquals(
+        "Invalid format for long. Failed trying to parse a long with the following value: ",
+        e.getMessage());
   }
 
   @Test
-  public void throwIllegalArgumentExceptionWhenContextIsNull() throws Exception {
-    exception.expect(IllegalArgumentException.class);
-    exception.expectMessage("Cannot evaluate a context that is null.");
-
-    evaluator.evaluate(null, null);
+  public void throwIllegalArgumentExceptionWhenContextIsNull() {
+    Exception e =
+        assertThrows(IllegalArgumentException.class, () -> evaluator.evaluate(null, null));
+    assertEquals("Cannot evaluate a context that is null.", e.getMessage());
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/NumberLiteralEvaluatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/NumberLiteralEvaluatorTest.java
index a250068..76f4364 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/NumberLiteralEvaluatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/evaluators/NumberLiteralEvaluatorTest.java
@@ -18,19 +18,17 @@
 
 package org.apache.metron.stellar.common.evaluators;
 
-import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.common.generated.StellarParser;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.apache.metron.stellar.dsl.ParseException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.*;
 
 public class NumberLiteralEvaluatorTest {
   NumberEvaluator<StellarParser.IntLiteralContext> intLiteralContextNumberEvaluator;
@@ -40,10 +38,7 @@
 
   Map<Class<? extends StellarParser.Arithmetic_operandsContext>, NumberEvaluator> instanceMap;
 
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     intLiteralContextNumberEvaluator = mock(IntLiteralEvaluator.class);
     doubleLiteralContextNumberEvaluator = mock(DoubleLiteralEvaluator.class);
@@ -58,50 +53,48 @@
   }
 
   @Test
-  public void verifyIntLiteralContextIsProperlyEvaluated() throws Exception {
+  public void verifyIntLiteralContextIsProperlyEvaluated() {
     StellarParser.IntLiteralContext context = mock(StellarParser.IntLiteralContext.class);
     NumberLiteralEvaluator.INSTANCE.evaluate(context, instanceMap, null);
 
     verify(intLiteralContextNumberEvaluator).evaluate(context, null);
-    verifyZeroInteractions(doubleLiteralContextNumberEvaluator, floatLiteralContextNumberEvaluator, longLiteralContextNumberEvaluator);
+    verifyNoInteractions(doubleLiteralContextNumberEvaluator, floatLiteralContextNumberEvaluator, longLiteralContextNumberEvaluator);
   }
 
   @Test
-  public void verifyDoubleLiteralContextIsProperlyEvaluated() throws Exception {
+  public void verifyDoubleLiteralContextIsProperlyEvaluated() {
     StellarParser.DoubleLiteralContext context = mock(StellarParser.DoubleLiteralContext.class);
     NumberLiteralEvaluator.INSTANCE.evaluate(context, instanceMap, null);
 
     verify(doubleLiteralContextNumberEvaluator).evaluate(context, null);
-    verifyZeroInteractions(intLiteralContextNumberEvaluator, floatLiteralContextNumberEvaluator, longLiteralContextNumberEvaluator);
+    verifyNoInteractions(intLiteralContextNumberEvaluator, floatLiteralContextNumberEvaluator, longLiteralContextNumberEvaluator);
   }
 
   @Test
-  public void verifyFloatLiteralContextIsProperlyEvaluated() throws Exception {
+  public void verifyFloatLiteralContextIsProperlyEvaluated() {
     StellarParser.FloatLiteralContext context = mock(StellarParser.FloatLiteralContext.class);
     NumberLiteralEvaluator.INSTANCE.evaluate(context, instanceMap, null);
 
     verify(floatLiteralContextNumberEvaluator).evaluate(context, null);
-    verifyZeroInteractions(doubleLiteralContextNumberEvaluator, intLiteralContextNumberEvaluator, longLiteralContextNumberEvaluator);
+    verifyNoInteractions(doubleLiteralContextNumberEvaluator, intLiteralContextNumberEvaluator, longLiteralContextNumberEvaluator);
   }
 
   @Test
-  public void verifyLongLiteralContextIsProperlyEvaluated() throws Exception {
+  public void verifyLongLiteralContextIsProperlyEvaluated() {
     StellarParser.LongLiteralContext context = mock(StellarParser.LongLiteralContext.class);
     NumberLiteralEvaluator.INSTANCE.evaluate(context, instanceMap, null);
 
     verify(longLiteralContextNumberEvaluator).evaluate(context, null);
-    verifyZeroInteractions(doubleLiteralContextNumberEvaluator, floatLiteralContextNumberEvaluator, intLiteralContextNumberEvaluator);
+    verifyNoInteractions(doubleLiteralContextNumberEvaluator, floatLiteralContextNumberEvaluator, intLiteralContextNumberEvaluator);
   }
 
   @Test
-  public void verifyExceptionThrownForUnsupportedContextType() throws Exception {
+  public void verifyExceptionThrownForUnsupportedContextType() {
     StellarParser.VariableContext context = mock(StellarParser.VariableContext.class);
 
-    exception.expect(ParseException.class);
-    exception.expectMessage("Does not support evaluation for type " + context.getClass());
+    ParseException e = assertThrows(ParseException.class, () -> NumberLiteralEvaluator.INSTANCE.evaluate(context, instanceMap, null));
+    assertEquals("Does not support evaluation for type " + context.getClass(), e.getMessage());
 
-    NumberLiteralEvaluator.INSTANCE.evaluate(context, instanceMap, null);
-
-    verifyZeroInteractions(longLiteralContextNumberEvaluator, doubleLiteralContextNumberEvaluator, floatLiteralContextNumberEvaluator, intLiteralContextNumberEvaluator);
+    verifyNoInteractions(longLiteralContextNumberEvaluator, doubleLiteralContextNumberEvaluator, floatLiteralContextNumberEvaluator, intLiteralContextNumberEvaluator);
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/network/NetworkFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/network/NetworkFunctionsTest.java
index 59a7b5b..5d1c48b 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/network/NetworkFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/network/NetworkFunctionsTest.java
@@ -18,8 +18,7 @@
 package org.apache.metron.stellar.common.network;
 
 import com.google.common.collect.ImmutableList;
-import org.junit.Test;
-
+import org.junit.jupiter.api.Test;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runWithArguments;
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/DefaultStellarAutoCompleterTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/DefaultStellarAutoCompleterTest.java
index 0d9d5e1..23e918b 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/DefaultStellarAutoCompleterTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/DefaultStellarAutoCompleterTest.java
@@ -20,19 +20,14 @@
 package org.apache.metron.stellar.common.shell;
 
 import com.google.common.collect.Lists;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.List;
 
-import static org.hamcrest.CoreMatchers.*;
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.Matchers.contains;
 import static org.hamcrest.MatcherAssert.assertThat;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.hamcrest.core.IsIterableContaining.hasItem;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Tests the DefaultStellarAutoCompleter class.
@@ -41,7 +36,7 @@
 
   DefaultStellarAutoCompleter completer;
 
-  @Before
+  @BeforeEach
   public void setup() {
     completer = new DefaultStellarAutoCompleter();
   }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/DefaultStellarShellExecutorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/DefaultStellarShellExecutorTest.java
index 23b0204..6669396 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/DefaultStellarShellExecutorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/DefaultStellarShellExecutorTest.java
@@ -20,19 +20,12 @@
 package org.apache.metron.stellar.common.shell;
 
 import com.google.common.collect.ImmutableMap;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.Properties;
+import java.util.*;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the DefaultStellarShellExecutor class.
@@ -42,7 +35,7 @@
   DefaultStellarShellExecutor executor;
   boolean notified;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     Properties props = new Properties();
     executor = new DefaultStellarShellExecutor(props, Optional.empty());
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/StellarResultTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/StellarResultTest.java
index 6431ee3..f38efe8 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/StellarResultTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/StellarResultTest.java
@@ -19,12 +19,9 @@
  */
 package org.apache.metron.stellar.common.shell;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class StellarResultTest {
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/cli/StellarShellOptionsValidatorTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/cli/StellarShellOptionsValidatorTest.java
index 8ca0959..6c95a60 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/cli/StellarShellOptionsValidatorTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/cli/StellarShellOptionsValidatorTest.java
@@ -24,11 +24,12 @@
 import org.apache.commons.cli.CommandLineParser;
 import org.apache.commons.cli.Options;
 import org.apache.commons.cli.PosixParser;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class StellarShellOptionsValidatorTest {
 
   @Test
@@ -96,89 +97,77 @@
     StellarShellOptionsValidator.validateOptions(commandLine);
     // these should not
 
-    boolean thrown = false;
+    assertThrows(
+        IllegalArgumentException.class,
+        () -> {
+          CommandLine cl = parser.parse(options, invalidZNameArg);
+          StellarShellOptionsValidator.validateOptions(cl);
+        },
+        "Did not catch failure for providing invalid host name ");
 
+    assertThrows(
+        IllegalArgumentException.class,
+        () -> {
+          CommandLine cl = parser.parse(options, invalidZIPArg);
+          StellarShellOptionsValidator.validateOptions(cl);
+        },
+        "Did not catch failure for providing invalid ip address ");
 
-    try {
-      commandLine = parser.parse(options, invalidZNameArg);
-      StellarShellOptionsValidator.validateOptions(commandLine);
-    } catch (IllegalArgumentException e) {
-      thrown = true;
-    }
-    Assert.assertTrue("Did not catch failure for providing invalid host name ", thrown);
-    thrown = false;
+    assertThrows(
+        IllegalArgumentException.class,
+        () -> {
+          CommandLine cl = parser.parse(options, invalidZMissingNameArg);
+          StellarShellOptionsValidator.validateOptions(cl);
+        },
+        "Did not catch failure for only providing port ");
 
-    try {
-      commandLine = parser.parse(options, invalidZIPArg);
-      StellarShellOptionsValidator.validateOptions(commandLine);
-    } catch (IllegalArgumentException e) {
-      thrown = true;
-    }
-    Assert.assertTrue("Did not catch failure for providing invalid ip address ", thrown);
-    thrown = false;
+    assertThrows(
+        IllegalArgumentException.class,
+        () -> {
+          CommandLine cl = parser.parse(options, invalidZZeroPortArg);
+          StellarShellOptionsValidator.validateOptions(cl);
+        },
+        "Did not catch failure for 0 port ");
 
-    try {
-      commandLine = parser.parse(options, invalidZMissingNameArg);
-      StellarShellOptionsValidator.validateOptions(commandLine);
-    } catch (IllegalArgumentException e) {
-      thrown = true;
-    }
-    Assert.assertTrue("Did not catch failure for only providing port ", thrown);
-    thrown = false;
+    assertThrows(
+        IllegalArgumentException.class,
+        () -> {
+          CommandLine cl = parser.parse(options, invalidZHugePortArg);
+          StellarShellOptionsValidator.validateOptions(cl);
+        },
+        "Did not catch failure for port out of range ");
 
-    try {
-      commandLine = parser.parse(options, invalidZZeroPortArg);
-      StellarShellOptionsValidator.validateOptions(commandLine);
-    } catch (IllegalArgumentException e) {
-      thrown = true;
-    }
-    Assert.assertTrue("Did not catch failure for 0 port ", thrown);
-    thrown = false;
+    assertThrows(
+        IllegalArgumentException.class,
+        () -> {
+          CommandLine cl = parser.parse(options, invalidVFileArg);
+          StellarShellOptionsValidator.validateOptions(cl);
+        },
+        "Did not catch failure for passing non-existant file to -v ");
 
-    try {
-      commandLine = parser.parse(options, invalidZHugePortArg);
-      StellarShellOptionsValidator.validateOptions(commandLine);
-    } catch (IllegalArgumentException e) {
-      thrown = true;
-    }
-    Assert.assertTrue("Did not catch failure for port out of range ", thrown);
-    thrown = false;
+    assertThrows(
+        IllegalArgumentException.class,
+        () -> {
+          CommandLine cl = parser.parse(options, invalidVFileArg);
+          StellarShellOptionsValidator.validateOptions(cl);
+        },
+        "Did not catch failure for passing non-existant file to -v ");
 
-    try {
-      commandLine = parser.parse(options, invalidVFileArg);
-      StellarShellOptionsValidator.validateOptions(commandLine);
-    } catch (IllegalArgumentException e) {
-      thrown = true;
-    }
-    Assert.assertTrue("Did not catch failure for passing non-existant file to -v ", thrown);
-    thrown = false;
+    assertThrows(
+        IllegalArgumentException.class,
+        () -> {
+          CommandLine cl = parser.parse(options, invalidIrcFileArg);
+          StellarShellOptionsValidator.validateOptions(cl);
+        },
+        "Did not catch failure for passing non-existant file to -irc ");
 
-    try {
-      commandLine = parser.parse(options, invalidVFileArg);
-      StellarShellOptionsValidator.validateOptions(commandLine);
-    } catch (IllegalArgumentException e) {
-      thrown = true;
-    }
-    Assert.assertTrue("Did not catch failure for passing non-existant file to -v ", thrown);
-    thrown = false;
-
-    try {
-      commandLine = parser.parse(options, invalidIrcFileArg);
-      StellarShellOptionsValidator.validateOptions(commandLine);
-    } catch (IllegalArgumentException e) {
-      thrown = true;
-    }
-    Assert.assertTrue("Did not catch failure for passing non-existant file to -irc ", thrown);
-    thrown = false;
-
-    try {
-      commandLine = parser.parse(options, invalidPFileArg);
-      StellarShellOptionsValidator.validateOptions(commandLine);
-    } catch (IllegalArgumentException e) {
-      thrown = true;
-    }
-    Assert.assertTrue("Did not catch failure for passing non-existant file to -p ", thrown);
-    thrown = false;
+    assertThrows(
+        IllegalArgumentException.class,
+        () -> {
+          CommandLine cl = parser.parse(options, invalidPFileArg);
+          StellarShellOptionsValidator.validateOptions(cl);
+        },
+        "Did not catch failure for passing non-existant file to -p ");
   }
 
 }
\ No newline at end of file
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/cli/StellarShellTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/cli/StellarShellTest.java
index 29262b7..0e0636f 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/cli/StellarShellTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/cli/StellarShellTest.java
@@ -18,23 +18,21 @@
 package org.apache.metron.stellar.common.shell.cli;
 
 import com.google.common.collect.Iterables;
-import java.nio.charset.StandardCharsets;
 import org.jboss.aesh.complete.CompleteOperation;
 import org.jboss.aesh.console.AeshContext;
 import org.jboss.aesh.console.ConsoleOperation;
 import org.jboss.aesh.console.operator.ControlOperator;
 import org.jboss.aesh.console.settings.DefaultAeshContext;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintStream;
+import java.nio.charset.StandardCharsets;
 import java.util.List;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the StellarShell class.
@@ -45,7 +43,7 @@
   private ByteArrayOutputStream out;
   private ByteArrayOutputStream err;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     out = new ByteArrayOutputStream();
@@ -59,7 +57,7 @@
     stellarShell = new StellarShell(args);
   }
 
-  @After
+  @AfterEach
   public void cleanUp() {
     System.setOut(null);
     System.setErr(null);
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/AssignmentCommandTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/AssignmentCommandTest.java
index 9a05efb..65297ab 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/AssignmentCommandTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/AssignmentCommandTest.java
@@ -20,21 +20,18 @@
 package org.apache.metron.stellar.common.shell.specials;
 
 import org.apache.metron.stellar.common.shell.DefaultStellarShellExecutor;
-import org.apache.metron.stellar.common.shell.StellarShellExecutor;
 import org.apache.metron.stellar.common.shell.StellarResult;
+import org.apache.metron.stellar.common.shell.StellarShellExecutor;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.*;
 
 
 /**
@@ -45,7 +42,7 @@
   AssignmentCommand command;
   StellarShellExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     command = new AssignmentCommand();
 
@@ -69,7 +66,7 @@
             " x := "
     );
     for(String in : inputs) {
-      assertTrue("failed: " + in, command.getMatcher().apply(in));
+      assertTrue(command.getMatcher().apply(in), "failed: " + in);
     }
   }
 
@@ -81,7 +78,7 @@
             "x"
     );
     for(String in : inputs) {
-      assertFalse("failed: " + in, command.getMatcher().apply(in));
+      assertFalse(command.getMatcher().apply(in), "failed: " + in);
     }
   }
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/CommentTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/CommentTest.java
index 0bd5baa..4068f4d 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/CommentTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/CommentTest.java
@@ -21,24 +21,22 @@
 
 import org.apache.metron.stellar.common.shell.DefaultStellarShellExecutor;
 import org.apache.metron.stellar.common.shell.StellarResult;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class CommentTest {
 
   Comment magic;
   DefaultStellarShellExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // setup the %magic
@@ -63,7 +61,7 @@
             "      #comment"
     );
     for(String in : inputs) {
-      assertTrue("failed: " + in, magic.getMatcher().apply(in));
+      assertTrue(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
@@ -75,7 +73,7 @@
             "bar"
     );
     for(String in : inputs) {
-      assertFalse("failed: " + in, magic.getMatcher().apply(in));
+      assertFalse(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/DocCommandTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/DocCommandTest.java
index c3a39c4..759801d 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/DocCommandTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/DocCommandTest.java
@@ -23,20 +23,20 @@
 import org.apache.metron.stellar.common.shell.StellarResult;
 import org.apache.metron.stellar.dsl.functions.StringFunctions;
 import org.apache.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Optional;
 import java.util.Properties;
 
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class DocCommandTest {
 
   DocCommand command;
   DefaultStellarShellExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // setup the command
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicDefineGlobalTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicDefineGlobalTest.java
index 4749103..41f4fb3 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicDefineGlobalTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicDefineGlobalTest.java
@@ -23,24 +23,22 @@
 import org.apache.metron.stellar.common.shell.DefaultStellarShellExecutor;
 import org.apache.metron.stellar.common.shell.StellarResult;
 import org.apache.metron.stellar.common.utils.ConversionUtils;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MagicDefineGlobalTest {
 
   MagicDefineGlobal magic;
   DefaultStellarShellExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // setup the %magic
@@ -66,7 +64,7 @@
             "    %define   x := 2 "
     );
     for(String in : inputs) {
-      assertTrue("failed: " + in, magic.getMatcher().apply(in));
+      assertTrue(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
@@ -78,7 +76,7 @@
             "bar"
     );
     for(String in : inputs) {
-      assertFalse("failed: " + in, magic.getMatcher().apply(in));
+      assertFalse(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListFunctionsTest.java
index 204f9a3..1fe189a 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListFunctionsTest.java
@@ -24,24 +24,22 @@
 import org.apache.metron.stellar.common.utils.ConversionUtils;
 import org.apache.metron.stellar.dsl.functions.StringFunctions;
 import org.apache.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MagicListFunctionsTest {
 
   MagicListFunctions magic;
   DefaultStellarShellExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // setup the %magic
@@ -73,7 +71,7 @@
             "    %functions    FOO "
     );
     for(String in : inputs) {
-      assertTrue("failed: " + in, magic.getMatcher().apply(in));
+      assertTrue(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
@@ -86,7 +84,7 @@
             "%define"
     );
     for(String in : inputs) {
-      assertFalse("failed: " + in, magic.getMatcher().apply(in));
+      assertFalse(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListGlobalsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListGlobalsTest.java
index f02bfdb..3c30f13 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListGlobalsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListGlobalsTest.java
@@ -22,24 +22,22 @@
 import org.apache.metron.stellar.common.shell.DefaultStellarShellExecutor;
 import org.apache.metron.stellar.common.shell.StellarResult;
 import org.apache.metron.stellar.common.utils.ConversionUtils;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MagicListGlobalsTest {
 
   MagicListGlobals magic;
   DefaultStellarShellExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // setup the %magic
@@ -65,7 +63,7 @@
             "    %globals    FOO "
     );
     for(String in : inputs) {
-      assertTrue("failed: " + in, magic.getMatcher().apply(in));
+      assertTrue(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
@@ -78,7 +76,7 @@
             "%define"
     );
     for(String in : inputs) {
-      assertFalse("failed: " + in, magic.getMatcher().apply(in));
+      assertFalse(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListVariablesTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListVariablesTest.java
index 51ef0ac..f183f66 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListVariablesTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicListVariablesTest.java
@@ -22,24 +22,22 @@
 import org.apache.metron.stellar.common.shell.DefaultStellarShellExecutor;
 import org.apache.metron.stellar.common.shell.StellarResult;
 import org.apache.metron.stellar.common.utils.ConversionUtils;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MagicListVariablesTest {
 
   MagicListVariables magic;
   DefaultStellarShellExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // setup the %magic
@@ -65,7 +63,7 @@
             "    %vars    FOO "
     );
     for(String in : inputs) {
-      assertTrue("failed: " + in, magic.getMatcher().apply(in));
+      assertTrue(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
@@ -78,7 +76,7 @@
             "%define"
     );
     for(String in : inputs) {
-      assertFalse("failed: " + in, magic.getMatcher().apply(in));
+      assertFalse(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicUndefineGlobalTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicUndefineGlobalTest.java
index 4db02f4..9e9cc78 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicUndefineGlobalTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/shell/specials/MagicUndefineGlobalTest.java
@@ -21,24 +21,22 @@
 
 import org.apache.metron.stellar.common.shell.DefaultStellarShellExecutor;
 import org.apache.metron.stellar.common.shell.StellarResult;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.Arrays;
 import java.util.List;
 import java.util.Optional;
 import java.util.Properties;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MagicUndefineGlobalTest {
 
   MagicUndefineGlobal magic;
   DefaultStellarShellExecutor executor;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // setup the %magic
@@ -64,7 +62,7 @@
             "    %undefine    FOO "
     );
     for(String in : inputs) {
-      assertTrue("failed: " + in, magic.getMatcher().apply(in));
+      assertTrue(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
@@ -77,7 +75,7 @@
             "%define"
     );
     for(String in : inputs) {
-      assertFalse("failed: " + in, magic.getMatcher().apply(in));
+      assertFalse(magic.getMatcher().apply(in), "failed: " + in);
     }
   }
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/system/ClockTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/system/ClockTest.java
index 2f4d3b6..85f7dd4 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/system/ClockTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/system/ClockTest.java
@@ -17,7 +17,7 @@
  */
 package org.apache.metron.stellar.common.system;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 import org.mockito.Mockito;
 
 import java.text.SimpleDateFormat;
@@ -25,7 +25,7 @@
 import java.util.TimeZone;
 
 import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class ClockTest {
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/BloomFilterTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/BloomFilterTest.java
index 2e56510..3599f6b 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/BloomFilterTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/BloomFilterTest.java
@@ -21,13 +21,13 @@
 
 import com.google.common.collect.ImmutableMap;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class BloomFilterTest {
   private Map<String, Object> variables = new HashMap<String, Object>() {{
@@ -52,9 +52,9 @@
                                                           ,"mapFilter", bloomMap
                                                           )
                                          );
-    Assert.assertNotNull(merged);
+    assertNotNull(merged);
     for(Object val : variables.values()) {
-      Assert.assertTrue(merged.mightContain(val));
+      assertTrue(merged.mightContain(val));
     }
   }
 
@@ -63,32 +63,32 @@
   public void testAdd() {
     BloomFilter result = (BloomFilter)run("BLOOM_ADD(BLOOM_INIT(), string, double, integer, map)", variables);
     for(Object val : variables.values()) {
-      Assert.assertTrue(result.mightContain(val));
+      assertTrue(result.mightContain(val));
     }
-    Assert.assertTrue(result.mightContain(ImmutableMap.of("key1", "value1", "key2", "value2")));
+    assertTrue(result.mightContain(ImmutableMap.of("key1", "value1", "key2", "value2")));
   }
 
   @Test
   public void testExists() {
     {
       Boolean result = (Boolean) run("BLOOM_EXISTS(BLOOM_ADD(BLOOM_INIT(), string, double, integer, map), 'casey')", variables);
-      Assert.assertTrue(result);
+      assertTrue(result);
     }
     {
       Boolean result = (Boolean) run("BLOOM_EXISTS(BLOOM_ADD(BLOOM_INIT(), string, double, integer, map), double)", variables);
-      Assert.assertTrue(result);
+      assertTrue(result);
     }
     {
       Boolean result = (Boolean) run("BLOOM_EXISTS(BLOOM_ADD(BLOOM_INIT(), string, double, integer, map), integer)", variables);
-      Assert.assertTrue(result);
+      assertTrue(result);
     }
     {
       Boolean result = (Boolean) run("BLOOM_EXISTS(BLOOM_ADD(BLOOM_INIT(), string, double, integer, map), map)", variables);
-      Assert.assertTrue(result);
+      assertTrue(result);
     }
     {
       Boolean result = (Boolean) run("BLOOM_EXISTS(BLOOM_ADD(BLOOM_INIT(), string, double, integer, map), 'samantha')", variables);
-      Assert.assertFalse(result);
+      assertFalse(result);
     }
     {
       boolean thrown = false;
@@ -97,7 +97,7 @@
       }catch(ParseException pe){
         thrown = true;
       }
-      Assert.assertTrue(thrown);
+      assertTrue(thrown);
     }
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/ConcatMapTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/ConcatMapTest.java
index 4c078e8..67ab2ca 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/ConcatMapTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/ConcatMapTest.java
@@ -17,18 +17,19 @@
  */
 package org.apache.metron.stellar.common.utils;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
 public class ConcatMapTest {
 
   @Test
-  public void testToString() throws Exception {
+  public void testToString() {
     Map<String, Object> v1 = new HashMap<>();
     v1.put("k1", "v1");
     Map<String, Object> v2 = new HashMap<>();
@@ -39,7 +40,7 @@
       put("k2", "v2");
     }};
     ConcatMap c = create(v1, v2);
-    Assert.assertEquals(c.toString(), union.toString());
+    assertEquals(c.toString(), union.toString());
   }
 
   private ConcatMap create(Map... ms) {
@@ -53,7 +54,7 @@
   private void assertKryoserializable(ConcatMap c) {
     byte[] serialized = SerDeUtils.toBytes(c);
     ConcatMap deserialized = SerDeUtils.fromBytes(serialized, ConcatMap.class);
-    Assert.assertEquals(deserialized, c);
+    assertEquals(deserialized, c);
   }
 
   @Test
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/ConversionUtilsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/ConversionUtilsTest.java
index c45dec3..e46dc64 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/ConversionUtilsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/ConversionUtilsTest.java
@@ -18,18 +18,19 @@
 
 package org.apache.metron.stellar.common.utils;
 
-import org.apache.metron.stellar.common.utils.ConversionUtils;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class ConversionUtilsTest {
 
   @Test
   public void testIntegerConversions() {
     Object o = 1;
-    Assert.assertEquals(Integer.valueOf(1), ConversionUtils.convert(o, Integer.class));
-    Assert.assertEquals(Integer.valueOf(1), ConversionUtils.convert("1", Integer.class));
-    Assert.assertNull(ConversionUtils.convert("foo", Integer.class));
+    assertEquals(Integer.valueOf(1), ConversionUtils.convert(o, Integer.class));
+    assertEquals(Integer.valueOf(1), ConversionUtils.convert("1", Integer.class));
+    assertNull(ConversionUtils.convert("foo", Integer.class));
   }
 
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/JSONUtilsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/JSONUtilsTest.java
index 214d078..f18b781 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/JSONUtilsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/JSONUtilsTest.java
@@ -18,15 +18,15 @@
 package org.apache.metron.stellar.common.utils;
 
 import org.adrianwalker.multilinestring.Multiline;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.util.HashMap;
 import java.util.Map;
 
 import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.MatcherAssert.assertThat;
 
 public class JSONUtilsTest {
   private static File tmpDir;
@@ -41,7 +41,7 @@
   private static String config;
   private static File configFile;
 
-  @BeforeClass
+  @BeforeAll
   public static void setUp() throws Exception {
     tmpDir = UnitTestHelper.createTempDir(new File("target/jsonutilstest"));
     configFile = UnitTestHelper.write(new File(tmpDir, "config.json"), config);
@@ -54,7 +54,7 @@
       put("b", "world");
     }};
     Map<String, Object> actual = JSONUtils.INSTANCE.load(configFile, JSONUtils.MAP_SUPPLIER);
-    Assert.assertThat("config not equal", actual, equalTo(expected));
+    assertThat("config not equal", actual, equalTo(expected));
   }
 
   @Test
@@ -65,15 +65,15 @@
       put("b", "world");
     }};
     Map<String, Object> actual = JSONUtils.INSTANCE.load(configFile, Map.class);
-    Assert.assertThat("config not equal", actual, equalTo(expected));
+    assertThat("config not equal", actual, equalTo(expected));
   }
 
   @Test
   public void loads_file_with_custom_class() throws Exception {
     TestConfig expected = new TestConfig().setA("hello").setB("world");
     TestConfig actual = JSONUtils.INSTANCE.load(configFile, TestConfig.class);
-    Assert.assertThat("a not equal", actual.getA(), equalTo(expected.getA()));
-    Assert.assertThat("b not equal", actual.getB(), equalTo(expected.getB()));
+    assertThat("a not equal", actual.getA(), equalTo(expected.getA()));
+    assertThat("b not equal", actual.getB(), equalTo(expected.getB()));
   }
 
   public static class TestConfig {
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/SerDeUtilsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/SerDeUtilsTest.java
index f3b6eb5..29f921f 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/SerDeUtilsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/SerDeUtilsTest.java
@@ -21,15 +21,14 @@
 package org.apache.metron.stellar.common.utils;
 
 import com.google.common.collect.ImmutableList;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the Serializer.
@@ -129,8 +128,8 @@
     expected.add("bar");
     byte[] raw = SerDeUtils.toBytes(expected);
     BloomFilter<Object> actual = (BloomFilter) SerDeUtils.fromBytes(raw, Object.class);
-    Assert.assertTrue(actual.mightContain("foo"));
-    Assert.assertFalse(actual.mightContain("timothy"));
+    assertTrue(actual.mightContain("foo"));
+    assertFalse(actual.mightContain("timothy"));
     assertEquals(expected, actual);
   }
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/UnitTestHelper.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/UnitTestHelper.java
index ae0856a..0754c28 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/UnitTestHelper.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/UnitTestHelper.java
@@ -21,7 +21,6 @@
 import org.apache.log4j.Level;
 import org.apache.log4j.Logger;
 import org.apache.log4j.PatternLayout;
-import org.junit.Assert;
 
 import java.io.File;
 import java.io.IOException;
@@ -35,6 +34,7 @@
 import java.util.Stack;
 
 import static java.lang.String.format;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 public class UnitTestHelper {
   public static String findDir(String name) {
@@ -42,7 +42,7 @@
   }
 
   public static String findDir(File startDir, String name) {
-    Stack<File> s = new Stack<File>();
+    Stack<File> s = new Stack<>();
     s.push(startDir);
     while (!s.empty()) {
       File parent = s.pop();
@@ -74,7 +74,7 @@
         System.out.println("Expected " + type + " that I did not index: " + expectedId);
       }
     }
-    Assert.assertFalse(mismatch);
+    assertFalse(mismatch);
   }
 
   public static void verboseLogging() {
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/hashing/DefaultHasherTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/hashing/DefaultHasherTest.java
index 6ab2184..aa13cbf 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/hashing/DefaultHasherTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/common/utils/hashing/DefaultHasherTest.java
@@ -20,15 +20,15 @@
 import org.apache.commons.codec.BinaryEncoder;
 import org.apache.commons.codec.binary.Hex;
 import org.apache.commons.lang3.StringUtils;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.nio.charset.Charset;
 import java.nio.charset.StandardCharsets;
 import java.util.Collection;
 import java.util.Collections;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 
 public class DefaultHasherTest {
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/BasicStellarTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/BasicStellarTest.java
index c2f5ca0..0f452b7 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/BasicStellarTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/BasicStellarTest.java
@@ -18,40 +18,25 @@
 
 package org.apache.metron.stellar.dsl.functions;
 
-import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
-import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
-import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.validate;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.junit.Assert.assertThat;
-
 import com.google.common.base.Joiner;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.metron.stellar.common.StellarProcessor;
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
-import org.apache.metron.stellar.dsl.Context;
-import org.apache.metron.stellar.dsl.DefaultVariableResolver;
-import org.apache.metron.stellar.dsl.MapVariableResolver;
-import org.apache.metron.stellar.dsl.ParseException;
-import org.apache.metron.stellar.dsl.Stellar;
-import org.apache.metron.stellar.dsl.StellarFunction;
-import org.apache.metron.stellar.dsl.VariableResolver;
+import org.apache.metron.stellar.dsl.*;
 import org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver;
-import org.junit.Assert;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.Disabled;
+import org.junit.jupiter.api.Test;
+
+import java.util.*;
+
+import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.*;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
+
 
 @SuppressWarnings("ALL")
 public class BasicStellarTest {
@@ -118,54 +103,54 @@
       if (clazz.isAnnotationPresent(Stellar.class)) {
         numFound++;
         Stellar annotation = clazz.getAnnotation(Stellar.class);
-        Assert.assertFalse("Must specify a name for " + clazz.getName(),StringUtils.isEmpty(annotation.name()));
-        Assert.assertFalse("Must specify a description annotation for " + clazz.getName(),StringUtils.isEmpty(annotation.description()));
-        Assert.assertFalse("Must specify a returns annotation for " + clazz.getName(), StringUtils.isEmpty(annotation.returns()));
+        assertFalse(StringUtils.isEmpty(annotation.name()), "Must specify a name for " + clazz.getName());
+        assertFalse(StringUtils.isEmpty(annotation.description()), "Must specify a description annotation for " + clazz.getName());
+        assertFalse(StringUtils.isEmpty(annotation.returns()), "Must specify a returns annotation for " + clazz.getName());
       }
     }
-    Assert.assertTrue(numFound > 0);
+    assertTrue(numFound > 0);
   }
 
   @Test
   public void testEscapedLiterals() {
-    Assert.assertEquals("'bar'", run("\"'bar'\"", new HashMap<>()));
-    Assert.assertEquals("'BAR'", run("TO_UPPER('\\'bar\\'')", new HashMap<>()));
-    Assert.assertEquals("\"bar\"", run("\"\\\"bar\\\"\"", new HashMap<>()));
-    Assert.assertEquals("\"bar\"", run("'\"bar\"'", new HashMap<>()));
-    Assert.assertEquals("\"BAR\"", run("TO_UPPER(\"\\\"bar\\\"\")", new HashMap<>()));
-    Assert.assertEquals("bar \\ foo", run("'bar \\\\ foo'", new HashMap<>()));
-    Assert.assertEquals("bar \\\\ foo", run("'bar \\\\\\\\ foo'", new HashMap<>()));
-    Assert.assertEquals("bar\nfoo", run("'bar\\nfoo'", new HashMap<>()));
-    Assert.assertEquals("bar\n\nfoo", run("'bar\\n\\nfoo'", new HashMap<>()));
-    Assert.assertEquals("bar\tfoo", run("'bar\\tfoo'", new HashMap<>()));
-    Assert.assertEquals("bar\t\tfoo", run("'bar\\t\\tfoo'", new HashMap<>()));
-    Assert.assertEquals("bar\rfoo", run("'bar\\rfoo'", new HashMap<>()));
-    Assert.assertEquals("'bar'", run("'\\'bar\\''", new HashMap<>()));
+    assertEquals("'bar'", run("\"'bar'\"", new HashMap<>()));
+    assertEquals("'BAR'", run("TO_UPPER('\\'bar\\'')", new HashMap<>()));
+    assertEquals("\"bar\"", run("\"\\\"bar\\\"\"", new HashMap<>()));
+    assertEquals("\"bar\"", run("'\"bar\"'", new HashMap<>()));
+    assertEquals("\"BAR\"", run("TO_UPPER(\"\\\"bar\\\"\")", new HashMap<>()));
+    assertEquals("bar \\ foo", run("'bar \\\\ foo'", new HashMap<>()));
+    assertEquals("bar \\\\ foo", run("'bar \\\\\\\\ foo'", new HashMap<>()));
+    assertEquals("bar\nfoo", run("'bar\\nfoo'", new HashMap<>()));
+    assertEquals("bar\n\nfoo", run("'bar\\n\\nfoo'", new HashMap<>()));
+    assertEquals("bar\tfoo", run("'bar\\tfoo'", new HashMap<>()));
+    assertEquals("bar\t\tfoo", run("'bar\\t\\tfoo'", new HashMap<>()));
+    assertEquals("bar\rfoo", run("'bar\\rfoo'", new HashMap<>()));
+    assertEquals("'bar'", run("'\\'bar\\''", new HashMap<>()));
   }
 
   @Test
   public void testVariableResolution() {
     {
       String query = "bar:variable";
-      Assert.assertEquals("bar", run(query, ImmutableMap.of("bar:variable", "bar")));
-      Assert.assertEquals("grok", run(query, ImmutableMap.of("bar:variable", "grok")));
+      assertEquals("bar", run(query, ImmutableMap.of("bar:variable", "bar")));
+      assertEquals("grok", run(query, ImmutableMap.of("bar:variable", "grok")));
     }
     {
       String query = "JOIN(['foo', bar:variable], '')";
-      Assert.assertEquals("foobar", run(query, ImmutableMap.of("bar:variable", "bar")));
-      Assert.assertEquals("foogrok", run(query, ImmutableMap.of("bar:variable", "grok")));
+      assertEquals("foobar", run(query, ImmutableMap.of("bar:variable", "bar")));
+      assertEquals("foogrok", run(query, ImmutableMap.of("bar:variable", "grok")));
     }
     {
       String query = "MAP_GET('bar', { 'foo' : 1, 'bar' : bar:variable})";
-      Assert.assertEquals("bar", run(query, ImmutableMap.of("bar:variable", "bar")));
-      Assert.assertEquals("grok", run(query, ImmutableMap.of("bar:variable", "grok")));
+      assertEquals("bar", run(query, ImmutableMap.of("bar:variable", "bar")));
+      assertEquals("grok", run(query, ImmutableMap.of("bar:variable", "grok")));
     }
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testMissingVariablesWithParse() {
     String query = "someVar";
-    run(query,new HashMap<>());
+    assertThrows(ParseException.class, () -> run(query,new HashMap<>()));
   }
 
   @Test
@@ -180,10 +165,10 @@
     Context context = Context.EMPTY_CONTEXT();
 
     validate(query,context);
-    Assert.assertNull(context.getActivityType());
+    assertNull(context.getActivityType());
 
     run(query,ImmutableMap.of("someVar","someValue"),context);
-    Assert.assertNull(context.getActivityType());
+    assertNull(context.getActivityType());
 
 
   }
@@ -191,43 +176,43 @@
   @Test
   public void testIfThenElseBug1() {
     String query = "50 + (true == true ? 10 : 20)";
-    Assert.assertEquals(60, run(query, new HashMap<>()));
+    assertEquals(60, run(query, new HashMap<>()));
   }
 
   @Test
   public void testIfThenElseBug2() {
     String query = "50 + (true == false ? 10 : 20)";
-    Assert.assertEquals(70, run(query, new HashMap<>()));
+    assertEquals(70, run(query, new HashMap<>()));
   }
 
   @Test
   public void testIfThenElseBug3() {
     String query = "50 * (true == false ? 2 : 10) + 20";
-    Assert.assertEquals(520, run(query, new HashMap<>()));
+    assertEquals(520, run(query, new HashMap<>()));
   }
 
   @Test
   public void testIfThenElseBug4() {
     String query = "TO_INTEGER(true == true ? 10.0 : 20.0 )";
-    Assert.assertEquals(10, run(query, new HashMap<>()));
+    assertEquals(10, run(query, new HashMap<>()));
   }
 
   @Test
   public void testVariablesUsed() {
     StellarProcessor processor = new StellarProcessor();
     {
-      Assert.assertEquals(new HashSet<>(), processor.variablesUsed("if 1 < 2 then 'one' else 'two'"));
+      assertEquals(new HashSet<>(), processor.variablesUsed("if 1 < 2 then 'one' else 'two'"));
     }
     {
-      Assert.assertEquals(ImmutableSet.of("one")
+      assertEquals(ImmutableSet.of("one")
                          , processor.variablesUsed("if 1 < 2 then one else 'two'"));
     }
     {
-      Assert.assertEquals(ImmutableSet.of("one", "two")
+      assertEquals(ImmutableSet.of("one", "two")
                          , processor.variablesUsed("if 1 < 2 then one else two"));
     }
     {
-      Assert.assertEquals(ImmutableSet.of("bar")
+      assertEquals(ImmutableSet.of("bar")
                          , processor.variablesUsed("MAP_GET('foo', { 'foo' : bar})"));
     }
   }
@@ -238,9 +223,9 @@
     {
       String query = "{ ( RET_TRUE() && y < 50 ) : 'info', y >= 50 : 'warn'}";
       Map<Boolean, String> ret = (Map)run(query, ImmutableMap.of("y", 50));
-      Assert.assertEquals(ret.size(), 2);
-      Assert.assertEquals("warn", ret.get(true));
-      Assert.assertEquals("info", ret.get(false));
+      assertEquals(ret.size(), 2);
+      assertEquals("warn", ret.get(true));
+      assertEquals("info", ret.get(false));
     }
   }
 
@@ -249,7 +234,7 @@
   public void testConditionalsAsFunctionArgs() {
     {
       String query = "RET_TRUE(y < 10)";
-      Assert.assertTrue((boolean)run(query, ImmutableMap.of("y", 50)));
+      assertTrue((boolean)run(query, ImmutableMap.of("y", 50)));
     }
   }
 
@@ -257,30 +242,30 @@
   public void testFunctionEmptyArgs() {
     {
       String query = "STARTS_WITH(casey, 'case') or MAP_EXISTS()";
-      Assert.assertTrue((Boolean)run(query, ImmutableMap.of("casey", "casey")));
+      assertTrue((Boolean)run(query, ImmutableMap.of("casey", "casey")));
     }
     {
       String query = "true or MAP_EXISTS()";
-      Assert.assertTrue((Boolean)run(query, new HashMap<>()));
+      assertTrue((Boolean)run(query, new HashMap<>()));
     }
     {
       String query = "MAP_EXISTS() or true";
-      Assert.assertTrue((Boolean)run(query, new HashMap<>()));
+      assertTrue((Boolean)run(query, new HashMap<>()));
     }
   }
   @Test
   public void testNull() {
     {
       String query = "if 1 < 2 then NULL else true";
-      Assert.assertNull(run(query, new HashMap<>()));
+      assertNull(run(query, new HashMap<>()));
     }
     {
       String query = "1 < 2 ? NULL : true";
-      Assert.assertNull(run(query, new HashMap<>()));
+      assertNull(run(query, new HashMap<>()));
     }
     {
       String query = "null == null ? true : false";
-      Assert.assertTrue((Boolean)run(query, new HashMap<>()));
+      assertTrue((Boolean)run(query, new HashMap<>()));
     }
   }
 
@@ -290,133 +275,133 @@
     // https://docs.oracle.com/javase/specs/jls/se6/html/typesValues.html
     {
       String query = "NaN == NaN";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "5.0 == NaN";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NULL == NaN";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "'metron' == NaN";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
 
     // any inequity is true
     {
       String query = "NaN != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "5 != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "'metron' != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
 
     //  any > >= < <= is false
     {
       String query = "NaN > 5";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN < 5";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN >= 5";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN <= 5";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN > NaN";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN < NaN";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN >= NaN";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN <= NaN";
-      Assert.assertFalse(runPredicate(query,new HashMap<>()));
+      assertFalse(runPredicate(query,new HashMap<>()));
     }
 
     // all operations
     {
       String query = "(5 + NaN) != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "5 + NaN";
-      Assert.assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
+      assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
     }
     {
       String query = "(5 - NaN) != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "5 - NaN";
-      Assert.assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
+      assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
     }
     {
       String query = "(5 / NaN) != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "5 / NaN";
-      Assert.assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
+      assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
     }
     {
       String query = "(5 * NaN) != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "5 * NaN";
-      Assert.assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
+      assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
     }
     {
       String query = "(NaN + NaN) != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN + NaN";
-      Assert.assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
+      assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
     }
     {
       String query = "(NaN - NaN) != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN - NaN";
-      Assert.assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
+      assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
     }
     {
       String query = "(NaN * NaN) != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN * NaN";
-      Assert.assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
+      assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
     }
     {
       String query = "(NaN / NaN) != NaN";
-      Assert.assertTrue(runPredicate(query,new HashMap<>()));
+      assertTrue(runPredicate(query,new HashMap<>()));
     }
     {
       String query = "NaN / NaN";
-      Assert.assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
+      assertTrue(run(query,new HashMap<>()).toString().equals("NaN"));
     }
   }
 
@@ -424,31 +409,31 @@
   public void testMapConstant() {
     {
       String query = "MAP_GET('bar', { 'foo' : 1, 'bar' : 'bar'})";
-      Assert.assertEquals("bar", run(query, new HashMap<>()));
+      assertEquals("bar", run(query, new HashMap<>()));
     }
     {
       String query = "MAP_GET('blah', {  'blah' : 1 < 2 })";
-      Assert.assertEquals(true, run(query, new HashMap<>()));
+      assertEquals(true, run(query, new HashMap<>()));
     }
     {
       String query = "MAP_GET('blah', {  'blah' : not(STARTS_WITH(casey, 'case')) })";
-      Assert.assertEquals(false, run(query, ImmutableMap.of("casey", "casey")));
+      assertEquals(false, run(query, ImmutableMap.of("casey", "casey")));
     }
     {
       String query = "MAP_GET('blah', {  'blah' : one })";
-      Assert.assertEquals(1, run(query, ImmutableMap.of("one", 1)));
+      assertEquals(1, run(query, ImmutableMap.of("one", 1)));
     }
     {
       String query = "MAP_GET('blah', {  'blah' : null })";
-      Assert.assertNull(run(query, new HashMap<>()));
+      assertNull(run(query, new HashMap<>()));
     }
     {
       String query = "MAP_GET('BLAH', {  TO_UPPER('blah') : null })";
-      Assert.assertNull(run(query, new HashMap<>()));
+      assertNull(run(query, new HashMap<>()));
     }
     {
       String query = "MAP_GET('BLAH', {  TO_UPPER('blah') : 1 < 2 })";
-      Assert.assertEquals(true, run(query, new HashMap<>()));
+      assertEquals(true, run(query, new HashMap<>()));
     }
   }
 
@@ -456,107 +441,107 @@
   public void testIfThenElse() {
     {
       String query = "if STARTS_WITH(casey, 'case') then 'one' else 'two'";
-      Assert.assertEquals("one", run(query, ImmutableMap.of("casey", "casey")));
+      assertEquals("one", run(query, ImmutableMap.of("casey", "casey")));
     }
     {
       String query = "if 1 < 2 then 'one' else 'two'";
-      Assert.assertEquals("one", run(query, new HashMap<>()));
+      assertEquals("one", run(query, new HashMap<>()));
     }
     {
       String query = "if 1 + 1 < 2 then 'one' else 'two'";
-      Assert.assertEquals("two", run(query, new HashMap<>()));
+      assertEquals("two", run(query, new HashMap<>()));
     }
     {
       String query = "if 1 + 1 <= 2 AND 1 + 2 in [3] then 'one' else 'two'";
-      Assert.assertEquals("one", run(query, new HashMap<>()));
+      assertEquals("one", run(query, new HashMap<>()));
     }
     {
       String query = "if 1 + 1 <= 2 AND (1 + 2 in [3]) then 'one' else 'two'";
-      Assert.assertEquals("one", run(query, new HashMap<>()));
+      assertEquals("one", run(query, new HashMap<>()));
     }
     {
       String query = "if not(1 < 2) then 'one' else 'two'";
-      Assert.assertEquals("two", run(query, new HashMap<>()));
+      assertEquals("two", run(query, new HashMap<>()));
     }
     {
       String query = "if 1 == 1.0000001 then 'one' else 'two'";
-      Assert.assertEquals("two", run(query, new HashMap<>()));
+      assertEquals("two", run(query, new HashMap<>()));
     }
     {
       String query = "if one < two then 'one' else 'two'";
-      Assert.assertEquals("one", run(query, ImmutableMap.of("one", 1, "two", 2)));
+      assertEquals("one", run(query, ImmutableMap.of("one", 1, "two", 2)));
     }
     {
       String query = "if one == very_nearly_one then 'one' else 'two'";
-      Assert.assertEquals("two", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
+      assertEquals("two", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
     }
     {
       String query = "if one == very_nearly_one OR one == very_nearly_one then 'one' else 'two'";
-      Assert.assertEquals("two", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
+      assertEquals("two", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
     }
     {
       String query = "if one == very_nearly_one OR one != very_nearly_one then 'one' else 'two'";
-      Assert.assertEquals("one", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
+      assertEquals("one", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
     }
     {
       String query = "if one != very_nearly_one OR one == very_nearly_one then 'one' else 'two'";
-      Assert.assertEquals("one", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
+      assertEquals("one", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
     }
     {
       String query = "if 'foo' in ['foo'] OR one == very_nearly_one then 'one' else 'two'";
-      Assert.assertEquals("one", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
+      assertEquals("one", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
     }
     {
       String query = "if ('foo' in ['foo']) OR one == very_nearly_one then 'one' else 'two'";
-      Assert.assertEquals("one", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
+      assertEquals("one", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
     }
     {
       String query = "if not('foo' in ['foo']) OR one == very_nearly_one then 'one' else 'two'";
-      Assert.assertEquals("two", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
+      assertEquals("two", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
     }
     {
       String query = "if not('foo' in ['foo'] OR one == very_nearly_one) then 'one' else 'two'";
-      Assert.assertEquals("two", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
+      assertEquals("two", run(query, ImmutableMap.of("one", 1, "very_nearly_one", 1.0000001)));
     }
     {
       String query = "1 < 2 ? 'one' : 'two'";
-      Assert.assertEquals("one", run(query, new HashMap<>()));
+      assertEquals("one", run(query, new HashMap<>()));
     }
     {
       String query = "1 < 2 ? TO_UPPER('one') : 'two'";
-      Assert.assertEquals("ONE", run(query, new HashMap<>()));
+      assertEquals("ONE", run(query, new HashMap<>()));
     }
     {
       String query = "1 < 2 ? one : 'two'";
-      Assert.assertEquals("one", run(query, ImmutableMap.of("one", "one")));
+      assertEquals("one", run(query, ImmutableMap.of("one", "one")));
     }
     {
       String query = "1 < 2 ? one*3 : 'two'";
-      Assert.assertTrue(Math.abs(3 - (int) run(query, ImmutableMap.of("one", 1))) < 1e-6);
+      assertTrue(Math.abs(3 - (int) run(query, ImmutableMap.of("one", 1))) < 1e-6);
     }
     {
       String query = "1 < 2 AND 1 < 2 ? one*3 : 'two'";
-      Assert.assertTrue(Math.abs(3 - (int) run(query, ImmutableMap.of("one", 1))) < 1e-6);
+      assertTrue(Math.abs(3 - (int) run(query, ImmutableMap.of("one", 1))) < 1e-6);
     }
     {
       String query = "1 < 2 AND 1 > 2 ? one*3 : 'two'";
-      Assert.assertEquals("two", run(query, ImmutableMap.of("one", 1)));
+      assertEquals("two", run(query, ImmutableMap.of("one", 1)));
     }
     {
       String query = "1 > 2 AND 1 < 2 ? one*3 : 'two'";
-      Assert.assertEquals("two", run(query, ImmutableMap.of("one", 1)));
+      assertEquals("two", run(query, ImmutableMap.of("one", 1)));
     }
     {
       String query = "1 < 2 AND 'foo' in ['', 'foo'] ? one*3 : 'two'";
-      Assert.assertEquals(3, run(query, ImmutableMap.of("one", 1)));
+      assertEquals(3, run(query, ImmutableMap.of("one", 1)));
     }
     {
       String query = "1 < 2 AND ('foo' in ['', 'foo']) ? one*3 : 'two'";
-      Assert.assertEquals(3, run(query, ImmutableMap.of("one", 1)));
+      assertEquals(3, run(query, ImmutableMap.of("one", 1)));
     }
     {
       String query = "'foo' in ['', 'foo'] ? one*3 : 'two'";
-      Assert.assertEquals(3, run(query, ImmutableMap.of("one", 1)));
+      assertEquals(3, run(query, ImmutableMap.of("one", 1)));
     }
   }
 
@@ -570,76 +555,76 @@
     }catch(ParseException pe) {
       thrown = true;
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     try{
-      Assert.assertEquals(true,run("'in' in ['','in']" ,variables ));
+      assertEquals(true,run("'in' in ['','in']" ,variables ));
     }catch(ParseException pe) {
       thrown = true;
     }
-    Assert.assertFalse(thrown);
+    assertFalse(thrown);
   }
 
   @Test
   public void testHappyPath() {
     String query = "TO_UPPER(TRIM(foo))";
-    Assert.assertEquals("CASEY", run(query, ImmutableMap.of("foo", "casey ")));
+    assertEquals("CASEY", run(query, ImmutableMap.of("foo", "casey ")));
   }
 
   @Test
   public void testLengthString(){
     String query = "LENGTH(foo)";
-    Assert.assertEquals(5, run(query,ImmutableMap.of("foo","abcde")));
+    assertEquals(5, run(query,ImmutableMap.of("foo","abcde")));
   }
   @Test
   public void testLengthCollection(){
     String query = "LENGTH(foo)";
     Collection c = Arrays.asList(1,2,3,4,5);
-    Assert.assertEquals(5, run(query,ImmutableMap.of("foo",c)));
+    assertEquals(5, run(query,ImmutableMap.of("foo",c)));
   }
 
   @Test
   public void testEmptyLengthString(){
     String query = "LENGTH(foo)";
-    Assert.assertEquals(0,run(query,ImmutableMap.of("foo","")));
+    assertEquals(0,run(query,ImmutableMap.of("foo","")));
   }
   @Test
   public void testEmptyLengthCollection(){
     String query = "LENGTH(foo)";
     Collection c = new ArrayList();
-    Assert.assertEquals(0,run(query,ImmutableMap.of("foo",c)));
+    assertEquals(0,run(query,ImmutableMap.of("foo",c)));
   }
-  @Test(expected = ParseException.class)
+  @Test
   public void testNoVarLength(){
     String query = "LENGTH(foo)";
-    run(query,ImmutableMap.of());
+    assertThrows(ParseException.class, () -> run(query,ImmutableMap.of()));
   }
 
   @Test
   public void testJoin() {
     String query = "JOIN( [ TO_UPPER(TRIM(foo)), 'bar' ], ',')";
-    Assert.assertEquals("CASEY,bar", run(query, ImmutableMap.of("foo", "casey ")));
+    assertEquals("CASEY,bar", run(query, ImmutableMap.of("foo", "casey ")));
     query = "JOIN( SET_INIT( [ 1, 2, 'buckle', 'my', 'shoe', 3 ] ), ',')";
-    Assert.assertEquals("1,2,buckle,my,shoe,3", run(query, new HashMap<>()));
+    assertEquals("1,2,buckle,my,shoe,3", run(query, new HashMap<>()));
   }
 
   @Test
   public void testSplit() {
     String query = "JOIN( SPLIT(foo, ':'), ',')";
-    Assert.assertEquals("casey,bar", run(query, ImmutableMap.of("foo", "casey:bar")));
+    assertEquals("casey,bar", run(query, ImmutableMap.of("foo", "casey:bar")));
   }
 
   @Test
   public void testMapGet() {
     String query = "MAP_GET(dc, dc2tz, 'UTC')";
-    Assert.assertEquals("UTC"
+    assertEquals("UTC"
                        , run(query, ImmutableMap.of("dc", "nyc"
                                                    ,"dc2tz", ImmutableMap.of("la", "PST")
                                                    )
                             )
                        );
-    Assert.assertEquals("EST"
+    assertEquals("EST"
                        , run(query, ImmutableMap.of("dc", "nyc"
                                                    ,"dc2tz", ImmutableMap.of("nyc", "EST")
                                                    )
@@ -668,15 +653,15 @@
     assertThat(result.get("foo"), equalTo("bar"));
   }
 
-  @Test(expected=ParseException.class)
+  @Test
   public void mapPutTest_wrongType() throws Exception {
-    Map s = (Map) run("MAP_PUT( 'foo', 'bar', [ 'baz' ] )", new HashMap<>());
+    assertThrows(ParseException.class, () -> run("MAP_PUT( 'foo', 'bar', [ 'baz' ] )", new HashMap<>()));
   }
 
   @Test
   public void testMapMergeEmpty() {
     Map m = (Map) StellarProcessorUtils.run("MAP_MERGE([{}, null])", new HashMap<>());
-    Assert.assertEquals(0, m.size());
+    assertEquals(0, m.size());
   }
 
   @Test
@@ -737,62 +722,62 @@
     assertThat(result.get("f"), equalTo("6"));
   }
 
-  @Test(expected=ParseException.class)
+  @Test
   public void mapMergeTest_wrongType() throws Exception {
-    Map s = (Map) run("MAP_MERGE( [ 'foo', 'bar' ] )", new HashMap<>());
+    assertThrows(ParseException.class, () -> run("MAP_MERGE( [ 'foo', 'bar' ] )", new HashMap<>()));
   }
 
   @Test
   public void testTLDExtraction() {
     String query = "DOMAIN_TO_TLD(foo)";
-    Assert.assertEquals("co.uk", run(query, ImmutableMap.of("foo", "www.google.co.uk")));
+    assertEquals("co.uk", run(query, ImmutableMap.of("foo", "www.google.co.uk")));
   }
 
   @Test
   public void testTLDRemoval() {
     String query = "DOMAIN_REMOVE_TLD(foo)";
-    Assert.assertEquals("www.google", run(query, ImmutableMap.of("foo", "www.google.co.uk")));
+    assertEquals("www.google", run(query, ImmutableMap.of("foo", "www.google.co.uk")));
   }
 
   @Test
   public void testSubdomainRemoval() {
     String query = "DOMAIN_REMOVE_SUBDOMAINS(foo)";
-    Assert.assertEquals("google.co.uk", run(query, ImmutableMap.of("foo", "www.google.co.uk")));
-    Assert.assertEquals("google.com", run(query, ImmutableMap.of("foo", "www.google.com")));
+    assertEquals("google.co.uk", run(query, ImmutableMap.of("foo", "www.google.co.uk")));
+    assertEquals("google.com", run(query, ImmutableMap.of("foo", "www.google.com")));
   }
 
   @Test
   public void testURLToHost() {
     String query = "URL_TO_HOST(foo)";
-    Assert.assertEquals("www.google.co.uk", run(query, ImmutableMap.of("foo", "http://www.google.co.uk/my/path")));
+    assertEquals("www.google.co.uk", run(query, ImmutableMap.of("foo", "http://www.google.co.uk/my/path")));
   }
 
   @Test
   public void testURLToPort() {
     String query = "URL_TO_PORT(foo)";
-    Assert.assertEquals(80, run(query, ImmutableMap.of("foo", "http://www.google.co.uk/my/path")));
+    assertEquals(80, run(query, ImmutableMap.of("foo", "http://www.google.co.uk/my/path")));
   }
 
   @Test
   public void testURLToProtocol() {
     String query = "URL_TO_PROTOCOL(foo)";
-    Assert.assertEquals("http", run(query, ImmutableMap.of("foo", "http://www.google.co.uk/my/path")));
+    assertEquals("http", run(query, ImmutableMap.of("foo", "http://www.google.co.uk/my/path")));
   }
 
   @Test
   public void testURLToPath() {
     String query = "URL_TO_PATH(foo)";
-    Assert.assertEquals("/my/path", run(query, ImmutableMap.of("foo", "http://www.google.co.uk/my/path")));
+    assertEquals("/my/path", run(query, ImmutableMap.of("foo", "http://www.google.co.uk/my/path")));
   }
 
-  @Ignore //until field transformations avail to Stellar
+  @Disabled //until field transformations avail to Stellar
   @Test
   public void testProtocolToName() {
     String query = "PROTOCOL_TO_NAME(protocol)";
-    Assert.assertEquals("TCP", run(query, ImmutableMap.of("protocol", "6")));
-    Assert.assertEquals("TCP", run(query, ImmutableMap.of("protocol", 6)));
-    Assert.assertEquals(null, run(query, ImmutableMap.of("foo", 6)));
-    Assert.assertEquals("chicken", run(query, ImmutableMap.of("protocol", "chicken")));
+    assertEquals("TCP", run(query, ImmutableMap.of("protocol", "6")));
+    assertEquals("TCP", run(query, ImmutableMap.of("protocol", 6)));
+    assertEquals(null, run(query, ImmutableMap.of("foo", 6)));
+    assertEquals("chicken", run(query, ImmutableMap.of("protocol", "chicken")));
   }
 
   @Test
@@ -800,45 +785,45 @@
     long expected =1452013350000L;
     {
       String query = "TO_EPOCH_TIMESTAMP(foo, 'yyyy-MM-dd HH:mm:ss', 'UTC')";
-      Assert.assertEquals(expected, run(query, ImmutableMap.of("foo", "2016-01-05 17:02:30")));
+      assertEquals(expected, run(query, ImmutableMap.of("foo", "2016-01-05 17:02:30")));
     }
     {
       String query = "TO_EPOCH_TIMESTAMP(foo, 'yyyy-MM-dd HH:mm:ss')";
       Long ts = (Long) run(query, ImmutableMap.of("foo", "2016-01-05 17:02:30"));
       //is it within 24 hours of the UTC?
-      Assert.assertTrue(Math.abs(ts - expected) < 8.64e+7);
+      assertTrue(Math.abs(ts - expected) < 8.64e+7);
     }
   }
 
   @Test
   public void testToString() {
-    Assert.assertEquals("5", run("TO_STRING(foo)", ImmutableMap.of("foo", 5)));
+    assertEquals("5", run("TO_STRING(foo)", ImmutableMap.of("foo", 5)));
   }
 
   @Test
   public void testToStringNull() {
-    Assert.assertEquals("null", run("TO_STRING(\"null\")", ImmutableMap.of("foo", "null")));
+    assertEquals("null", run("TO_STRING(\"null\")", ImmutableMap.of("foo", "null")));
   }
 
   @Test
   public void testToInteger() {
-    Assert.assertEquals(5, run("TO_INTEGER(foo)", ImmutableMap.of("foo", "5")));
-    Assert.assertEquals(5, run("TO_INTEGER(foo)", ImmutableMap.of("foo", 5)));
+    assertEquals(5, run("TO_INTEGER(foo)", ImmutableMap.of("foo", "5")));
+    assertEquals(5, run("TO_INTEGER(foo)", ImmutableMap.of("foo", 5)));
   }
 
   @Test
   public void testToDouble() {
-    Assert.assertEquals(5.1d, run("TO_DOUBLE(foo)", ImmutableMap.of("foo", 5.1d)));
-    Assert.assertEquals(5.1d, run("TO_DOUBLE(foo)", ImmutableMap.of("foo", "5.1")));
+    assertEquals(5.1d, run("TO_DOUBLE(foo)", ImmutableMap.of("foo", 5.1d)));
+    assertEquals(5.1d, run("TO_DOUBLE(foo)", ImmutableMap.of("foo", "5.1")));
   }
 
   @Test
   public void testGet() {
     Map<String, Object> variables = ImmutableMap.of("foo", "www.google.co.uk");
-    Assert.assertEquals("www", run("GET_FIRST(SPLIT(DOMAIN_REMOVE_TLD(foo), '.'))", variables));
-    Assert.assertEquals("www", run("GET(SPLIT(DOMAIN_REMOVE_TLD(foo), '.'), 0)", variables));
-    Assert.assertEquals("google", run("GET_LAST(SPLIT(DOMAIN_REMOVE_TLD(foo), '.'))", variables));
-    Assert.assertEquals("google", run("GET(SPLIT(DOMAIN_REMOVE_TLD(foo), '.'), 1)", variables));
+    assertEquals("www", run("GET_FIRST(SPLIT(DOMAIN_REMOVE_TLD(foo), '.'))", variables));
+    assertEquals("www", run("GET(SPLIT(DOMAIN_REMOVE_TLD(foo), '.'), 0)", variables));
+    assertEquals("google", run("GET_LAST(SPLIT(DOMAIN_REMOVE_TLD(foo), '.'))", variables));
+    assertEquals("google", run("GET(SPLIT(DOMAIN_REMOVE_TLD(foo), '.'), 1)", variables));
   }
 
   @Test
@@ -848,14 +833,14 @@
       put("empty", "");
       put("spaced", "metron is great");
     }};
-    Assert.assertFalse(runPredicate("not('casey' == foo and true)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("not(not('casey' == foo and true))", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("('casey' == foo) && ( false != true )", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("('casey' == foo) and (FALSE == TRUE)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("'casey' == foo and FALSE", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("'casey' == foo and true", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("true", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("TRUE", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("not('casey' == foo and true)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("not(not('casey' == foo and true))", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("('casey' == foo) && ( false != true )", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("('casey' == foo) and (FALSE == TRUE)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("'casey' == foo and FALSE", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("'casey' == foo and true", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("true", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("TRUE", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
@@ -864,16 +849,16 @@
       put("foo", "casey");
       put("empty", "");
     }};
-    Assert.assertTrue(runPredicate("foo in [ 'casey', 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("foo in [ ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("foo in [ foo, 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("foo in [ 'casey', 'david' ] and 'casey' == foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("foo in [ 'casey', 'david' ] and foo == 'casey'", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("foo in [ 'casey' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("foo not in [ 'casey', 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("foo not in [ 'casey', 'david' ] and 'casey' == foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("null in [ null, 'something' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("null not in [ null, 'something' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in [ 'casey', 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("foo in [ ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in [ foo, 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in [ 'casey', 'david' ] and 'casey' == foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in [ 'casey', 'david' ] and foo == 'casey'", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in [ 'casey' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("foo not in [ 'casey', 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("foo not in [ 'casey', 'david' ] and 'casey' == foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("null in [ null, 'something' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("null not in [ null, 'something' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
@@ -882,30 +867,30 @@
       put("foo", "casey");
       put("empty", "");
     }};
-    Assert.assertTrue(runPredicate("'casey' in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("'casey' not in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("foo in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("foo not in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("'foo' in { 'foo' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("'foo' not in { 'foo' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("foo in { 'casey' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("foo not in { 'casey' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("empty in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("empty not in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("'foo' in { }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("null in { 'foo' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("null not in { 'foo' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("'casey' in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("'casey' not in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("foo not in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("'foo' in { 'foo' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("'foo' not in { 'foo' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in { 'casey' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("foo not in { 'casey' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("empty in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("empty not in { foo : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("'foo' in { }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("null in { 'foo' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("null not in { 'foo' : 5 }", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
 
   public void testShortCircuit_mixedBoolOps() throws Exception {
     final Map<String, String> variableMap = new HashMap<String, String>();
-    Assert.assertTrue(runPredicate("(false && true) || true"
+    assertTrue(runPredicate("(false && true) || true"
             , new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("(false && false) || true"
+    assertTrue(runPredicate("(false && false) || true"
             , new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("(true || true) && false"
+    assertFalse(runPredicate("(true || true) && false"
             , new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
@@ -915,34 +900,34 @@
       put("foo", "casey");
       put("empty", "");
     }};
-    Assert.assertTrue(runPredicate("'case' in foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("'case' not in foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("'case' in empty", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("'case' not in empty", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("'case' in [ foo ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("'case' not in [ foo ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("null in foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("null not in foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("'case' in foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("'case' not in foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("'case' in empty", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("'case' not in empty", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("'case' in [ foo ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("'case' not in [ foo ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("null in foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("null not in foo", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
   public void inNestedInStatement() throws Exception {
     final Map<String, String> variableMap = new HashMap<>();
 
-    Assert.assertTrue(runPredicate("('grok' not in 'foobar') == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertTrue(runPredicate("'grok' not in ('foobar' == true)", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertFalse(runPredicate("'grok' in 'grokbar' == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertTrue(runPredicate("false in 'grokbar' == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("('grok' not in 'foobar') == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("'grok' not in ('foobar' == true)", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertFalse(runPredicate("'grok' in 'grokbar' == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("false in 'grokbar' == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
 
-    Assert.assertTrue(runPredicate("('foo' in 'foobar') == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertFalse(runPredicate("'foo' in ('foobar' == true)", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertTrue(runPredicate("'grok' not in 'grokbar' == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertTrue(runPredicate("false in 'grokbar' == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertTrue(runPredicate("'foo' in ['foo'] AND 'bar' in ['bar']", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertTrue(runPredicate("('foo' in ['foo']) AND 'bar' in ['bar']", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertTrue(runPredicate("'foo' in ['foo'] AND ('bar' in ['bar'])", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertTrue(runPredicate("('foo' in ['foo']) AND ('bar' in ['bar'])", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
-    Assert.assertTrue(runPredicate("('foo' in ['foo'] AND 'bar' in ['bar'])", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("('foo' in 'foobar') == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertFalse(runPredicate("'foo' in ('foobar' == true)", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("'grok' not in 'grokbar' == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("false in 'grokbar' == true", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("'foo' in ['foo'] AND 'bar' in ['bar']", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("('foo' in ['foo']) AND 'bar' in ['bar']", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("'foo' in ['foo'] AND ('bar' in ['bar'])", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("('foo' in ['foo']) AND ('bar' in ['bar'])", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
+    assertTrue(runPredicate("('foo' in ['foo'] AND 'bar' in ['bar'])", new DefaultVariableResolver(variableMap::get,variableMap::containsKey)));
   }
 
   @Test
@@ -952,9 +937,9 @@
       put("empty", "");
       put("spaced", "metron is great");
     }};
-    Assert.assertTrue(runPredicate("exists(foo)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("exists(bar)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("exists(bar) or true", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("exists(foo)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("exists(bar)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("exists(bar) or true", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
@@ -967,7 +952,7 @@
       put("spaced", "metron is great");
       put("myMap", ImmutableMap.of("casey", "apple"));
     }};
-    Assert.assertTrue(runPredicate("MAP_EXISTS(foo, myMap)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("MAP_EXISTS(foo, myMap)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
@@ -981,43 +966,43 @@
       put("empty", "");
       put("spaced", "metron is great");
     }};
-    Assert.assertTrue(runPredicate("IN_SUBNET(ip, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("IN_SUBNET(ip, '192.168.0.0/24', '11.0.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("IN_SUBNET(ip, '192.168.0.0/24', '11.0.0.0/24') in [true]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("true in IN_SUBNET(ip, '192.168.0.0/24', '11.0.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("IN_SUBNET(ip_dst_addr, '192.168.0.0/24', '11.0.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("IN_SUBNET(other_ip, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("IN_SUBNET(ip, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("IN_SUBNET(ip, '192.168.0.0/24', '11.0.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("IN_SUBNET(ip, '192.168.0.0/24', '11.0.0.0/24') in [true]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("true in IN_SUBNET(ip, '192.168.0.0/24', '11.0.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("IN_SUBNET(ip_dst_addr, '192.168.0.0/24', '11.0.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("IN_SUBNET(other_ip, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
     boolean thrown = false;
     try{
       runPredicate("IN_SUBNET(blah, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v)));
     }catch(ParseException pe){
       thrown = true;
     }
-    Assert.assertTrue(thrown);
-    Assert.assertTrue(runPredicate("true and STARTS_WITH(foo, 'ca')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("true and STARTS_WITH(TO_UPPER(foo), 'CA')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("(true and STARTS_WITH(TO_UPPER(foo), 'CA')) || true", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("true and ENDS_WITH(foo, 'sey')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("not(IN_SUBNET(ip_src_addr, '192.168.0.0/24') and IN_SUBNET(ip_dst_addr, '192.168.0.0/24'))", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("IN_SUBNET(ip_src_addr, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("not(IN_SUBNET(ip_src_addr, '192.168.0.0/24'))", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("IN_SUBNET(ip_dst_addr, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("not(IN_SUBNET(ip_dst_addr, '192.168.0.0/24'))", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(thrown);
+    assertTrue(runPredicate("true and STARTS_WITH(foo, 'ca')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("true and STARTS_WITH(TO_UPPER(foo), 'CA')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("(true and STARTS_WITH(TO_UPPER(foo), 'CA')) || true", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("true and ENDS_WITH(foo, 'sey')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("not(IN_SUBNET(ip_src_addr, '192.168.0.0/24') and IN_SUBNET(ip_dst_addr, '192.168.0.0/24'))", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("IN_SUBNET(ip_src_addr, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("not(IN_SUBNET(ip_src_addr, '192.168.0.0/24'))", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("IN_SUBNET(ip_dst_addr, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("not(IN_SUBNET(ip_dst_addr, '192.168.0.0/24'))", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
   public void testShortCircuit_conditional() throws Exception {
-    Assert.assertEquals("foo", run("if true then 'foo' else (if false then 'bar' else 'grok')", new HashMap<>()));
-    Assert.assertEquals("foo", run("if true_var != null && true_var then 'foo' else (if false then 'bar' else 'grok')", ImmutableMap.of("true_var", true)));
-    Assert.assertEquals("foo", run("if true then 'foo' else THROW('expression')", new HashMap<>()));
-    Assert.assertEquals("foo", run("true ? 'foo' : THROW('expression')", new HashMap<>()));
-    Assert.assertEquals("foo", run("if false then THROW('exception') else 'foo'", new HashMap<>()));
-    Assert.assertEquals("foo", run("false ? THROW('exception') : 'foo'", new HashMap<>()));
-    Assert.assertEquals(true, run("RET_TRUE(if true then 'foo' else THROW('expression'))", new HashMap<>()));
-    Assert.assertEquals("foo", run("if true or (true or THROW('if exception')) then 'foo' else THROW('expression')", new HashMap<>()));
-    Assert.assertEquals("foo", run("if true or (false or THROW('if exception')) then 'foo' else THROW('expression')", new HashMap<>()));
-    Assert.assertEquals("foo", run("if NOT(true or (false or THROW('if exception'))) then THROW('expression') else 'foo'", new HashMap<>()));
-    Assert.assertEquals("foo", run("if NOT('metron' in [ 'metron', 'metronicus'] ) then THROW('expression') else 'foo'", new HashMap<>()));
+    assertEquals("foo", run("if true then 'foo' else (if false then 'bar' else 'grok')", new HashMap<>()));
+    assertEquals("foo", run("if true_var != null && true_var then 'foo' else (if false then 'bar' else 'grok')", ImmutableMap.of("true_var", true)));
+    assertEquals("foo", run("if true then 'foo' else THROW('expression')", new HashMap<>()));
+    assertEquals("foo", run("true ? 'foo' : THROW('expression')", new HashMap<>()));
+    assertEquals("foo", run("if false then THROW('exception') else 'foo'", new HashMap<>()));
+    assertEquals("foo", run("false ? THROW('exception') : 'foo'", new HashMap<>()));
+    assertEquals(true, run("RET_TRUE(if true then 'foo' else THROW('expression'))", new HashMap<>()));
+    assertEquals("foo", run("if true or (true or THROW('if exception')) then 'foo' else THROW('expression')", new HashMap<>()));
+    assertEquals("foo", run("if true or (false or THROW('if exception')) then 'foo' else THROW('expression')", new HashMap<>()));
+    assertEquals("foo", run("if NOT(true or (false or THROW('if exception'))) then THROW('expression') else 'foo'", new HashMap<>()));
+    assertEquals("foo", run("if NOT('metron' in [ 'metron', 'metronicus'] ) then THROW('expression') else 'foo'", new HashMap<>()));
   }
 
   @Test
@@ -1028,9 +1013,9 @@
     //     THEN 'a'
     //   ELSE 'b'
     // ELSE 'c'
-    Assert.assertEquals("a", run("IF true THEN IF true THEN 'a' ELSE 'b' ELSE 'c'", new HashMap<>()));
-    Assert.assertEquals("b", run("IF true THEN IF false THEN 'a' ELSE 'b' ELSE 'c'", new HashMap<>()));
-    Assert.assertEquals("c", run("IF false THEN IF false THEN 'a' ELSE 'b' ELSE 'c'", new HashMap<>()));
+    assertEquals("a", run("IF true THEN IF true THEN 'a' ELSE 'b' ELSE 'c'", new HashMap<>()));
+    assertEquals("b", run("IF true THEN IF false THEN 'a' ELSE 'b' ELSE 'c'", new HashMap<>()));
+    assertEquals("c", run("IF false THEN IF false THEN 'a' ELSE 'b' ELSE 'c'", new HashMap<>()));
 
     // 3 layer deep
     // IF true
@@ -1040,14 +1025,14 @@
     //     ELSE 'b'
     //   ELSE 'c'
     // ELSE 'd'
-    Assert.assertEquals("a", run("IF true THEN IF true THEN IF true THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("b", run("IF true THEN IF true THEN IF false THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("c", run("IF true THEN IF false THEN IF true THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("c", run("IF true THEN IF false THEN IF false THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("d", run("IF false THEN IF true THEN IF true THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("d", run("IF false THEN IF true THEN IF false THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("d", run("IF false THEN IF false THEN IF true THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("d", run("IF false THEN IF false THEN IF false THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("a", run("IF true THEN IF true THEN IF true THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("b", run("IF true THEN IF true THEN IF false THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("c", run("IF true THEN IF false THEN IF true THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("c", run("IF true THEN IF false THEN IF false THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("d", run("IF false THEN IF true THEN IF true THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("d", run("IF false THEN IF true THEN IF false THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("d", run("IF false THEN IF false THEN IF true THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("d", run("IF false THEN IF false THEN IF false THEN 'a' ELSE 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
 
     // Nested inside inner if
     // IF true
@@ -1057,14 +1042,14 @@
     //     THEN 'b'
     //   ELSE 'c'
     // ELSE 'd'
-    Assert.assertEquals("a", run("IF true THEN IF true THEN 'a' ELSE IF true THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("a", run("IF true THEN IF true THEN 'a' ELSE IF false THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("b", run("IF true THEN IF false THEN 'a' ELSE IF true THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("c", run("IF true THEN IF false THEN 'a' ELSE IF false THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("d", run("IF false THEN IF true THEN 'a' ELSE IF true THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("d", run("IF false THEN IF true THEN 'a' ELSE IF false THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("d", run("IF false THEN IF false THEN 'a' ELSE IF true THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
-    Assert.assertEquals("d", run("IF false THEN IF false THEN 'a' ELSE IF false THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("a", run("IF true THEN IF true THEN 'a' ELSE IF true THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("a", run("IF true THEN IF true THEN 'a' ELSE IF false THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("b", run("IF true THEN IF false THEN 'a' ELSE IF true THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("c", run("IF true THEN IF false THEN 'a' ELSE IF false THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("d", run("IF false THEN IF true THEN 'a' ELSE IF true THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("d", run("IF false THEN IF true THEN 'a' ELSE IF false THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("d", run("IF false THEN IF false THEN 'a' ELSE IF true THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
+    assertEquals("d", run("IF false THEN IF false THEN 'a' ELSE IF false THEN 'b' ELSE 'c' ELSE 'd'", new HashMap<>()));
   }
 
   @Test
@@ -1076,33 +1061,33 @@
     // ELSE 'c'
 
     // Should hit the match cases
-    Assert.assertEquals("less", run("IF TO_UPPER('foo') == 'FOO' THEN IF GET_FIRST(MAP(['test_true'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 1)));
-    Assert.assertEquals("default", run("IF TO_UPPER('foo') == 'FOO' THEN IF GET_FIRST(MAP(['test_true'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 11)));
-    Assert.assertEquals("more", run("IF TO_UPPER('foo') == 'FOO' THEN IF GET_FIRST(MAP(['test_true'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 100)));
+    assertEquals("less", run("IF TO_UPPER('foo') == 'FOO' THEN IF GET_FIRST(MAP(['test_true'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 1)));
+    assertEquals("default", run("IF TO_UPPER('foo') == 'FOO' THEN IF GET_FIRST(MAP(['test_true'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 11)));
+    assertEquals("more", run("IF TO_UPPER('foo') == 'FOO' THEN IF GET_FIRST(MAP(['test_true'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 100)));
 
     // Should fail first if and hit 'c'
-    Assert.assertEquals("c", run("IF TO_UPPER('bar') == 'FOO' THEN IF GET_FIRST(MAP(['test_true'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 1)));
+    assertEquals("c", run("IF TO_UPPER('bar') == 'FOO' THEN IF GET_FIRST(MAP(['test_true'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 1)));
 
     // Should fail second if and hit 'b'
-    Assert.assertEquals("b", run("IF TO_UPPER('foo') == 'FOO' THEN IF GET_FIRST(MAP(['test_false'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 1)));
+    assertEquals("b", run("IF TO_UPPER('foo') == 'FOO' THEN IF GET_FIRST(MAP(['test_false'], x -> TO_UPPER(x))) == 'TEST_TRUE' THEN match{ var1 < 10 => 'less', var1 >= 12 => 'more', default => 'default'} ELSE 'b' ELSE 'c'", Collections.singletonMap("var1", 1)));
   }
 
   @Test
   public void testShortCircuit_boolean() throws Exception {
-    Assert.assertTrue(runPredicate("'metron' in ['metron', 'metronicus', 'mortron'] or (true or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertTrue(runPredicate("true or (true or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertTrue(runPredicate("true or (false or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertTrue(runPredicate("TO_UPPER('foo') == 'FOO' or (true or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertFalse(runPredicate("false and (true or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertTrue(runPredicate("true or false or false or true", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertFalse(runPredicate("false or (false and THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertTrue(runPredicate("'casey' == 'casey' or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertTrue(runPredicate("TO_UPPER('casey') == 'CASEY' or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertTrue(runPredicate("NOT(TO_UPPER('casey') != 'CASEY') or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertTrue(runPredicate("(TO_UPPER('casey') == 'CASEY') or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertFalse(runPredicate("NOT(NOT(TO_UPPER('casey') != 'CASEY') or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertFalse(runPredicate("NOT(NOT(TO_UPPER('casey') != 'CASEY')) and THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
-    Assert.assertTrue(runPredicate("RET_TRUE('foo') or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("'metron' in ['metron', 'metronicus', 'mortron'] or (true or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("true or (true or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("true or (false or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("TO_UPPER('foo') == 'FOO' or (true or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
+    assertFalse(runPredicate("false and (true or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("true or false or false or true", new DefaultVariableResolver(x -> null,x -> false)));
+    assertFalse(runPredicate("false or (false and THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("'casey' == 'casey' or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("TO_UPPER('casey') == 'CASEY' or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("NOT(TO_UPPER('casey') != 'CASEY') or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("(TO_UPPER('casey') == 'CASEY') or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
+    assertFalse(runPredicate("NOT(NOT(TO_UPPER('casey') != 'CASEY') or THROW('exception'))", new DefaultVariableResolver(x -> null,x -> false)));
+    assertFalse(runPredicate("NOT(NOT(TO_UPPER('casey') != 'CASEY')) and THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("RET_TRUE('foo') or THROW('exception')", new DefaultVariableResolver(x -> null,x -> false)));
     boolean thrown = false;
     try {
       runPredicate("NOT(foo == null or THROW('exception')) and THROW('and exception')",
@@ -1110,7 +1095,7 @@
     }catch(ParseException pe) {
       thrown = true;
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
     try {
       runPredicate("(foo == null or THROW('exception') ) or THROW('and exception')",
@@ -1119,23 +1104,26 @@
       thrown = true;
     }
 
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
 
-    Assert.assertTrue(runPredicate("( RET_TRUE('foo', true, false) or ( foo == null or THROW('exception') ) or THROW('and exception')) or THROW('or exception')", new DefaultVariableResolver(x -> null,x -> false)));
+    assertTrue(runPredicate("( RET_TRUE('foo', true, false) or ( foo == null or THROW('exception') ) or THROW('and exception')) or THROW('or exception')", new DefaultVariableResolver(x -> null,x -> false)));
   }
 
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   @Test
   public void non_boolean_predicate_throws_exception() {
     final Map<String, String> variableMap = new HashMap<String, String>() {{
       put("protocol", "http");
     }};
-    thrown.expect(IllegalArgumentException.class);
-    thrown.expectMessage("The rule 'TO_UPPER(protocol)' does not return a boolean value.");
-    runPredicate("TO_UPPER(protocol)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v)));
+    IllegalArgumentException e =
+        assertThrows(
+            IllegalArgumentException.class,
+            () ->
+                runPredicate(
+                    "TO_UPPER(protocol)",
+                    new DefaultVariableResolver(
+                        v -> variableMap.get(v), v -> variableMap.containsKey(v))));
+    assertEquals("The rule 'TO_UPPER(protocol)' does not return a boolean value.", e.getMessage());
   }
 
   @Test
@@ -1146,13 +1134,13 @@
     final Map<String, Object> varMap2 = new HashMap<String, Object>();
     varMap2.put("field2", "val2");
     VariableResolver resolver = new MapVariableResolver(varMap1, varMap2);
-    Assert.assertTrue(runPredicate("MAP_GET('field1', _) == 'val1'", resolver));
-    Assert.assertTrue(runPredicate("MAP_GET('field2', _) == 'val2'", resolver));
-    Assert.assertTrue(runPredicate("LENGTH(_) == 2", resolver));
+    assertTrue(runPredicate("MAP_GET('field1', _) == 'val1'", resolver));
+    assertTrue(runPredicate("MAP_GET('field2', _) == 'val2'", resolver));
+    assertTrue(runPredicate("LENGTH(_) == 2", resolver));
     Map<String, Object> ret = (Map<String, Object>) run("_", resolver);
-    Assert.assertEquals(2, ret.size());
-    Assert.assertEquals("val1", ret.get("field1"));
-    Assert.assertEquals("val2", ret.get("field2"));
+    assertEquals(2, ret.size());
+    assertEquals("val1", ret.get("field1"));
+    assertEquals("val2", ret.get("field2"));
   }
 
   @Test
@@ -1162,15 +1150,15 @@
 
   private void checkFalsey(String falseyExpr) {
     VariableResolver resolver = new MapVariableResolver(new HashMap<>());
-    Assert.assertTrue(runPredicate(String.format(" %s || true", falseyExpr), resolver));
-    Assert.assertFalse(runPredicate(String.format("%s && EXCEPTION('blah')", falseyExpr), resolver));
-    Assert.assertTrue(runPredicate(String.format("NOT(%s)", falseyExpr), resolver));
-    Assert.assertFalse(runPredicate(String.format("if %s then true else false", falseyExpr), resolver));
-    Assert.assertFalse(runPredicate(String.format("if %s then true || %s else false", falseyExpr, falseyExpr), resolver));
-    Assert.assertFalse(runPredicate(String.format("if %s then true || %s else false && %s", falseyExpr, falseyExpr, falseyExpr), resolver));
-    Assert.assertFalse(runPredicate(String.format("if %s then true || %s else false && (%s || true)", falseyExpr, falseyExpr, falseyExpr), resolver));
+    assertTrue(runPredicate(String.format(" %s || true", falseyExpr), resolver));
+    assertFalse(runPredicate(String.format("%s && EXCEPTION('blah')", falseyExpr), resolver));
+    assertTrue(runPredicate(String.format("NOT(%s)", falseyExpr), resolver));
+    assertFalse(runPredicate(String.format("if %s then true else false", falseyExpr), resolver));
+    assertFalse(runPredicate(String.format("if %s then true || %s else false", falseyExpr, falseyExpr), resolver));
+    assertFalse(runPredicate(String.format("if %s then true || %s else false && %s", falseyExpr, falseyExpr, falseyExpr), resolver));
+    assertFalse(runPredicate(String.format("if %s then true || %s else false && (%s || true)", falseyExpr, falseyExpr, falseyExpr), resolver));
     //make sure that nulls aren't replaced by false everywhere, only in boolean expressions.
-    Assert.assertNull(run(String.format("MAP_GET(%s, {false : 'blah'})", falseyExpr), resolver));
+    assertNull(run(String.format("MAP_GET(%s, {false : 'blah'})", falseyExpr), resolver));
   }
 
   @Test
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/ConversionFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/ConversionFunctionsTest.java
index 099d540..263775c 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/ConversionFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/ConversionFunctionsTest.java
@@ -18,16 +18,17 @@
 
 package org.apache.metron.stellar.dsl.functions;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 public class ConversionFunctionsTest {
 
   @Test
-  public void conversionFunctionsShouldProperlyConvertToSpecificType() throws Exception {
+  public void conversionFunctionsShouldProperlyConvertToSpecificType() {
     assertEquals(1D, new ConversionFunctions.TO_DOUBLE().apply(Collections.singletonList(1)));
     assertEquals(1F, new ConversionFunctions.TO_FLOAT().apply(Collections.singletonList(1.0D)));
     assertEquals(1, new ConversionFunctions.TO_INTEGER().apply(Collections.singletonList(1.0D)));
@@ -35,10 +36,10 @@
   }
 
   @Test
-  public void conversionFunctionsShouldProperlyHandleNull() throws Exception {
-    assertEquals(null, new ConversionFunctions.TO_DOUBLE().apply(Collections.singletonList(null)));
-    assertEquals(null, new ConversionFunctions.TO_FLOAT().apply(Collections.singletonList(null)));
-    assertEquals(null, new ConversionFunctions.TO_INTEGER().apply(Collections.singletonList(null)));
-    assertEquals(null, new ConversionFunctions.TO_LONG().apply(Collections.singletonList(null)));
+  public void conversionFunctionsShouldProperlyHandleNull() {
+    assertNull(new ConversionFunctions.TO_DOUBLE().apply(Collections.singletonList(null)));
+    assertNull(new ConversionFunctions.TO_FLOAT().apply(Collections.singletonList(null)));
+    assertNull(new ConversionFunctions.TO_INTEGER().apply(Collections.singletonList(null)));
+    assertNull(new ConversionFunctions.TO_LONG().apply(Collections.singletonList(null)));
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/DataStructureFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/DataStructureFunctionsTest.java
index 1af88ff..16d9e48 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/DataStructureFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/DataStructureFunctionsTest.java
@@ -21,13 +21,15 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 import java.util.List;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class DataStructureFunctionsTest {
 
@@ -36,19 +38,19 @@
     DataStructureFunctions.IsEmpty isEmpty = new DataStructureFunctions.IsEmpty();
     {
       boolean empty = (boolean) isEmpty.apply(ImmutableList.of("hello"));
-      Assert.assertThat("should be false", empty, CoreMatchers.equalTo(false));
+      assertThat("should be false", empty, CoreMatchers.equalTo(false));
     }
     {
       boolean empty = (boolean) isEmpty.apply(ImmutableList.of(ImmutableList.of("hello", "world")));
-      Assert.assertThat("should be false", empty, CoreMatchers.equalTo(false));
+      assertThat("should be false", empty, CoreMatchers.equalTo(false));
     }
     {
       boolean empty = (boolean) isEmpty.apply(ImmutableList.of(1));
-      Assert.assertThat("should be false", empty, CoreMatchers.equalTo(false));
+      assertThat("should be false", empty, CoreMatchers.equalTo(false));
     }
     {
       boolean empty = (boolean) isEmpty.apply(ImmutableList.of(ImmutableMap.of("mykey", "myvalue")));
-      Assert.assertThat("should be false", empty, CoreMatchers.equalTo(false));
+      assertThat("should be false", empty, CoreMatchers.equalTo(false));
     }
   }
 
@@ -57,19 +59,19 @@
     DataStructureFunctions.IsEmpty isEmpty = new DataStructureFunctions.IsEmpty();
     {
       boolean empty = (boolean) isEmpty.apply(ImmutableList.of());
-      Assert.assertThat("should be true", empty, CoreMatchers.equalTo(true));
+      assertThat("should be true", empty, CoreMatchers.equalTo(true));
     }
     {
       boolean empty = (boolean) isEmpty.apply(null);
-      Assert.assertThat("should be true", empty, CoreMatchers.equalTo(true));
+      assertThat("should be true", empty, CoreMatchers.equalTo(true));
     }
     {
       boolean empty = (boolean) isEmpty.apply(ImmutableList.of(""));
-      Assert.assertThat("should be true", empty, CoreMatchers.equalTo(true));
+      assertThat("should be true", empty, CoreMatchers.equalTo(true));
     }
     {
       boolean empty = (boolean) isEmpty.apply(ImmutableList.of(ImmutableMap.of()));
-      Assert.assertThat("should be true", empty, CoreMatchers.equalTo(true));
+      assertThat("should be true", empty, CoreMatchers.equalTo(true));
     }
   }
 
@@ -83,10 +85,10 @@
        )
     {
       Object o = run(expr, ImmutableMap.of("my_list", new ArrayList<>(), "val", 1));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<Number> result = (List<Number>) o;
-      Assert.assertEquals(1, result.size());
-      Assert.assertEquals(1, result.get(0));
+      assertEquals(1, result.size());
+      assertEquals(1, result.get(0));
     }
   }
 
@@ -102,11 +104,11 @@
       ArrayList<Object> list = new ArrayList<>();
       list.add("foo");
       Object o = run(expr, ImmutableMap.of("my_list", list, "val", 1));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<Object> result = (List<Object>) o;
-      Assert.assertEquals(2, result.size());
-      Assert.assertEquals("foo", result.get(0));
-      Assert.assertEquals(1, result.get(1));
+      assertEquals(2, result.size());
+      assertEquals("foo", result.get(0));
+      assertEquals(1, result.get(1));
     }
   }
 
@@ -122,11 +124,11 @@
       ArrayList<Integer> list = new ArrayList<>();
       list.add(1);
       Object o = run(expr, ImmutableMap.of("my_list", list, "val", 2));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<Number> result = (List<Number>) o;
-      Assert.assertEquals(2, result.size());
-      Assert.assertEquals(1, result.get(0));
-      Assert.assertEquals(2, result.get(1));
+      assertEquals(2, result.size());
+      assertEquals(1, result.get(0));
+      assertEquals(2, result.get(1));
     }
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/DateFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/DateFunctionsTest.java
index ce8d5ce..0f52344 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/DateFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/DateFunctionsTest.java
@@ -25,8 +25,8 @@
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.time.Instant;
 import java.time.LocalDate;
@@ -37,8 +37,7 @@
 import java.util.Map;
 import java.util.TimeZone;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Tests the DateFunctions class.
@@ -63,7 +62,7 @@
    */
   private long AUG2016 = 1472131630748L;
 
-  @Before
+  @BeforeEach
   public void setup() {
     variables.put("test_datetime", AUG2016);
     calendar = Calendar.getInstance();
@@ -87,9 +86,9 @@
   /**
    * If refer to variable that does not exist, expect ParseException.
    */
-  @Test(expected = ParseException.class)
+  @Test
   public void testDayOfWeekNull() {
-    Object result = run("DAY_OF_WEEK(nada)");
+    assertThrows(ParseException.class, () -> run("DAY_OF_WEEK(nada)"));
   }
 
   @Test
@@ -110,9 +109,9 @@
   /**
    * If refer to variable that does not exist, expect ParseException.
    */
-  @Test(expected = ParseException.class)
+  @Test
   public void testWeekOfMonthNull() {
-    Object result = run("WEEK_OF_MONTH(nada)");
+    assertThrows(ParseException.class, () -> run("WEEK_OF_MONTH(nada)"));
   }
 
   @Test
@@ -133,9 +132,9 @@
   /**
    * If refer to variable that does not exist, expect ParseException.
    */
-  @Test(expected = ParseException.class)
+  @Test
   public void testMonthNull() {
-    Object result = run("MONTH(nada)");
+    assertThrows(ParseException.class, () -> run("MONTH(nada)"));
   }
 
   @Test
@@ -156,9 +155,9 @@
   /**
    * If refer to variable that does not exist, expect ParseException.
    */
-  @Test(expected = ParseException.class)
+  @Test
   public void testYearNull() {
-    Object result = run("YEAR(nada)");
+    assertThrows(ParseException.class, () -> run("YEAR(nada)"));
   }
 
   @Test
@@ -179,9 +178,9 @@
   /**
    * If refer to variable that does not exist, expect ParseException.
    */
-  @Test(expected = ParseException.class)
+  @Test
   public void testDayOfMonthNull() {
-    Object result = run("DAY_OF_MONTH(nada)");
+    assertThrows(ParseException.class, () -> run("DAY_OF_MONTH(nada)"));
   }
 
   @Test
@@ -203,9 +202,9 @@
   /**
    * If refer to variable that does not exist, expect ParseException.
    */
-  @Test(expected = ParseException.class)
+  @Test
   public void testWeekOfYearNull() {
-    Object result = run("WEEK_OF_YEAR(nada)");
+    assertThrows(ParseException.class, () -> run("WEEK_OF_YEAR(nada)"));
   }
 
   @Test
@@ -226,9 +225,9 @@
   /**
    * If refer to variable that does not exist, expect ParseException.
    */
-  @Test(expected = ParseException.class)
+  @Test
   public void testDayOfYearNull() {
-    Object result = run("DAY_OF_YEAR(nada)");
+    assertThrows(ParseException.class, () -> run("DAY_OF_YEAR(nada)"));
   }
 
   @Test
@@ -240,10 +239,9 @@
   /**
    * Test that the String returned is formatted as specified.
    * LocalDate.parse will throw if it is not.
-   * @throws Exception
    */
   @Test
-  public void testDateFormatDefault() throws Exception {
+  public void testDateFormatDefault() {
     Object result = run("DATE_FORMAT('EEE MMM dd yyyy hh:mm:ss zzzz')");
     DateTimeFormatter formatter = DateTimeFormatter.ofPattern("EEE MMM dd yyyy hh:mm:ss zzzz");
     LocalDate.parse(result.toString(), formatter);
@@ -267,13 +265,13 @@
   /**
    * If refer to variable that does not exist, expect ParseException.
    */
-  @Test(expected = ParseException.class)
+  @Test
   public void testDateFormatNull() {
-    Object result = run("DATE_FORMAT('EEE MMM dd yyyy hh:mm:ss zzz', nada, 'EST')");
+    assertThrows(ParseException.class, () -> run("DATE_FORMAT('EEE MMM dd yyyy hh:mm:ss zzz', nada, 'EST')"));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testDateFormatInvalid() {
-    Object result = run("DATE_FORMAT('INVALID DATE FORMAT', test_datetime, 'EST')");
+    assertThrows(ParseException.class, () -> run("DATE_FORMAT('INVALID DATE FORMAT', test_datetime, 'EST')"));
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/EncodingFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/EncodingFunctionsTest.java
index 417db4f..42d4174 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/EncodingFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/EncodingFunctionsTest.java
@@ -18,27 +18,16 @@
 
 package org.apache.metron.stellar.dsl.functions;
 
-import static org.apache.metron.stellar.common.encoding.EncodingsTest.BASE32HEX_FIXTURE;
-import static org.apache.metron.stellar.common.encoding.EncodingsTest.BASE32_FIXTURE;
-import static org.apache.metron.stellar.common.encoding.EncodingsTest.BASE64_FIXTURE;
-import static org.apache.metron.stellar.common.encoding.EncodingsTest.BINARY_FIXTURE;
-import static org.apache.metron.stellar.common.encoding.EncodingsTest.HEX_FIXTURE;
-import static org.apache.metron.stellar.common.encoding.EncodingsTest.STRING_FIXTURE;
-import static org.apache.metron.stellar.common.encoding.EncodingsTest.STRING_FIXTURE_PLUS_NULL;
+import org.apache.commons.collections4.ListUtils;
+import org.apache.metron.stellar.dsl.DefaultVariableResolver;
+import org.junit.jupiter.api.Test;
+
+import java.util.*;
+
+import static org.apache.metron.stellar.common.encoding.EncodingsTest.*;
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import org.apache.commons.collections4.ListUtils;
-import org.apache.metron.stellar.common.encoding.Encodings;
-import org.apache.metron.stellar.dsl.DefaultVariableResolver;
-import org.junit.Assert;
-import org.junit.Test;
-
+import static org.junit.jupiter.api.Assertions.*;
 public class EncodingFunctionsTest {
 
   private static final Map<String, Object> variableMap = new HashMap<String, Object>() {{
@@ -54,74 +43,74 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void testSupportedEncodingsList() throws Exception{
+  public void testSupportedEncodingsList() {
     Object ret = run("GET_SUPPORTED_ENCODINGS()", new HashMap());
-    Assert.assertTrue(ret instanceof List );
+    assertTrue(ret instanceof List );
     List<String> list = (List<String>)ret;
     List<String> expected = new ArrayList<>(Arrays.asList("BASE32","BASE32HEX","BASE64","BINARY","HEX"));
-    Assert.assertTrue(ListUtils.isEqualList(expected,list));
+    assertTrue(ListUtils.isEqualList(expected,list));
   }
 
   @Test
-  public void testEncodingIs() throws Exception{
-    Assert.assertTrue(runPredicate("IS_ENCODING(BASE32_FIXTURE,'BASE32')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE,'BASE32')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("IS_ENCODING(BASE32HEX_FIXTURE,'BASE32HEX')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE,'BASE32HEX')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("IS_ENCODING(BASE64_FIXTURE,'BASE64')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE_PLUS_NULL,'BASE64')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("IS_ENCODING(BINARY_FIXTURE,'BINARY')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE,'BINARY')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("IS_ENCODING(HEX_FIXTURE,'HEX')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE,'HEX')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+  public void testEncodingIs() {
+    assertTrue(runPredicate("IS_ENCODING(BASE32_FIXTURE,'BASE32')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE,'BASE32')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("IS_ENCODING(BASE32HEX_FIXTURE,'BASE32HEX')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE,'BASE32HEX')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("IS_ENCODING(BASE64_FIXTURE,'BASE64')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE_PLUS_NULL,'BASE64')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("IS_ENCODING(BINARY_FIXTURE,'BINARY')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE,'BINARY')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("IS_ENCODING(HEX_FIXTURE,'HEX')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("IS_ENCODING(STRING_FIXTURE,'HEX')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
-  public void testDecode() throws Exception {
-    Assert.assertEquals(STRING_FIXTURE,run("DECODE(BASE32_FIXTURE,'BASE32')",variableMap));
-    Assert.assertEquals(STRING_FIXTURE, run("DECODE(BASE32HEX_FIXTURE,'BASE32HEX')",variableMap));
-    Assert.assertEquals(STRING_FIXTURE, run("DECODE(BASE64_FIXTURE,'BASE64')",variableMap));
-    Assert.assertEquals(STRING_FIXTURE, run("DECODE(BINARY_FIXTURE,'BINARY')",variableMap));
-    Assert.assertEquals(STRING_FIXTURE, run("DECODE(HEX_FIXTURE,'HEX')",variableMap));
+  public void testDecode() {
+    assertEquals(STRING_FIXTURE,run("DECODE(BASE32_FIXTURE,'BASE32')",variableMap));
+    assertEquals(STRING_FIXTURE, run("DECODE(BASE32HEX_FIXTURE,'BASE32HEX')",variableMap));
+    assertEquals(STRING_FIXTURE, run("DECODE(BASE64_FIXTURE,'BASE64')",variableMap));
+    assertEquals(STRING_FIXTURE, run("DECODE(BINARY_FIXTURE,'BINARY')",variableMap));
+    assertEquals(STRING_FIXTURE, run("DECODE(HEX_FIXTURE,'HEX')",variableMap));
 
     // these codecs will just decode away... and return garbage without verification
-    Assert.assertNotEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE32')",variableMap));
-    Assert.assertNotEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE32HEX')",variableMap));
-    Assert.assertNotEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE64')",variableMap));
+    assertNotEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE32')",variableMap));
+    assertNotEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE32HEX')",variableMap));
+    assertNotEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE64')",variableMap));
 
     // these codecs will fail to decode and return the original string without
     // verification
-    Assert.assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BINARY')",variableMap));
-    Assert.assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE, 'HEX')", variableMap));
+    assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BINARY')",variableMap));
+    assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE, 'HEX')", variableMap));
   }
 
   @Test
-  public void testDecodeWithVerify() throws Exception {
-    Assert.assertEquals(STRING_FIXTURE, run("DECODE(BASE32_FIXTURE,'BASE32',true)",variableMap));
-    Assert.assertEquals(STRING_FIXTURE, run("DECODE(BASE32HEX_FIXTURE,'BASE32HEX',true)",variableMap));
-    Assert.assertEquals(STRING_FIXTURE, run("DECODE(BASE64_FIXTURE,'BASE64',true)",variableMap));
-    Assert.assertEquals(STRING_FIXTURE, run("DECODE(BINARY_FIXTURE,'BINARY',true)",variableMap));
-    Assert.assertEquals(STRING_FIXTURE, run("DECODE(HEX_FIXTURE,'HEX',true)",variableMap));
+  public void testDecodeWithVerify() {
+    assertEquals(STRING_FIXTURE, run("DECODE(BASE32_FIXTURE,'BASE32',true)",variableMap));
+    assertEquals(STRING_FIXTURE, run("DECODE(BASE32HEX_FIXTURE,'BASE32HEX',true)",variableMap));
+    assertEquals(STRING_FIXTURE, run("DECODE(BASE64_FIXTURE,'BASE64',true)",variableMap));
+    assertEquals(STRING_FIXTURE, run("DECODE(BINARY_FIXTURE,'BINARY',true)",variableMap));
+    assertEquals(STRING_FIXTURE, run("DECODE(HEX_FIXTURE,'HEX',true)",variableMap));
 
 
 
     // with verification, we will get back the original string
-    Assert.assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE32',true)",variableMap));
-    Assert.assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE32HEX',true)",variableMap));
+    assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE32',true)",variableMap));
+    assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE32HEX',true)",variableMap));
     // if the string IS coincidentally compatable with base64, then it will decode away
-    Assert.assertNotEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE64',true)",variableMap));
+    assertNotEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BASE64',true)",variableMap));
     // if the string would fail... then we get the original
-    Assert.assertEquals(STRING_FIXTURE_PLUS_NULL,run("DECODE(STRING_FIXTURE_PLUS_NULL,'BASE64',true)",variableMap));
-    Assert.assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BINARY',true)",variableMap));
-    Assert.assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'HEX',true)",variableMap));
+    assertEquals(STRING_FIXTURE_PLUS_NULL,run("DECODE(STRING_FIXTURE_PLUS_NULL,'BASE64',true)",variableMap));
+    assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'BINARY',true)",variableMap));
+    assertEquals(STRING_FIXTURE,run("DECODE(STRING_FIXTURE,'HEX',true)",variableMap));
   }
 
   @Test
   public void testEncode() throws Exception {
-    Assert.assertEquals(BASE32_FIXTURE,run("ENCODE(STRING_FIXTURE,'BASE32')",variableMap));
-    Assert.assertEquals(BASE32HEX_FIXTURE, run("ENCODE(STRING_FIXTURE,'BASE32HEX')",variableMap));
-    Assert.assertEquals(BASE64_FIXTURE, run("ENCODE(STRING_FIXTURE,'BASE64')",variableMap));
-    Assert.assertEquals(BINARY_FIXTURE, run("ENCODE(STRING_FIXTURE,'BINARY')",variableMap));
-    Assert.assertEquals(HEX_FIXTURE, run("ENCODE(STRING_FIXTURE,'HEX')",variableMap));
+    assertEquals(BASE32_FIXTURE,run("ENCODE(STRING_FIXTURE,'BASE32')",variableMap));
+    assertEquals(BASE32HEX_FIXTURE, run("ENCODE(STRING_FIXTURE,'BASE32HEX')",variableMap));
+    assertEquals(BASE64_FIXTURE, run("ENCODE(STRING_FIXTURE,'BASE64')",variableMap));
+    assertEquals(BINARY_FIXTURE, run("ENCODE(STRING_FIXTURE,'BINARY')",variableMap));
+    assertEquals(HEX_FIXTURE, run("ENCODE(STRING_FIXTURE,'HEX')",variableMap));
   }
 }
\ No newline at end of file
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/FunctionalFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/FunctionalFunctionsTest.java
index e32a5cf..48b075b 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/FunctionalFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/FunctionalFunctionsTest.java
@@ -21,15 +21,15 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.hamcrest.CoreMatchers;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class FunctionalFunctionsTest {
 
@@ -45,7 +45,7 @@
             )
     {
       List<List<Object>> o = (List<List<Object>>) run(expr, new HashMap<>());
-      Assert.assertEquals(0, o.size());
+      assertEquals(0, o.size());
     }
   }
 
@@ -62,11 +62,11 @@
             )
     {
       List<List<Object>> o = (List<List<Object>>) run(expr, variables);
-      Assert.assertEquals(3, o.size());
+      assertEquals(3, o.size());
       for (int i = 0; i < 3; ++i) {
         List l = o.get(i);
-        Assert.assertEquals(1, l.size());
-        Assert.assertEquals(i+1, l.get(0));
+        assertEquals(1, l.size());
+        assertEquals(i+1, l.get(0));
       }
 
     }
@@ -77,19 +77,19 @@
             )
     {
       List<List<Object>> o = (List<List<Object>>) run(expr, variables);
-      Assert.assertEquals(4, o.size());
+      assertEquals(4, o.size());
       for (int i = 0; i < 3; ++i) {
         List l = o.get(i);
-        Assert.assertEquals(2, l.size());
-        Assert.assertEquals(i+1, l.get(0));
-        Assert.assertEquals(i+4, l.get(1));
+        assertEquals(2, l.size());
+        assertEquals(i+1, l.get(0));
+        assertEquals(i+4, l.get(1));
       }
       {
         int i = 3;
         List l = o.get(i);
-        Assert.assertEquals(2, l.size());
-        Assert.assertNull(l.get(0));
-        Assert.assertEquals(i+4, l.get(1));
+        assertEquals(2, l.size());
+        assertNull(l.get(0));
+        assertEquals(i+4, l.get(1));
       }
     }
 
@@ -103,7 +103,7 @@
             )
     {
       int o = (int) run(expr, variables);
-      Assert.assertEquals(1*4 + 2*5 + 3*6, o, 1e-7);
+      assertEquals(1*4 + 2*5 + 3*6, o, 1e-7);
     }
 
   }
@@ -120,7 +120,7 @@
             )
     {
       List<List<Object>> o = (List<List<Object>>) run(expr, new HashMap<>());
-      Assert.assertEquals(0, o.size());
+      assertEquals(0, o.size());
     }
   }
 
@@ -138,11 +138,11 @@
             )
     {
       List<List<Object>> o = (List<List<Object>>) run(expr, variables);
-      Assert.assertEquals(3, o.size());
+      assertEquals(3, o.size());
       for (int i = 0; i < 3; ++i) {
         List l = o.get(i);
-        Assert.assertEquals(1, l.size());
-        Assert.assertEquals(i+1, l.get(0));
+        assertEquals(1, l.size());
+        assertEquals(i+1, l.get(0));
       }
 
     }
@@ -153,12 +153,12 @@
             )
     {
       List<List<Object>> o = (List<List<Object>>) run(expr, variables);
-      Assert.assertEquals(3, o.size());
+      assertEquals(3, o.size());
       for (int i = 0; i < 3; ++i) {
         List l = o.get(i);
-        Assert.assertEquals(2, l.size());
-        Assert.assertEquals(i+1, l.get(0));
-        Assert.assertEquals(i+4, l.get(1));
+        assertEquals(2, l.size());
+        assertEquals(i+1, l.get(0));
+        assertEquals(i+4, l.get(1));
       }
     }
 
@@ -170,7 +170,7 @@
             )
     {
       int o = (int) run(expr, variables);
-      Assert.assertEquals(1*4 + 2*5 + 3*6, o, 1e-7);
+      assertEquals(1*4 + 2*5 + 3*6, o, 1e-7);
     }
 
   }
@@ -184,11 +184,11 @@
         )
     {
       Object o = run(expr, ImmutableMap.of("list", ImmutableList.of(ImmutableList.of(1, 2, 3), ImmutableList.of(4, 5, 6))));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<Number> result = (List<Number>) o;
-      Assert.assertEquals(2, result.size());
-      Assert.assertEquals(6, result.get(0));
-      Assert.assertEquals(15, result.get(1));
+      assertEquals(2, result.size());
+      assertEquals(6, result.get(0));
+      assertEquals(15, result.get(1));
     }
   }
 
@@ -207,12 +207,12 @@
         put("baz",null);
       }};
       Object o = run(expr,variableMap);
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<String> result = (List<String>) o;
-      Assert.assertEquals(3, result.size());
-      Assert.assertEquals(2, result.get(0));
-      Assert.assertEquals(4, result.get(1));
-      Assert.assertEquals(0, result.get(2));
+      assertEquals(3, result.size());
+      assertEquals(2, result.get(0));
+      assertEquals(4, result.get(1));
+      assertEquals(0, result.get(2));
     }
   }
 
@@ -230,11 +230,11 @@
         )
     {
       Object o = run(expr, ImmutableMap.of("foo", "foo", "bar", "bar"));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<String> result = (List<String>) o;
-      Assert.assertEquals(2, result.size());
-      Assert.assertEquals("FOO", result.get(0));
-      Assert.assertEquals("BAR", result.get(1));
+      assertEquals(2, result.size());
+      assertEquals("FOO", result.get(0));
+      assertEquals("BAR", result.get(1));
     }
   }
 
@@ -250,11 +250,11 @@
         )
     {
       Object o = run(expr, ImmutableMap.of("foo", "foo", "bar", "bar"));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<Boolean> result = (List<Boolean>) o;
-      Assert.assertEquals(2, result.size());
-      Assert.assertEquals(true, result.get(0));
-      Assert.assertEquals(false, result.get(1));
+      assertEquals(2, result.size());
+      assertEquals(true, result.get(0));
+      assertEquals(false, result.get(1));
     }
   }
 
@@ -271,10 +271,10 @@
         )
     {
       Object o = run(expr, ImmutableMap.of("foo", "foo", "bar", "bar"));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<String> result = (List<String>) o;
-      Assert.assertEquals(1, result.size());
-      Assert.assertEquals("foo", result.get(0));
+      assertEquals(1, result.size());
+      assertEquals("foo", result.get(0));
     }
   }
 
@@ -288,10 +288,10 @@
         )
     {
       Object o = run(expr, ImmutableMap.of("foo", "foo", "bar", "bar"));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<String> result = (List<String>) o;
-      Assert.assertEquals(1, result.size());
-      Assert.assertEquals("foo", result.get(0));
+      assertEquals(1, result.size());
+      assertEquals("foo", result.get(0));
     }
   }
 
@@ -309,10 +309,10 @@
         put("baz",null);
       }};
       Object o = run(expr,variableMap);
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<String> result = (List<String>) o;
-      Assert.assertEquals(1, result.size());
-      Assert.assertEquals(null, result.get(0));
+      assertEquals(1, result.size());
+      assertNull(result.get(0));
     }
   }
 
@@ -331,10 +331,10 @@
         put("baz",null);
       }};
       Object o = run(expr,variableMap);
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<String> result = (List<String>) o;
-      Assert.assertEquals(1, result.size());
-      Assert.assertEquals("foo", result.get(0));
+      assertEquals(1, result.size());
+      assertEquals("foo", result.get(0));
     }
   }
 
@@ -351,9 +351,9 @@
         )
     {
       Object o = run(expr, ImmutableMap.of("foo", "foo", "bar", "bar"));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<String> result = (List<String>) o;
-      Assert.assertEquals(0, result.size());
+      assertEquals(0, result.size());
     }
   }
 
@@ -369,11 +369,11 @@
         )
     {
       Object o = run(expr, ImmutableMap.of("foo", "foo", "bar", "bar"));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<String> result = (List<String>) o;
-      Assert.assertEquals(2, result.size());
-      Assert.assertEquals("foo", result.get(0));
-      Assert.assertEquals("bar", result.get(1));
+      assertEquals(2, result.size());
+      assertEquals("foo", result.get(0));
+      assertEquals("bar", result.get(1));
     }
   }
 
@@ -390,9 +390,9 @@
         put("baz",null);
       }};
       Object o = run(expr,variableMap);
-      Assert.assertTrue(o instanceof Number);
+      assertTrue(o instanceof Number);
       Number result = (Number) o;
-      Assert.assertEquals(6, result.intValue());
+      assertEquals(6, result.intValue());
     }
   }
 
@@ -404,35 +404,34 @@
         )
     {
       Object o = run(expr, ImmutableMap.of("foo", 1, "bar", 2));
-      Assert.assertTrue(o instanceof Number);
+      assertTrue(o instanceof Number);
       Number result = (Number) o;
-      Assert.assertEquals(6, result.intValue());
+      assertEquals(6, result.intValue());
     }
   }
 
   @Test
-  @SuppressWarnings("unchecked")
   public void testReduce_on_various_list_sizes() {
     {
       String expr = "REDUCE([ 1, 2, 3, 4 ], (x, y) -> x + y , 0 )";
       Object o = run(expr, ImmutableMap.of());
-      Assert.assertTrue(o instanceof Number);
+      assertTrue(o instanceof Number);
       Number result = (Number) o;
-      Assert.assertEquals(10, result.intValue());
+      assertEquals(10, result.intValue());
     }
     {
       String expr = "REDUCE([ 1, 2 ], (x, y) -> x + y , 0 )";
       Object o = run(expr, ImmutableMap.of());
-      Assert.assertTrue(o instanceof Number);
+      assertTrue(o instanceof Number);
       Number result = (Number) o;
-      Assert.assertEquals(3, result.intValue());
+      assertEquals(3, result.intValue());
     }
     {
       String expr = "REDUCE([ 1 ], (x, y) -> x + y , 0 )";
       Object o = run(expr, ImmutableMap.of());
-      Assert.assertTrue(o instanceof Number);
+      assertTrue(o instanceof Number);
       Number result = (Number) o;
-      Assert.assertEquals(1, result.intValue());
+      assertEquals(1, result.intValue());
     }
   }
 
@@ -444,12 +443,12 @@
         )
     {
       Object o = run(expr, ImmutableMap.of("foo", 1, "bar", 2,"x",0,"y",0));
-      Assert.assertTrue(o instanceof List);
+      assertTrue(o instanceof List);
       List<String> result = (List<String>) o;
-      Assert.assertEquals(3, result.size());
-      Assert.assertEquals("foo", result.get(0));
-      Assert.assertEquals("bar", result.get(1));
-      Assert.assertEquals("grok", result.get(2));
+      assertEquals(3, result.size());
+      assertEquals("foo", result.get(0));
+      assertEquals("bar", result.get(1));
+      assertEquals("grok", result.get(2));
     }
   }
 
@@ -457,11 +456,11 @@
   public void testReduce_returns_null_when_less_than_3_args() {
     {
       String expr = "REDUCE([ 1, 2, 3 ], (x, y) -> LIST_ADD(x, y))";
-      Assert.assertThat(run(expr, ImmutableMap.of()), CoreMatchers.equalTo(null));
+      assertThat(run(expr, ImmutableMap.of()), CoreMatchers.equalTo(null));
     }
     {
       String expr = "REDUCE([ 1, 2, 3 ])";
-      Assert.assertThat(run(expr, ImmutableMap.of()), CoreMatchers.equalTo(null));
+      assertThat(run(expr, ImmutableMap.of()), CoreMatchers.equalTo(null));
     }
   }
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/HashFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/HashFunctionsTest.java
index 6cea13c..b8212b8 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/HashFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/HashFunctionsTest.java
@@ -23,8 +23,7 @@
 import org.apache.commons.lang.SerializationUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.metron.stellar.common.utils.hashing.tlsh.TLSHHasher;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.Serializable;
 import java.nio.charset.StandardCharsets;
@@ -35,72 +34,72 @@
 import java.util.concurrent.ForkJoinPool;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class HashFunctionsTest {
   static final Hex HEX = new Hex(StandardCharsets.UTF_8);
   final HashFunctions.ListSupportedHashTypes listSupportedHashTypes = new HashFunctions.ListSupportedHashTypes();
   final HashFunctions.Hash hash = new HashFunctions.Hash();
 
-  @Test(expected = IllegalArgumentException.class)
-  public void nullArgumentsShouldFail() throws Exception {
-    listSupportedHashTypes.apply(null);
-  }
-
-  @Test(expected = IllegalArgumentException.class)
-  public void getSupportedHashAlgorithmsCalledWithParametersShouldFail() throws Exception {
-    listSupportedHashTypes.apply(Collections.singletonList("bogus"));
+  @Test
+  public void nullArgumentsShouldFail() {
+    assertThrows(IllegalArgumentException.class, () -> listSupportedHashTypes.apply(null));
   }
 
   @Test
-  public void listSupportedHashTypesReturnsAtMinimumTheHashingAlgorithmsThatMustBeSupported() throws Exception {
+  public void getSupportedHashAlgorithmsCalledWithParametersShouldFail() {
+    assertThrows(IllegalArgumentException.class, () -> listSupportedHashTypes.apply(Collections.singletonList("bogus")));
+  }
+
+  @Test
+  public void listSupportedHashTypesReturnsAtMinimumTheHashingAlgorithmsThatMustBeSupported() {
     final List<String> requiredAlgorithmsByJava = Arrays.asList("MD5", "SHA", "SHA-256"); // These are required for all Java platforms (see java.security.MessageDigest). Note: SHA is SHA-1
     final Collection<String> supportedHashes = listSupportedHashTypes.apply(Collections.emptyList());
     requiredAlgorithmsByJava.forEach(a -> assertTrue(supportedHashes.contains(a)));
   }
 
-  @Test(expected = IllegalArgumentException.class)
-  public void nullArgumentListShouldThrowException() throws Exception {
-    hash.apply(null);
-  }
-
-  @Test(expected = IllegalArgumentException.class)
-  public void emptyArgumentListShouldThrowException() throws Exception {
-    hash.apply(Collections.emptyList());
-  }
-
-  @Test(expected = IllegalArgumentException.class)
-  public void singleArgumentListShouldThrowException() throws Exception {
-    hash.apply(Collections.singletonList("some value."));
-  }
-
-  @Test(expected = IllegalArgumentException.class)
-  public void argumentListWithMoreThanTwoValuesShouldThrowException3() throws Exception {
-    hash.apply(Arrays.asList("1", "2", "3"));
-  }
-
-  @Test(expected = IllegalArgumentException.class)
-  public void argumentListWithMoreThanTwoValuesShouldThrowException4() throws Exception {
-    hash.apply(Arrays.asList("1", "2", "3", "4"));
-  }
-
-  @Test(expected = IllegalArgumentException.class)
-  public void invalidAlgorithmArgumentShouldThrowException() throws Exception {
-    hash.apply(Arrays.asList("value to hash", "invalidAlgorithm"));
+  @Test
+  public void nullArgumentListShouldThrowException() {
+    assertThrows(IllegalArgumentException.class, () -> hash.apply(null));
   }
 
   @Test
-  public void invalidNullAlgorithmArgumentShouldReturnNull() throws Exception {
+  public void emptyArgumentListShouldThrowException() {
+    assertThrows(IllegalArgumentException.class, () -> hash.apply(Collections.emptyList()));
+  }
+
+  @Test
+  public void singleArgumentListShouldThrowException() {
+    assertThrows(IllegalArgumentException.class, () -> hash.apply(Collections.singletonList("some value.")));
+  }
+
+  @Test
+  public void argumentListWithMoreThanTwoValuesShouldThrowException3() {
+    assertThrows(IllegalArgumentException.class, () -> hash.apply(Arrays.asList("1", "2", "3")));
+  }
+
+  @Test
+  public void argumentListWithMoreThanTwoValuesShouldThrowException4() {
+    assertThrows(IllegalArgumentException.class, () -> hash.apply(Arrays.asList("1", "2", "3", "4")));
+  }
+
+  @Test
+  public void invalidAlgorithmArgumentShouldThrowException() {
+    assertThrows(IllegalArgumentException.class, () -> hash.apply(Arrays.asList("value to hash", "invalidAlgorithm")));
+  }
+
+  @Test
+  public void invalidNullAlgorithmArgumentShouldReturnNull() {
     assertNull(hash.apply(Arrays.asList("value to hash", null)));
   }
 
   @Test
-  public void nullInputForValueToHashShouldReturnHashedEncodedValueOf0x00() throws Exception {
+  public void nullInputForValueToHashShouldReturnHashedEncodedValueOf0x00() {
     assertEquals(StringUtils.repeat('0', 32), hash.apply(Arrays.asList(null, "md5")));
   }
 
   @Test
-  public void nullInputForValueToHashShouldReturnHashedEncodedValueOf0x00InDirectStellarCall() throws Exception {
+  public void nullInputForValueToHashShouldReturnHashedEncodedValueOf0x00InDirectStellarCall() {
     final String algorithm = "'md5'";
     final Map<String, Object> variables = new HashMap<>();
     variables.put("toHash", null);
@@ -109,7 +108,7 @@
   }
 
   @Test
-  public void allAlgorithmsForMessageDigestShouldBeAbleToHash() throws Exception {
+  public void allAlgorithmsForMessageDigestShouldBeAbleToHash() {
     final String valueToHash = "My value to hash";
     final Set<String> algorithms = Security.getAlgorithms("MessageDigest");
 
@@ -126,7 +125,7 @@
   }
 
   @Test
-  public void allAlgorithmsForMessageDigestShouldBeAbleToHashDirectStellarCall() throws Exception {
+  public void allAlgorithmsForMessageDigestShouldBeAbleToHashDirectStellarCall() {
     final String valueToHash = "My value to hash";
     final Set<String> algorithms = Security.getAlgorithms("MessageDigest");
 
@@ -190,7 +189,7 @@
   }
 
   @Test
-  public void aNonNullNonSerializableObjectReturnsAValueOfNull() throws Exception {
+  public void aNonNullNonSerializableObjectReturnsAValueOfNull() {
     final Map<String, Object> variables = new HashMap<>();
     variables.put("toHash", new Object());
     assertNull(run("HASH(toHash, 'md5')", variables));
@@ -208,7 +207,7 @@
   String TLSH_EXPECTED = "6FF02BEF718027B0160B4391212923ED7F1A463D563B1549B86CF62973B197AD2731F8";
 
   @Test
-  public void tlsh_happyPath() throws Exception {
+  public void tlsh_happyPath() {
     final Map<String, Object> variables = new HashMap<>();
 
     variables.put("toHash", TLSH_DATA);
@@ -221,21 +220,21 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void tlsh_multiBin() throws Exception {
+  public void tlsh_multiBin() {
     final Map<String, Object> variables = new HashMap<>();
 
     variables.put("toHash", TLSH_DATA);
     Map<String, String> out = (Map<String, String>)run("HASH(toHash, 'tlsh', { 'hashes' : [ 8, 16, 32 ]} )", variables);
 
-    Assert.assertTrue(out.containsKey(TLSHHasher.TLSH_KEY));
+    assertTrue(out.containsKey(TLSHHasher.TLSH_KEY));
     for(int h : ImmutableList.of(8, 16, 32)) {
-      Assert.assertTrue(out.containsKey(TLSHHasher.TLSH_BIN_KEY + "_" + h));
+      assertTrue(out.containsKey(TLSHHasher.TLSH_BIN_KEY + "_" + h));
     }
   }
 
 
   @Test
-  public void tlsh_multithread() throws Exception {
+  public void tlsh_multithread() {
     //we want to ensure that everything is threadsafe, so we'll spin up some random data
     //generate some hashes and then do it all in parallel and make sure it all matches.
     Map<Map.Entry<byte[], Map<String, Object>>, String> hashes = new HashMap<>();
@@ -249,7 +248,7 @@
           put(TLSHHasher.Config.CHECKSUM.key, r.nextBoolean() ? 1 : 3);
       }};
       String hash = (String)run("HASH(data, 'tlsh', config)", ImmutableMap.of("config", config, "data", d));
-      Assert.assertNotNull(hash);
+      assertNotNull(hash);
       hashes.put(new AbstractMap.SimpleEntry<>(d, config), hash);
     }
     ForkJoinPool forkJoinPool = new ForkJoinPool(5);
@@ -260,7 +259,7 @@
                      Map<String, Object> config = kv.getKey().getValue();
                      byte[] data = kv.getKey().getKey();
                      String hash = (String)run("HASH(data, 'tlsh', config)", ImmutableMap.of("config", config, "data", data));
-                     Assert.assertEquals(hash, kv.getValue());
+                     assertEquals(hash, kv.getValue());
                    }
             )
     );
@@ -268,40 +267,40 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void tlsh_similarity() throws Exception {
+  public void tlsh_similarity() {
     for(Map.Entry<String, String> kv : ImmutableMap.of("been", "ben", "document", "dokumant", "code", "cad").entrySet()) {
       Map<String, Object> variables = ImmutableMap.of("toHash", TLSH_DATA, "toHashSimilar", TLSH_DATA.replace(kv.getKey(), kv.getValue()));
       Map<String, Object> bin1 = (Map<String, Object>) run("HASH(toHashSimilar, 'tlsh', { 'hashes' : 4, 'bucketSize' : 128 })", variables);
       Map<String, Object> bin2 = (Map<String, Object>) run("HASH(toHash, 'tlsh', { 'hashes' : [ 4 ], 'bucketSize' : 128 })", variables);
-      assertEquals(kv.getKey() + " != " + kv.getValue() + " because " + bin1.get("tlsh") + " != " + bin2.get("tlsh"), bin1.get("tlsh_bin"), bin2.get("tlsh_bin"));
+      assertEquals(bin1.get("tlsh_bin"), bin2.get("tlsh_bin"), kv.getKey() + " != " + kv.getValue() + " because " + bin1.get("tlsh") + " != " + bin2.get("tlsh"));
       assertNotEquals(bin1.get("tlsh"), bin2.get("tlsh"));
       Map<String, Object> distVariables = ImmutableMap.of("hash1", bin1.get(TLSHHasher.TLSH_KEY), "hash2", bin2.get(TLSHHasher.TLSH_KEY));
       {
         //ensure the diff is minimal
         Integer diff = (Integer) run("TLSH_DIST( hash1, hash2)", distVariables);
         Integer diffReflexive = (Integer) run("TLSH_DIST( hash2, hash1)", distVariables);
-        Assert.assertTrue("diff == " + diff, diff < 100);
-        Assert.assertEquals(diff, diffReflexive);
+        assertTrue(diff < 100, "diff == " + diff);
+        assertEquals(diff, diffReflexive);
       }
 
       {
         //ensure that d(x,x) == 0
         Integer diff = (Integer) run("TLSH_DIST( hash1, hash1)", distVariables);
-        Assert.assertEquals((int)0, (int)diff);
+        assertEquals((int)0, (int)diff);
       }
     }
   }
 
-  @Test(expected=Exception.class)
-  public void tlshDist_invalidInput() throws Exception {
+  @Test
+  public void tlshDist_invalidInput() {
     final Map<String, Object> variables = new HashMap<>();
     variables.put("hash1", 1);
     variables.put("hash2", TLSH_EXPECTED);
-    run("TLSH_DIST( hash1, hash1)", variables);
+    assertThrows(Exception.class, () -> run("TLSH_DIST( hash1, hash1)", variables));
   }
 
   @Test
-  public void tlsh_insufficientComplexity() throws Exception {
+  public void tlsh_insufficientComplexity() {
     final Map<String, Object> variables = new HashMap<>();
     String data = "Metron is the best";
     variables.put("toHash", data);
@@ -309,7 +308,7 @@
   }
 
   @Test
-  public void tlsh_nullInput() throws Exception {
+  public void tlsh_nullInput() {
     final Map<String, Object> variables = new HashMap<>();
     String data = null;
     variables.put("toHash", data);
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/MatchTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/MatchTest.java
index f6ab20d..da5e3a9 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/MatchTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/MatchTest.java
@@ -17,18 +17,19 @@
  */
 package org.apache.metron.stellar.dsl.functions;
 
-import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
-import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
-
 import com.google.common.collect.ImmutableMap;
+import org.apache.metron.stellar.dsl.DefaultVariableResolver;
+import org.apache.metron.stellar.dsl.ParseException;
+import org.junit.jupiter.api.Test;
+
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.metron.stellar.dsl.DefaultVariableResolver;
-import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
+
+import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class MatchTest {
 
@@ -37,17 +38,17 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testMissingVariableFalsey() {
-    Assert.assertTrue(runPredicate(
+    assertTrue(runPredicate(
         "match{NOT(is_alert) => true, foo > 5 => false, foo > 10 => false, default => false}",
         new HashMap() {{
           put("foo", 100);
         }}));
-    Assert.assertFalse(runPredicate(
+    assertFalse(runPredicate(
         "match{is_alert => true, foo > 5 => false, foo > 10 => false, default => false}",
         new HashMap() {{
           put("foo", 100);
         }}));
-    Assert.assertFalse(runPredicate(
+    assertFalse(runPredicate(
         "match{foo > 5 => false, is_alert => true, foo > 10 => false, default => false}",
         new HashMap() {{
           put("foo", 100);
@@ -57,12 +58,12 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testEmptyListFalsey() {
-    Assert.assertTrue(runPredicate(
+    assertTrue(runPredicate(
         "match{NOT([]) => true, foo > 5 => false, foo > 10 => false, default => false}",
         new HashMap() {{
           put("foo", 100);
         }}));
-    Assert.assertFalse(runPredicate(
+    assertFalse(runPredicate(
         "match{[] => true, foo > 5 => false, foo > 10 => false, default => false}",
         new HashMap() {{
           put("foo", 100);
@@ -72,7 +73,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testThreeTrueClausesFirstOnlyFires() {
-    Assert.assertTrue(runPredicate(
+    assertTrue(runPredicate(
         "match{foo > 0 => true, foo > 5 => false, foo > 10 => false, default => false}",
         new HashMap() {{
           put("foo", 100);
@@ -82,7 +83,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testTwoClausesSecondFires() {
-    Assert.assertTrue(runPredicate("match{foo < 0 => false, foo < 500 => true, default => false}",
+    assertTrue(runPredicate("match{foo < 0 => false, foo < 500 => true, default => false}",
         new HashMap() {{
           put("foo", 100);
         }}));
@@ -97,15 +98,15 @@
           put("foo", 500);
         }});
 
-    Assert.assertTrue(list.size() == 1);
-    Assert.assertTrue(list.contains("oops"));
+    assertEquals(1, list.size());
+    assertTrue(list.contains("oops"));
   }
 
   @Test
   @SuppressWarnings("unchecked")
   public void testShortCircuitWithThrows() {
 
-    Assert.assertEquals("ok",
+    assertEquals("ok",
         run("match{ foo > 100 => THROW('oops'), foo > 200 => THROW('oh no'), default => 'ok' }",
             new HashMap() {{
               put("foo", 50);
@@ -117,27 +118,27 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testMatchLambda() {
-    Assert.assertTrue(
+    assertTrue(
         runPredicate("match { 1 >= 0 => ()-> true, default => ()->false }", new HashMap() {{
           put("foo", 0);
         }}));
-    Assert.assertTrue(
+    assertTrue(
         runPredicate("match { foo == 0 => ()-> true, default => ()-> false }", new HashMap() {{
           put("foo", 0);
         }}));
 
-    Assert.assertFalse(
+    assertFalse(
         runPredicate("match { foo == 0 => ()-> true, default => ()-> false }", new HashMap() {{
           put("foo", 1);
         }}));
 
-    Assert.assertTrue(runPredicate(
+    assertTrue(runPredicate(
         "match { foo == 0 => ()-> false, foo == 1 => ()-> true, default => ()-> false }",
         new HashMap() {{
           put("foo", 1);
         }}));
 
-    Assert.assertTrue(runPredicate(
+    assertTrue(runPredicate(
         "match { foo == 0 => ()-> bFalse, foo == 1 => ()-> bTrue, default => ()-> bFalse }",
         new HashMap() {{
           put("foo", 1);
@@ -145,7 +146,7 @@
           put("bTrue", true);
         }}));
 
-    Assert.assertTrue(runPredicate(
+    assertTrue(runPredicate(
         "match { foo == 0 => ()-> bFalse, foo == 1 => ()-> bTrue, default => ()-> bFalse }",
         new HashMap() {{
           put("foo", 1);
@@ -164,19 +165,19 @@
 
     Object o = run(expr, ImmutableMap.of("foo", "foo", "bar", "bar", "var1", true));
 
-    Assert.assertTrue(o instanceof List);
+    assertTrue(o instanceof List);
 
     List<String> result = (List<String>) o;
 
-    Assert.assertEquals(2, result.size());
-    Assert.assertEquals("FOO", result.get(0));
-    Assert.assertEquals("BAR", result.get(1));
+    assertEquals(2, result.size());
+    assertEquals("FOO", result.get(0));
+    assertEquals("BAR", result.get(1));
   }
 
   @Test
   @SuppressWarnings("unchecked")
   public void workingMatchWithMap() {
-    Assert.assertEquals(Arrays.asList("OK", "HAHA"),
+    assertEquals(Arrays.asList("OK", "HAHA"),
         run("match{ foo > 100 => THROW('oops'), foo > 200 => THROW('oh no'), foo >= 50 => MAP(['ok', 'haha'], (a) -> TO_UPPER(a)), default=> 'a' }",
             new HashMap() {{
               put("foo", 50);
@@ -191,9 +192,9 @@
         new HashMap() {{
           put("foo", 500);
         }});
-    Assert.assertTrue(ret.size() == 2);
-    Assert.assertTrue(ret.contains("OK"));
-    Assert.assertTrue(ret.contains("HAHA"));
+    assertEquals(2, ret.size());
+    assertTrue(ret.contains("OK"));
+    assertTrue(ret.contains("HAHA"));
   }
 
   @Test
@@ -208,7 +209,6 @@
 
   // REGEX
   @Test
-  @SuppressWarnings("unchecked")
   public void testMatchRegexMatch() {
     final Map<String, String> variables = new HashMap<String, String>() {{
       put("numbers", "12345");
@@ -217,10 +217,10 @@
       put("empty", "");
     }};
 
-    Assert.assertTrue(
+    assertTrue(
         runPredicate("match{ REGEXP_MATCH(numbers,numberPattern)=> true, default => false}",
             new DefaultVariableResolver(variables::get, variables::containsKey)));
-    Assert.assertFalse(
+    assertFalse(
         runPredicate("match{ REGEXP_MATCH(letters,numberPattern) => true, default =>false}",
             new DefaultVariableResolver(variables::get, variables::containsKey)));
   }
@@ -230,7 +230,7 @@
   @SuppressWarnings("unchecked")
   public void testMatchBareStatements() {
 
-    Assert.assertTrue(
+    assertTrue(
         runPredicate("match { foo == 0 => bFalse, foo == 1 => bTrue, default => false }",
             new HashMap() {{
               put("foo", 1);
@@ -238,7 +238,7 @@
               put("bTrue", true);
             }}));
 
-    Assert.assertEquals("warning",
+    assertEquals("warning",
         run("match{ threat.triage.level < 10 => 'info', threat.triage.level < 20 => 'warning', default => 'critical' }",
             new HashMap() {{
               put("threat.triage.level", 15);
@@ -249,7 +249,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testWithFunction() {
-    Assert.assertEquals("WARNING",
+    assertEquals("WARNING",
         run("match{ threat.triage.level < 10 => 'info', threat.triage.level < 20 => TO_UPPER('warning'), default => 'critical' }",
             new HashMap() {{
               put("threat.triage.level", 15);
@@ -259,14 +259,14 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testWithFunctionMultiArgs() {
-    Assert.assertEquals("false",
+    assertEquals("false",
         run("match{ threat.triage.level < 10 => 'info', threat.triage.level < 20 => TO_STRING(IS_ENCODING(other,'BASE32')), default => 'critical' }",
             new HashMap() {{
               put("threat.triage.level", 15);
               put("other", "value");
             }}));
 
-    Assert.assertEquals(false,
+    assertEquals(false,
         run("match{ threat.triage.level < 10 => 'info', threat.triage.level < 20 => IS_ENCODING(other,'BASE32'), default => 'critical' }",
             new HashMap() {{
               put("threat.triage.level", 15);
@@ -281,14 +281,14 @@
   @SuppressWarnings("unchecked")
   public void testLogical() {
 
-    Assert.assertTrue(
+    assertTrue(
         runPredicate("match { foo == 0  OR bar == 'yes' => ()-> true, default => ()-> false }",
             new HashMap() {{
               put("foo", 1);
               put("bar", "yes");
             }}));
 
-    Assert.assertTrue(
+    assertTrue(
         runPredicate("match { foo == 0  AND bar == 'yes' => ()-> true, default => ()-> false }",
             new HashMap() {{
               put("foo", 0);
@@ -299,7 +299,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testTernaryFuncWithoutIfCheck() {
-    Assert.assertEquals("a",
+    assertEquals("a",
         run("match{ foo == 5 ? true : false => 'a', default => 'ok' }", new HashMap() {{
           put("foo", 5);
         }}));
@@ -308,7 +308,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testTernaryFuncAsMatchAction() {
-    Assert.assertEquals(false, run("match{ threat.triage.level < 10 => 'info', threat.triage.level < 20 => IS_ENCODING(other,'BASE32')? true : false, default => 'critical' }",
+    assertEquals(false, run("match{ threat.triage.level < 10 => 'info', threat.triage.level < 20 => IS_ENCODING(other,'BASE32')? true : false, default => 'critical' }",
         new HashMap() {{
           put("threat.triage.level", 15);
           put("other", "value");
@@ -318,7 +318,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testVariableIFCheck() {
-    Assert.assertEquals("a",
+    assertEquals("a",
         run("match{ IF foo == 5 THEN true ELSE false => 'a', default => 'ok' }", new HashMap() {{
           put("foo", 5);
         }}));
@@ -327,7 +327,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testIfThenElseAction() {
-    Assert.assertEquals(2,run("match{ foo == true => IF bar THEN 1 ELSE 2, default => 0}", new HashMap(){{
+    assertEquals(2,run("match{ foo == true => IF bar THEN 1 ELSE 2, default => 0}", new HashMap(){{
       put("foo",true);
       put("bar",false);
     }}));
@@ -335,7 +335,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testVariableOnly() {
-    Assert.assertEquals("a", run("match{ foo => 'a', default => null}", new HashMap() {{
+    assertEquals("a", run("match{ foo => 'a', default => null}", new HashMap() {{
       put("foo", true);
     }}));
   }
@@ -343,7 +343,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testVariableEqualsCheck() {
-    Assert.assertEquals("a", run("match{ foo == 5 => 'a', default => 'ok' }", new HashMap() {{
+    assertEquals("a", run("match{ foo == 5 => 'a', default => 'ok' }", new HashMap() {{
       put("foo", 5);
     }}));
   }
@@ -351,7 +351,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testVariableOnlyCheckWithDefault() {
-    Assert.assertEquals("a", run("match{ foo => 'a', default => 'b' }", new HashMap() {{
+    assertEquals("a", run("match{ foo => 'a', default => 'b' }", new HashMap() {{
       put("foo", true);
     }}));
   }
@@ -359,7 +359,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testHandleVariableEqualsCheckWithDefault() {
-    Assert.assertEquals("a", run("match{ foo == true => 'a', default=> 'b' }", new HashMap() {{
+    assertEquals("a", run("match{ foo == true => 'a', default=> 'b' }", new HashMap() {{
       put("foo", true);
     }}));
   }
@@ -367,7 +367,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testNullInCheckedReturnNull() {
-    Assert.assertNull(
+    assertNull(
         run(
             "match{ foo == null => null, foo == true => 'not that null', default => 'really not that null'}",
             new HashMap(){{
@@ -377,28 +377,36 @@
 
   // SYNTAX ERRORS
 
-  @Test(expected = ParseException.class)
+  @Test
   @SuppressWarnings("unchecked")
   public void testMatchErrorNoDefault() {
-
-    run("match{ foo > 100 => 'greater than 100', foo > 200 => 'greater than 200' }",
-        new HashMap() {{
-          put("foo", 50);
-        }});
-
+    assertThrows(
+        ParseException.class,
+        () ->
+            run(
+                "match{ foo > 100 => 'greater than 100', foo > 200 => 'greater than 200' }",
+                new HashMap() {
+                  {
+                    put("foo", 50);
+                  }
+                }));
   }
 
-
-  @Test(expected = ParseException.class)
+  @Test
   @SuppressWarnings("unchecked")
   public void testNestedMatchNotSupportted() {
     // we cannot nest short circuit types in stellar
-    Assert.assertEquals(false,
-        run("match{  x == 0 => match{ y == 10 => false, default => true}, default => true}",
-            new HashMap() {{
-              put("x", 0);
-              put("y", 10);
-            }}));
+    assertThrows(
+        ParseException.class,
+        () ->
+            run(
+                "match{  x == 0 => match{ y == 10 => false, default => true}, default => true}",
+                new HashMap() {
+                  {
+                    put("x", 0);
+                    put("y", 10);
+                  }
+                }));
   }
 
   @Test
@@ -408,6 +416,6 @@
       put("foo", 500);
     }});
     List l = (List) o;
-    Assert.assertTrue(l.size() == 1);
+    assertEquals(1, l.size());
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/MathFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/MathFunctionsTest.java
index ad15259..e301157 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/MathFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/MathFunctionsTest.java
@@ -19,8 +19,6 @@
  */
 package org.apache.metron.stellar.dsl.functions;
 
-import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
-
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import org.apache.metron.stellar.common.StellarProcessor;
@@ -28,12 +26,14 @@
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 
+import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.*;
+
 public class MathFunctionsTest {
 
   public static final double EPSILON = 1e-7;
@@ -44,7 +44,7 @@
   public static Object run(String rule, Map<String, Object> variables) {
     Context context = Context.EMPTY_CONTEXT();
     StellarProcessor processor = new StellarProcessor();
-    Assert.assertTrue(rule + " not valid.", processor.validate(rule, context));
+    assertTrue(processor.validate(rule, context), rule + " not valid.");
     return processor.parse(rule, new DefaultVariableResolver(v -> variables.get(v),v -> variables.containsKey(v)), StellarFunctions.FUNCTION_RESOLVER(), context);
   }
 
@@ -173,19 +173,19 @@
 
   @Test
   public void testIsNaN() {
-    Assert.assertTrue(runPredicate("IS_NAN(NaN)", new HashMap<>()));
-    Assert.assertFalse(runPredicate("IS_NAN(1.0)", new HashMap<>()));
-    Assert.assertTrue(runPredicate("IS_NAN(0.0/0.0)",new HashMap<>()));
+    assertTrue(runPredicate("IS_NAN(NaN)", new HashMap<>()));
+    assertFalse(runPredicate("IS_NAN(1.0)", new HashMap<>()));
+    assertTrue(runPredicate("IS_NAN(0.0/0.0)",new HashMap<>()));
   }
 
-  @Test(expected = ParseException.class)
+  @Test
   public void testIsNanWithNotNumberType() {
-    runPredicate("IS_NAN('casey')", new HashMap<>());
+    assertThrows(ParseException.class, () -> runPredicate("IS_NAN('casey')", new HashMap<>()));
   }
 
-  @Test(expected= ParseException.class)
+  @Test
   public void testIsNanWithNoArgs() {
-    runPredicate("IS_NAN()", new HashMap<>());
+    assertThrows(ParseException.class, () -> runPredicate("IS_NAN()", new HashMap<>()));
   }
 
   public void assertValues(String func, Map<Double, Double> expected) {
@@ -196,9 +196,15 @@
          )
       {
         if (Double.isNaN(test.getValue())) {
-          Assert.assertTrue(expr + " != NaN, where value == " + test.getKey(), Double.isNaN(toDouble(run(expr, ImmutableMap.of("value", test.getKey())))));
+          assertTrue(
+              Double.isNaN(toDouble(run(expr, ImmutableMap.of("value", test.getKey())))),
+              expr + " != NaN, where value == " + test.getKey());
         } else {
-          Assert.assertEquals(expr + " != " + test.getValue() + " (where value == " + test.getKey() + ")", test.getValue(), toDouble(run(expr, ImmutableMap.of("value", test.getKey()))), EPSILON);
+          assertEquals(
+              test.getValue(),
+              toDouble(run(expr, ImmutableMap.of("value", test.getKey()))),
+              EPSILON,
+              expr + " != " + test.getValue() + " (where value == " + test.getKey() + ")");
         }
       }
     }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/OrdinalFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/OrdinalFunctionsTest.java
index fb18c39..2c53b33 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/OrdinalFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/OrdinalFunctionsTest.java
@@ -25,25 +25,25 @@
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.ParseException;
 import org.apache.metron.stellar.dsl.StellarFunctions;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import static org.hamcrest.core.Is.is;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.*;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 
 public class OrdinalFunctionsTest {
 
 
   private static Context context;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     context = new Context.Builder().build();
   }
   @Test
-  public void testMaxOfMixedNumerical() throws Exception {
+  public void testMaxOfMixedNumerical() {
 
     List<Object> inputList = new ArrayList<Object>(){{
       add(12L);
@@ -52,12 +52,12 @@
     }};
 
     Object res = run("MAX(input_list)", ImmutableMap.of("input_list", inputList));
-    Assert.assertNotNull(res);
-    Assert.assertEquals(56.3, res);
+    assertNotNull(res);
+    assertEquals(56.3, res);
   }
 
   @Test
-  public void testMinOfMixedNumerical() throws Exception {
+  public void testMinOfMixedNumerical() {
 
     List<Object> inputList = new ArrayList<Object>(){{
       add(12L);
@@ -66,11 +66,11 @@
     }};
 
     Object res = run("MIN(input_list)", ImmutableMap.of("input_list", inputList));
-    Assert.assertNotNull(res);
-    Assert.assertEquals(res, 12L);
+    assertNotNull(res);
+    assertEquals(res, 12L);
   }
   @Test
-  public void testMaxOfStringList() throws Exception {
+  public void testMaxOfStringList() {
 
     List<Object> inputList = new ArrayList<Object>(){{
       add("value3");
@@ -80,12 +80,12 @@
     }};
 
     Object res = run("MAX(input_list)", ImmutableMap.of("input_list", inputList));
-    Assert.assertNotNull(res);
-    Assert.assertTrue(res.equals("value3"));
+    assertNotNull(res);
+    assertEquals("value3", res);
   }
 
   @Test
-  public void testMaxOfIntegerList() throws Exception {
+  public void testMaxOfIntegerList() {
 
     List<Object> inputList = new ArrayList<Object>(){{
       add(12);
@@ -93,20 +93,20 @@
     }};
 
     Object res = run("MAX(input_list)", ImmutableMap.of("input_list", inputList));
-    Assert.assertNotNull(res);
-    Assert.assertTrue(res.equals(56));
+    assertNotNull(res);
+    assertEquals(56, res);
   }
 
   @Test
-  public void testMaxWithVarList() throws Exception {
+  public void testMaxWithVarList() {
 
     Object res = run("MAX([string1,string2])", ImmutableMap.of("string1","abc","string2","def"));
-    Assert.assertNotNull(res);
-    Assert.assertTrue(res.equals("def"));
+    assertNotNull(res);
+    assertEquals("def", res);
   }
 
   @Test
-  public void testMinWithNullInList() throws Exception {
+  public void testMinWithNullInList() {
 
     List<Object> inputList = new ArrayList<Object>(){{
       add(145);
@@ -114,12 +114,12 @@
     }};
 
     Object res = run("MIN(input_list)", ImmutableMap.of("input_list", inputList));
-    Assert.assertNotNull(res);
-    Assert.assertTrue(res.equals(145));
+    assertNotNull(res);
+    assertEquals(145, res);
   }
 
   @Test
-  public void testAllNullList() throws Exception {
+  public void testAllNullList() {
 
     List<Object> inputList = new ArrayList<Object>(){{
       add(null);
@@ -127,11 +127,11 @@
     }};
 
     Object res = run("MAX(input_list)", ImmutableMap.of("input_list", inputList));
-    Assert.assertNull(res);
+    assertNull(res);
   }
 
   @Test
-  public void testMinOfIntegerList() throws Exception {
+  public void testMinOfIntegerList() {
 
     List<Object> inputList = new ArrayList<Object>(){{
       add(56);
@@ -141,13 +141,13 @@
     }};
 
     Object res = run("MIN(input_list)", ImmutableMap.of("input_list", inputList));
-    Assert.assertNotNull(res);
-    Assert.assertTrue(res.equals(12));
+    assertNotNull(res);
+    assertEquals(12, res);
   }
 
 
   @Test
-  public void testMaxOfLongList() throws Exception {
+  public void testMaxOfLongList() {
 
     List<Object> inputList = new ArrayList<Object>(){{
       add(12L);
@@ -156,31 +156,27 @@
     }};
 
     Object res = run("MAX(input_list)", ImmutableMap.of("input_list", inputList));
-    Assert.assertNotNull(res);
-    Assert.assertTrue(res.equals(457L));
+    assertNotNull(res);
+    assertEquals(457L, res);
   }
 
   @Test
-  public void testMaxOfMixedList() throws Exception {
-
+  public void testMaxOfMixedList() {
     List<Object> inputList = new ArrayList<Object>(){{
       add(12);
       add("string");
       add(457L);
     }};
 
-    Object res = null;
-
-    try {
-      res = run("MAX(input_list)", ImmutableMap.of("input_list", inputList));
-    } catch(ParseException e) {
-      Assert.assertTrue(e.getMessage().contains("Incomparable objects were submitted to MAX: class java.lang.String is incomparable to class java.lang.Long"));
-      Assert.assertNull(res);
-    }
+    ParseException e = assertThrows(ParseException.class, () -> {
+      Object res = run("MAX(input_list)", ImmutableMap.of("input_list", inputList));
+      assertNull(res);
+    });
+    assertTrue(e.getMessage().contains("Incomparable objects were submitted to MAX: class java.lang.String is incomparable to class java.lang.Long"));
   }
 
   @Test
-  public void testSetInput() throws Exception {
+  public void testSetInput() {
 
     Set<Object> inputSet = new HashSet<Object>(){{
       add(14L);
@@ -189,12 +185,12 @@
     }};
 
     Object res = run("MAX(input_set)", ImmutableMap.of("input_set", inputSet));
-    Assert.assertNotNull(res);
-    Assert.assertTrue(res.equals(15.3d));
+    assertNotNull(res);
+    assertEquals(15.3d, res);
   }
 
   @Test
-  public void testNonComparableList() throws Exception {
+  public void testNonComparableList() {
 
     class TestObject {
       private String arg;
@@ -209,19 +205,15 @@
       add(new TestObject("three"));
     }};
 
-    Object res = null;
-
-    try {
-      res = run("MIN(input_list)", ImmutableMap.of("input_list", inputList));
-    } catch(ParseException e) {
-      Assert.assertTrue(e.getMessage().contains("Noncomparable object type org.apache.metron.stellar.dsl.functions.OrdinalFunctionsTest$1TestObject submitted to MIN"));
-      Assert.assertNull(res);
-    }
+    ParseException e = assertThrows(ParseException.class, () -> {
+      Object res = run("MIN(input_list)", ImmutableMap.of("input_list", inputList));
+      assertNull(res);
+    });
+    assertTrue(e.getMessage().contains("Noncomparable object type org.apache.metron.stellar.dsl.functions.OrdinalFunctionsTest$1TestObject submitted to MIN"));
   }
 
-
   @Test
-  public void testMaxOfStats() throws Exception {
+  public void testMaxOfStats() {
     Ordinal provider = new Ordinal() {
       @Override
       public double getMin() {
@@ -235,12 +227,12 @@
     };
 
     Object res = run("MAX(input_list)", ImmutableMap.of("input_list", provider));
-    Assert.assertNotNull(res);
-    Assert.assertTrue(res.equals(100.0d));
+    assertNotNull(res);
+    assertEquals(100.0d, res);
   }
 
   @Test
-  public void testMinOfStats() throws Exception {
+  public void testMinOfStats() {
     Ordinal provider = new Ordinal() {
       @Override
       public double getMin() {
@@ -254,11 +246,11 @@
     };
 
     Object res = run("MIN(input_list)", ImmutableMap.of("input_list", provider));
-    Assert.assertNotNull(res);
-    Assert.assertTrue(res.equals(10.0d));
+    assertNotNull(res);
+    assertEquals(10.0d, res);
   }
 
-  public Object run(String rule, Map<String, Object> variables) throws Exception {
+  public Object run(String rule, Map<String, Object> variables) {
     StellarProcessor processor = new StellarProcessor();
     return processor.parse(rule, new DefaultVariableResolver(x -> variables.get(x), x -> variables.containsKey(x)), StellarFunctions.FUNCTION_RESOLVER(), context);
   }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RegExFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RegExFunctionsTest.java
index dc159b8..abbdbf6 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RegExFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RegExFunctionsTest.java
@@ -18,21 +18,23 @@
 
 package org.apache.metron.stellar.dsl.functions;
 
-import org.apache.metron.stellar.dsl.DefaultVariableResolver;
-import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
+import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 
 import java.util.HashMap;
 import java.util.Map;
-
-import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import org.apache.metron.stellar.dsl.DefaultVariableResolver;
+import org.apache.metron.stellar.dsl.ParseException;
+import org.junit.jupiter.api.Test;
 
 public class RegExFunctionsTest {
 
   // test RegExMatch
   @Test
-  public void testRegExMatch() throws Exception {
+  public void testRegExMatch() {
     final Map<String, String> variableMap = new HashMap<String, String>() {{
       put("numbers", "12345");
       put("numberPattern", "\\d(\\d)(\\d).*");
@@ -41,18 +43,18 @@
       put("empty", "");
     }};
 
-    Assert.assertTrue(runPredicate("REGEXP_MATCH(numbers,numberPattern)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("REGEXP_MATCH(letters,numberPattern)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("REGEXP_MATCH(letters,[numberPattern,letterPattern])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("REGEXP_MATCH(letters,[numberPattern])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("REGEXP_MATCH(letters,[numberPattern,numberPattern])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("REGEXP_MATCH(null,[numberPattern])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("REGEXP_MATCH(letters,null)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("REGEXP_MATCH(letters,[null])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_MATCH(numbers,numberPattern)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("REGEXP_MATCH(letters,numberPattern)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_MATCH(letters,[numberPattern,letterPattern])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("REGEXP_MATCH(letters,[numberPattern])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("REGEXP_MATCH(letters,[numberPattern,numberPattern])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("REGEXP_MATCH(null,[numberPattern])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("REGEXP_MATCH(letters,null)", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("REGEXP_MATCH(letters,[null])", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
-  public void testRegExGroupVal() throws Exception {
+  public void testRegExGroupVal() {
     final Map<String, String> variableMap = new HashMap<String, String>() {{
       put("numbers", "12345");
       put("numberPattern", "\\d(\\d)(\\d).*");
@@ -60,24 +62,18 @@
       put("letters", "abcde");
       put("empty", "");
     }};
-    Assert.assertTrue(runPredicate("REGEXP_GROUP_VAL(numbers,numberPattern,2) == '3'", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("REGEXP_GROUP_VAL(letters,numberPattern,2) == null", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("REGEXP_GROUP_VAL(empty,numberPattern,2) == null", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("REGEXP_GROUP_VAL(numbers,numberPatternNoCaptures,2) == null", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_GROUP_VAL(numbers,numberPattern,2) == '3'", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_GROUP_VAL(letters,numberPattern,2) == null", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_GROUP_VAL(empty,numberPattern,2) == null", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_GROUP_VAL(numbers,numberPatternNoCaptures,2) == null", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
 
-    boolean thrown = false;
-    try{
-      runPredicate("REGEXP_GROUP_VAL(2) == null", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v)));
-    }catch(ParseException | IllegalStateException ise){
-      thrown = true;
-    }
-    if(!thrown){
-      Assert.assertTrue("Did not fail on wrong number of parameters",false);
-    }
+    assertThrows(ParseException.class, () -> runPredicate("REGEXP_GROUP_VAL(2) == null",
+        new DefaultVariableResolver(v -> variableMap.get(v), v -> variableMap.containsKey(v))),
+        "Did not fail on wrong number of parameters");
   }
 
   @Test
-  public void testRegExReplace() throws Exception {
+  public void testRegExReplace() {
     final Map<String, String> variableMap = new HashMap<String, String>() {{
       put("numbers", "12345");
       put("numberPattern", "\\d(\\d)(\\d).*");
@@ -85,12 +81,12 @@
       put("empty", "");
     }};
 
-    Assert.assertTrue(runPredicate("REGEXP_REPLACE(empty, numberPattern, letters) == null", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("REGEXP_REPLACE(numbers, empty, empty) == numbers", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("REGEXP_REPLACE(numbers, empty, letters) == numbers", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("REGEXP_REPLACE(numbers, numberPattern, empty) == numbers", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("REGEXP_REPLACE(numbers, numberPattern, letters) == letters", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("REGEXP_REPLACE(letters, numberPattern, numbers) == letters", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_REPLACE(empty, numberPattern, letters) == null", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_REPLACE(numbers, empty, empty) == numbers", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_REPLACE(numbers, empty, letters) == numbers", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_REPLACE(numbers, numberPattern, empty) == numbers", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_REPLACE(numbers, numberPattern, letters) == letters", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("REGEXP_REPLACE(letters, numberPattern, numbers) == letters", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RestFunctionsIntegrationTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RestFunctionsIntegrationTest.java
index 27225f4..d7aa05e 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RestFunctionsIntegrationTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RestFunctionsIntegrationTest.java
@@ -23,17 +23,15 @@
 import org.apache.commons.io.FileUtils;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Before;
 import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
 import org.junit.rules.TemporaryFolder;
-import org.mockserver.client.server.MockServerClient;
-import org.mockserver.junit.MockServerRule;
-import org.mockserver.junit.ProxyRule;
+import org.mockserver.integration.ClientAndServer;
 
 import java.io.File;
-import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.util.Arrays;
 import java.util.HashMap;
@@ -42,26 +40,22 @@
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
 import static org.apache.metron.stellar.dsl.functions.RestConfig.*;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockserver.integration.ClientAndServer.startClientAndServer;
 import static org.mockserver.model.HttpRequest.request;
 import static org.mockserver.model.HttpResponse.response;
 
+
+@EnableRuleMigrationSupport
 public class RestFunctionsIntegrationTest {
-
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   @Rule
   public TemporaryFolder tempDir = new TemporaryFolder();
 
-  @Rule
-  public MockServerRule mockServerRule = new MockServerRule(this);
+  private static final int MOCK_PROXY_PORT = 1080;
 
-  @Rule
-  public ProxyRule proxyRule = new ProxyRule(1080, this);
+  // Use plain Java API, because we can't use the @Rule and the JUnit5 extension isn't released.
+  private ClientAndServer mockServerClient;
 
-  private MockServerClient mockServerClient;
   private String baseUri;
   private String getUri;
   private String emptyGetUri;
@@ -74,8 +68,10 @@
   private File proxyBasicAuthPasswordFile;
   private String proxyAuthPassword = "proxyPassword";
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
+    mockServerClient = startClientAndServer(MOCK_PROXY_PORT);
+
     context = new Context.Builder()
             .with(Context.Capabilities.GLOBAL_CONFIG, HashMap::new)
             .build();
@@ -87,7 +83,7 @@
     FileUtils.writeStringToFile(proxyBasicAuthPasswordFile, proxyAuthPassword, StandardCharsets.UTF_8);
 
     // By default, the mock server expects a GET request with the path set to /get
-    baseUri = String.format("http://localhost:%d", mockServerRule.getPort());
+    baseUri = String.format("http://localhost:%d", MOCK_PROXY_PORT);
     getUri = baseUri + "/get";
     emptyGetUri = baseUri + "/get/empty";
     postUri = baseUri + "/post";
@@ -120,12 +116,17 @@
                     .withStatusCode(404));
   }
 
+  @AfterEach
+  public void teardown() {
+    mockServerClient.stop();
+  }
+
   /**
    * The REST_GET function should perform a get request and parse the results.
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void restGetShouldSucceed() throws Exception {
+  public void restGetShouldSucceed() {
     Map<String, Object> actual = (Map<String, Object>) run(String.format("REST_GET('%s')", getUri), context);
 
     assertEquals(1, actual.size());
@@ -137,7 +138,7 @@
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void restGetShouldSucceedWithQueryParameters() throws Exception {
+  public void restGetShouldSucceedWithQueryParameters() {
     mockServerClient.when(
             request()
                     .withMethod("GET")
@@ -169,7 +170,7 @@
 
     context.addCapability(Context.Capabilities.GLOBAL_CONFIG, () -> new HashMap<String, Object>() {{
       put(PROXY_HOST, "localhost");
-      put(PROXY_PORT, proxyRule.getHttpPort());
+      put(PROXY_PORT, MOCK_PROXY_PORT);
     }});
 
     Map<String, Object> actual = (Map<String, Object>) run(String.format("REST_GET('%s')", getUri), context);
@@ -240,7 +241,8 @@
   @Test
   @SuppressWarnings("unchecked")
   public void restGetShouldTimeout() {
-    String uri = String.format("http://localhost:%d/get", mockServerRule.getPort());
+    String uri = String.format("http://localhost:%d/get", MOCK_PROXY_PORT);
+
     mockServerClient.when(
             request()
                     .withMethod("GET")
@@ -275,7 +277,7 @@
   @Test
   @SuppressWarnings("unchecked")
   public void restGetShouldTimeoutWithSuppliedTimeout() {
-    String uri = String.format("http://localhost:%d/get", mockServerRule.getPort());
+    String uri = String.format("http://localhost:%d/get", MOCK_PROXY_PORT);
     mockServerClient.when(
             request()
                     .withMethod("GET")
@@ -291,15 +293,11 @@
 
   /**
    * The REST_GET function should throw an exception on a malformed uri.
-   * @throws IllegalArgumentException
-   * @throws IOException
    */
   @Test
-  public void restGetShouldHandleURISyntaxException() throws IllegalArgumentException, IOException {
-    thrown.expect(ParseException.class);
-    thrown.expectMessage("Unable to parse REST_GET('some invalid uri'): Unable to parse: REST_GET('some invalid uri') due to: Illegal character in path at index 4: some invalid uri");
-
-    run("REST_GET('some invalid uri')", context);
+  public void restGetShouldHandleURISyntaxException() {
+    ParseException e = assertThrows(ParseException.class, () -> run("REST_GET('some invalid uri')", context));
+    assertEquals("Unable to parse REST_GET('some invalid uri'): Unable to parse: REST_GET('some invalid uri') due to: Illegal character in path at index 4: some invalid uri", e.getMessage());
   }
 
 
@@ -309,10 +307,8 @@
    */
   @Test
   public void restGetShouldThrownExceptionOnMissingParameter() {
-    thrown.expect(ParseException.class);
-    thrown.expectMessage("Unable to parse REST_GET(): Unable to parse: REST_GET() due to: Expected at least 1 argument(s), found 0");
-
-    run("REST_GET()", context);
+    ParseException e = assertThrows(ParseException.class, () -> run("REST_GET()", context));
+    assertEquals("Unable to parse REST_GET(): Unable to parse: REST_GET() due to: Expected at least 1 argument(s), found 0", e.getMessage());
   }
 
   /**
@@ -374,7 +370,7 @@
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void restPostShouldSucceed() throws Exception {
+  public void restPostShouldSucceed() {
     Map<String, Object> actual = (Map<String, Object>) run(String.format("REST_POST('%s', '{\"key\":\"value\"}')", postUri), context);
 
     assertEquals(1, actual.size());
@@ -386,7 +382,7 @@
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void restPostShouldSucceedWithQueryParameters() throws Exception {
+  public void restPostShouldSucceedWithQueryParameters() {
     mockServerClient.when(
             request()
                     .withMethod("POST")
@@ -408,7 +404,7 @@
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void restPostShouldSucceedWithStellarMap() throws Exception {
+  public void restPostShouldSucceedWithStellarMap() {
     Map<String, Object> variables = ImmutableMap.of("body", ImmutableMap.of("key", "value"));
     Map<String, Object> actual = (Map<String, Object>) run(String.format("REST_POST('%s', body)", postUri), variables, context);
 
@@ -418,29 +414,26 @@
 
   /**
    * The REST_POST function should throw an exception on a malformed uri.
-   * @throws IllegalArgumentException
-   * @throws IOException
    */
   @Test
-  public void restPostShouldHandleURISyntaxException() throws IllegalArgumentException, IOException {
-    thrown.expect(ParseException.class);
-    thrown.expectMessage("Unable to parse REST_POST('some invalid uri', {}): Unable to parse: REST_POST('some invalid uri', {}) due to: Illegal character in path at index 4: some invalid uri");
-
-    run("REST_POST('some invalid uri', {})", context);
+  public void restPostShouldHandleURISyntaxException() {
+    ParseException e = assertThrows(ParseException.class, () -> run("REST_POST('some invalid uri', {})", context));
+    assertEquals("Unable to parse REST_POST('some invalid uri', {}): Unable to parse: REST_POST('some invalid uri', {}) due to: Illegal character in path at index 4: some invalid uri", e.getMessage());
   }
 
   /**
    * The REST_POST function should throw an exception when POST data is not well-formed JSON and 'enforce.json' is set to true.
-   * @throws IllegalArgumentException
-   * @throws IOException
    */
   @Test
-  public void restPostShouldThrowExceptionOnMalformedJson() throws IllegalArgumentException, IOException {
-    thrown.expect(ParseException.class);
-    thrown.expectMessage(String.format("Unable to parse: REST_POST('%s', 'malformed json') due to: POST data 'malformed json' must be properly formatted JSON.  " +
-            "Set the 'enforce.json' property to false to disable this check.", postUri));
-
-    run(String.format("REST_POST('%s', 'malformed json')", postUri), context);
+  public void restPostShouldThrowExceptionOnMalformedJson() {
+    ParseException e = assertThrows(ParseException.class, () -> run(String.format("REST_POST('%s', 'malformed json')", postUri), context));
+    assertEquals(
+        String.format(
+            "Unable to parse REST_POST('http://localhost:1080/post', 'malformed json'): " +
+                    "Unable to parse: REST_POST('%s', 'malformed json') due to: POST data 'malformed json' must be properly formatted JSON.  " +
+                    "Set the 'enforce.json' property to false to disable this check.",
+            postUri),
+        e.getMessage());
   }
 
   /**
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RestFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RestFunctionsTest.java
index 64477cf..cac2689 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RestFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/RestFunctionsTest.java
@@ -31,11 +31,10 @@
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
 import org.apache.metron.stellar.dsl.Context;
-import org.junit.Assert;
-import org.junit.Before;
 import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.migrationsupport.rules.EnableRuleMigrationSupport;
 import org.junit.rules.TemporaryFolder;
 
 import java.io.ByteArrayInputStream;
@@ -50,18 +49,14 @@
 import java.util.concurrent.ScheduledExecutorService;
 
 import static org.apache.metron.stellar.dsl.functions.RestConfig.*;
-import static org.junit.Assert.*;
-import static org.mockito.Matchers.any;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.*;
 
 /**
  * Tests the RestFunctions class.
  */
+@EnableRuleMigrationSupport
 public class RestFunctionsTest {
-
-  @Rule
-  public ExpectedException thrown = ExpectedException.none();
-
   @Rule
   public TemporaryFolder tempDir = new TemporaryFolder();
 
@@ -72,7 +67,7 @@
   private File proxyBasicAuthPasswordFile;
   private String proxyAuthPassword = "proxyPassword";
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     context = new Context.Builder()
             .with(Context.Capabilities.GLOBAL_CONFIG, HashMap::new)
@@ -125,10 +120,9 @@
 
   /**
    * RestConfig should be built with settings in the correct order of precedence.
-   * @throws Exception
    */
   @Test
-  public void restShouldBuildRestConfig() throws Exception {
+  public void restShouldBuildRestConfig() {
     Map<String, Object> config = new HashMap<String, Object>() {{
       put(BASIC_AUTH_USER, "user");
       put(PROXY_BASIC_AUTH_USER, "proxyUser");
@@ -268,11 +262,10 @@
 
   /**
    * The REST_GET function should handle IOExceptions and return null.
-   * @throws IllegalArgumentException
    * @throws IOException
    */
   @Test
-  public void restGetShouldHandleIOException() throws IllegalArgumentException, IOException {
+  public void restGetShouldHandleIOException() throws IOException {
     RestFunctions.RestGet restGet = new RestFunctions.RestGet();
     CloseableHttpClient httpClient = mock(CloseableHttpClient.class);
     ScheduledExecutorService executorService = mock(ScheduledExecutorService.class);
@@ -283,7 +276,7 @@
     when(httpClient.execute(any(HttpRequestBase.class), any(HttpClientContext.class))).thenThrow(new IOException("io exception"));
 
     Object result = restGet.apply(Collections.singletonList("http://www.host.com:8080/some/uri"), context);
-    Assert.assertNull(result);
+    assertNull(result);
   }
 
   @Test
@@ -376,9 +369,6 @@
 
   @Test
   public void restGetShouldThrowExceptionOnContentLengthMismatch() throws Exception {
-    thrown.expect(IOException.class);
-    thrown.expectMessage("Stellar REST request to uri returned incorrect or missing content length. Content length in the response was -1 but the actual body content length was 17.");
-
     RestFunctions.RestGet restGet = new RestFunctions.RestGet();
     RestConfig restConfig = new RestConfig();
     HttpGet httpGet = mock(HttpGet.class);
@@ -389,6 +379,9 @@
     when(httpEntity.getContent()).thenReturn(new ByteArrayInputStream("{\"get\":\"success\"}".getBytes(
         StandardCharsets.UTF_8)));
     when(httpEntity.getContentLength()).thenReturn(-1L);
-    RestFunctions.parseResponse(restConfig, httpGet, httpEntity);
+    IOException e = assertThrows(IOException.class, () -> RestFunctions.parseResponse(restConfig, httpGet, httpEntity));
+    assertEquals(
+        "Stellar REST request to uri returned incorrect or missing content length. Content length in the response was -1 but the actual body content length was 17.",
+        e.getMessage());
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/SetFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/SetFunctionsTest.java
index 00a045c..b629288 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/SetFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/SetFunctionsTest.java
@@ -20,313 +20,320 @@
 
 import org.apache.metron.stellar.common.utils.StellarProcessorUtils;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Set;
 
+import static org.junit.jupiter.api.Assertions.*;
+
 public class SetFunctionsTest {
 
-  @Test(expected=ParseException.class)
-  @SuppressWarnings("unchecked")
-  public void multisetInitTest_wrongType() throws Exception {
-    Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_INIT({ 'foo' : 'bar'})", new HashMap<>());
+  @Test
+  public void multisetInitTest_wrongType() {
+    assertThrows(
+        ParseException.class,
+        () -> StellarProcessorUtils.run("MULTISET_INIT({ 'foo' : 'bar'})", new HashMap<>()));
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void multisetInitTest() throws Exception {
+  public void multisetInitTest() {
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_INIT()", new HashMap<>());
-      Assert.assertEquals(0, s.size());
+      assertEquals(0, s.size());
     }
     //int initialization
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_INIT([1,2,3,2])", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.containsKey(1));
-      Assert.assertEquals(1,(int)s.get(1));
-      Assert.assertTrue(s.containsKey(2));
-      Assert.assertEquals(2,(int)s.get(2));
-      Assert.assertTrue(s.containsKey(3));
-      Assert.assertEquals(1,(int)s.get(3));
+      assertEquals(3, s.size());
+      assertTrue(s.containsKey(1));
+      assertEquals(1,(int)s.get(1));
+      assertTrue(s.containsKey(2));
+      assertEquals(2,(int)s.get(2));
+      assertTrue(s.containsKey(3));
+      assertEquals(1,(int)s.get(3));
     }
     //string initialization
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_INIT(['one','two','three','two'])", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.containsKey("one"));
-      Assert.assertEquals(1,(int)s.get("one"));
-      Assert.assertTrue(s.containsKey("two"));
-      Assert.assertEquals(2,(int)s.get("two"));
-      Assert.assertTrue(s.containsKey("three"));
-      Assert.assertEquals(1,(int)s.get("three"));
+      assertEquals(3, s.size());
+      assertTrue(s.containsKey("one"));
+      assertEquals(1,(int)s.get("one"));
+      assertTrue(s.containsKey("two"));
+      assertEquals(2,(int)s.get("two"));
+      assertTrue(s.containsKey("three"));
+      assertEquals(1,(int)s.get("three"));
 
     }
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void multisetAddTest() throws Exception {
+  public void multisetAddTest() {
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_ADD(MULTISET_INIT(), 1)", new HashMap<>());
-      Assert.assertEquals(1, s.size());
-      Assert.assertTrue(s.containsKey(1));
-      Assert.assertEquals(1,(int)s.get(1));
+      assertEquals(1, s.size());
+      assertTrue(s.containsKey(1));
+      assertEquals(1,(int)s.get(1));
     }
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_ADD(null, 1)", new HashMap<>());
-      Assert.assertEquals(1, s.size());
-      Assert.assertTrue(s.containsKey(1));
-      Assert.assertEquals(1,(int)s.get(1));
+      assertEquals(1, s.size());
+      assertTrue(s.containsKey(1));
+      assertEquals(1,(int)s.get(1));
     }
     //int
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_ADD(MULTISET_INIT([1,2,3,4,4]), 4)", new HashMap<>());
-      Assert.assertEquals(4, s.size());
-      Assert.assertTrue(s.containsKey(1));
-      Assert.assertEquals(1,(int)s.get(1));
-      Assert.assertTrue(s.containsKey(2));
-      Assert.assertEquals(1,(int)s.get(2));
-      Assert.assertTrue(s.containsKey(3));
-      Assert.assertEquals(1,(int)s.get(3));
-      Assert.assertTrue(s.containsKey(4));
-      Assert.assertEquals(3,(int)s.get(4));
+      assertEquals(4, s.size());
+      assertTrue(s.containsKey(1));
+      assertEquals(1,(int)s.get(1));
+      assertTrue(s.containsKey(2));
+      assertEquals(1,(int)s.get(2));
+      assertTrue(s.containsKey(3));
+      assertEquals(1,(int)s.get(3));
+      assertTrue(s.containsKey(4));
+      assertEquals(3,(int)s.get(4));
     }
     //string
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_ADD(MULTISET_INIT(['one','two','three', 'four', 'four']), 'four')", new HashMap<>());
-      Assert.assertEquals(4, s.size());
-      Assert.assertTrue(s.containsKey("one"));
-      Assert.assertEquals(1,(int)s.get("one"));
-      Assert.assertTrue(s.containsKey("two"));
-      Assert.assertEquals(1,(int)s.get("two"));
-      Assert.assertTrue(s.containsKey("three"));
-      Assert.assertEquals(1,(int)s.get("three"));
-      Assert.assertTrue(s.containsKey("four"));
-      Assert.assertEquals(3,(int)s.get("four"));
+      assertEquals(4, s.size());
+      assertTrue(s.containsKey("one"));
+      assertEquals(1,(int)s.get("one"));
+      assertTrue(s.containsKey("two"));
+      assertEquals(1,(int)s.get("two"));
+      assertTrue(s.containsKey("three"));
+      assertEquals(1,(int)s.get("three"));
+      assertTrue(s.containsKey("four"));
+      assertEquals(3,(int)s.get("four"));
     }
   }
-@Test
-@SuppressWarnings("unchecked")
-  public void multisetRemoveTest() throws Exception {
+
+  @Test
+  @SuppressWarnings("unchecked")
+  public void multisetRemoveTest() {
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_REMOVE(MULTISET_INIT([1]), 1)", new HashMap<>());
-      Assert.assertEquals(0, s.size());
+      assertEquals(0, s.size());
     }
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_REMOVE(null, 1)", new HashMap<>());
-      Assert.assertEquals(0, s.size());
+      assertEquals(0, s.size());
     }
     //int
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_REMOVE(MULTISET_INIT([1,2,3,2]), 2)", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.containsKey(1));
-      Assert.assertEquals(1, (int)s.get(1));
-      Assert.assertTrue(s.containsKey(2));
-      Assert.assertEquals(1, (int)s.get(2));
-      Assert.assertTrue(s.containsKey(3));
-      Assert.assertEquals(1, (int)s.get(3));
+      assertEquals(3, s.size());
+      assertTrue(s.containsKey(1));
+      assertEquals(1, (int)s.get(1));
+      assertTrue(s.containsKey(2));
+      assertEquals(1, (int)s.get(2));
+      assertTrue(s.containsKey(3));
+      assertEquals(1, (int)s.get(3));
     }
     //string
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_REMOVE(MULTISET_INIT(['one','two','three', 'two']), 'two')", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.containsKey("one"));
-      Assert.assertEquals(1, (int)s.get("one"));
-      Assert.assertTrue(s.containsKey("two"));
-      Assert.assertEquals(1, (int)s.get("two"));
-      Assert.assertTrue(s.containsKey("three"));
-      Assert.assertEquals(1, (int)s.get("three"));
+      assertEquals(3, s.size());
+      assertTrue(s.containsKey("one"));
+      assertEquals(1, (int)s.get("one"));
+      assertTrue(s.containsKey("two"));
+      assertEquals(1, (int)s.get("two"));
+      assertTrue(s.containsKey("three"));
+      assertEquals(1, (int)s.get("three"));
     }
   }
 
-  @Test(expected=ParseException.class)
-  @SuppressWarnings("unchecked")
-  public void multisetMergeTest_wrongType() throws Exception {
-
-    Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_MERGE({ 'bar' : 'foo' } )", new HashMap<>());
+  @Test
+  public void multisetMergeTest_wrongType() {
+    assertThrows(
+        ParseException.class,
+        () -> StellarProcessorUtils.run("MULTISET_MERGE({ 'bar' : 'foo' } )", new HashMap<>()));
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void multisetMergeTest() throws Exception {
+  public void multisetMergeTest() {
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_MERGE([MULTISET_INIT(), MULTISET_INIT(null), null])", new HashMap<>());
-      Assert.assertEquals(0, s.size());
+      assertEquals(0, s.size());
     }
     //int
     {
       Map<Object, Integer> s = (Map<Object, Integer>) StellarProcessorUtils.run("MULTISET_MERGE([MULTISET_INIT([1,2]), MULTISET_INIT([2,3]), null, MULTISET_INIT()])", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.containsKey(1));
-      Assert.assertEquals(1, (int)s.get(1));
-      Assert.assertTrue(s.containsKey(2));
-      Assert.assertEquals(2, (int)s.get(2));
-      Assert.assertTrue(s.containsKey(3));
-      Assert.assertEquals(1, (int)s.get(3));
+      assertEquals(3, s.size());
+      assertTrue(s.containsKey(1));
+      assertEquals(1, (int)s.get(1));
+      assertTrue(s.containsKey(2));
+      assertEquals(2, (int)s.get(2));
+      assertTrue(s.containsKey(3));
+      assertEquals(1, (int)s.get(3));
     }
     //string
     {
       Map<Object, Integer> s = (Map<Object, Integer>)StellarProcessorUtils.run("MULTISET_MERGE([MULTISET_INIT(['one','two']), MULTISET_INIT(['two', 'three'])])", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.containsKey("one"));
-      Assert.assertEquals(1, (int)s.get("one"));
-      Assert.assertTrue(s.containsKey("two"));
-      Assert.assertEquals(2, (int)s.get("two"));
-      Assert.assertTrue(s.containsKey("three"));
-      Assert.assertEquals(1, (int)s.get("three"));
+      assertEquals(3, s.size());
+      assertTrue(s.containsKey("one"));
+      assertEquals(1, (int)s.get("one"));
+      assertTrue(s.containsKey("two"));
+      assertEquals(2, (int)s.get("two"));
+      assertTrue(s.containsKey("three"));
+      assertEquals(1, (int)s.get("three"));
     }
   }
 
-  @Test(expected=ParseException.class)
-  public void setInitTest_wrongType() throws Exception {
-      Set s = (Set) StellarProcessorUtils.run("SET_INIT({ 'foo' : 2})", new HashMap<>());
+  @Test
+  public void setInitTest_wrongType() {
+    assertThrows(
+        ParseException.class,
+        () -> StellarProcessorUtils.run("SET_INIT({ 'foo' : 2})", new HashMap<>()));
   }
 
   @Test
-  public void setInitTest() throws Exception {
+  public void setInitTest() {
     {
       Set s = (Set) StellarProcessorUtils.run("SET_INIT()", new HashMap<>());
-      Assert.assertEquals(0, s.size());
+      assertEquals(0, s.size());
     }
     //int initialization
     {
       Set s = (Set) StellarProcessorUtils.run("SET_INIT([1,2,3])", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.contains(1));
-      Assert.assertTrue(s.contains(2));
-      Assert.assertTrue(s.contains(3));
+      assertEquals(3, s.size());
+      assertTrue(s.contains(1));
+      assertTrue(s.contains(2));
+      assertTrue(s.contains(3));
     }
     //string initialization
     {
       Set s = (Set) StellarProcessorUtils.run("SET_INIT(['one','two','three'])", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.contains("one"));
-      Assert.assertTrue(s.contains("two"));
-      Assert.assertTrue(s.contains("three"));
+      assertEquals(3, s.size());
+      assertTrue(s.contains("one"));
+      assertTrue(s.contains("two"));
+      assertTrue(s.contains("three"));
     }
   }
 
   @Test
-  public void multisetToSetTest() throws Exception {
+  public void multisetToSetTest() {
     {
       Set s = (Set) StellarProcessorUtils.run("MULTISET_TO_SET(MULTISET_ADD(MULTISET_INIT(), 1))", new HashMap<>());
-      Assert.assertEquals(1, s.size());
-      Assert.assertTrue(s.contains(1));
+      assertEquals(1, s.size());
+      assertTrue(s.contains(1));
     }
     {
       Set s = (Set) StellarProcessorUtils.run("MULTISET_TO_SET(MULTISET_ADD(null, 1))", new HashMap<>());
-      Assert.assertEquals(1, s.size());
-      Assert.assertTrue(s.contains(1));
+      assertEquals(1, s.size());
+      assertTrue(s.contains(1));
     }
     //int
     {
       Set s = (Set) StellarProcessorUtils.run("MULTISET_TO_SET(MULTISET_ADD(MULTISET_INIT([1,2,3]), 4))", new HashMap<>());
-      Assert.assertEquals(4, s.size());
-      Assert.assertTrue(s.contains(1));
-      Assert.assertTrue(s.contains(2));
-      Assert.assertTrue(s.contains(3));
-      Assert.assertTrue(s.contains(4));
+      assertEquals(4, s.size());
+      assertTrue(s.contains(1));
+      assertTrue(s.contains(2));
+      assertTrue(s.contains(3));
+      assertTrue(s.contains(4));
     }
     //string
     {
       Set s = (Set) StellarProcessorUtils.run("MULTISET_TO_SET(MULTISET_ADD(MULTISET_INIT(['one','two','three']), 'four'))", new HashMap<>());
-      Assert.assertEquals(4, s.size());
-      Assert.assertTrue(s.contains("one"));
-      Assert.assertTrue(s.contains("two"));
-      Assert.assertTrue(s.contains("three"));
-      Assert.assertTrue(s.contains("four"));
+      assertEquals(4, s.size());
+      assertTrue(s.contains("one"));
+      assertTrue(s.contains("two"));
+      assertTrue(s.contains("three"));
+      assertTrue(s.contains("four"));
     }
   }
 
   @Test
-  public void setAddTest() throws Exception {
+  public void setAddTest() {
     {
       Set s = (Set) StellarProcessorUtils.run("SET_ADD(SET_INIT(), 1)", new HashMap<>());
-      Assert.assertEquals(1, s.size());
-      Assert.assertTrue(s.contains(1));
+      assertEquals(1, s.size());
+      assertTrue(s.contains(1));
     }
     {
       Set s = (Set) StellarProcessorUtils.run("SET_ADD(null, 1)", new HashMap<>());
-      Assert.assertEquals(1, s.size());
-      Assert.assertTrue(s.contains(1));
+      assertEquals(1, s.size());
+      assertTrue(s.contains(1));
     }
     //int
     {
       Set s = (Set) StellarProcessorUtils.run("SET_ADD(SET_INIT([1,2,3]), 4)", new HashMap<>());
-      Assert.assertEquals(4, s.size());
-      Assert.assertTrue(s.contains(1));
-      Assert.assertTrue(s.contains(2));
-      Assert.assertTrue(s.contains(3));
-      Assert.assertTrue(s.contains(4));
+      assertEquals(4, s.size());
+      assertTrue(s.contains(1));
+      assertTrue(s.contains(2));
+      assertTrue(s.contains(3));
+      assertTrue(s.contains(4));
     }
     //string
     {
       Set s = (Set) StellarProcessorUtils.run("SET_ADD(SET_INIT(['one','two','three']), 'four')", new HashMap<>());
-      Assert.assertEquals(4, s.size());
-      Assert.assertTrue(s.contains("one"));
-      Assert.assertTrue(s.contains("two"));
-      Assert.assertTrue(s.contains("three"));
-      Assert.assertTrue(s.contains("four"));
+      assertEquals(4, s.size());
+      assertTrue(s.contains("one"));
+      assertTrue(s.contains("two"));
+      assertTrue(s.contains("three"));
+      assertTrue(s.contains("four"));
     }
   }
 
   @Test
-  public void setRemoveTest() throws Exception {
+  public void setRemoveTest() {
     {
       Set s = (Set) StellarProcessorUtils.run("SET_REMOVE(SET_INIT([1]), 1)", new HashMap<>());
-      Assert.assertEquals(0, s.size());
+      assertEquals(0, s.size());
     }
     {
       Set s = (Set) StellarProcessorUtils.run("SET_REMOVE(null, 1)", new HashMap<>());
-      Assert.assertEquals(0, s.size());
+      assertEquals(0, s.size());
     }
     //int
     {
       Set s = (Set) StellarProcessorUtils.run("SET_REMOVE(SET_INIT([1,2,3]), 2)", new HashMap<>());
-      Assert.assertEquals(2, s.size());
-      Assert.assertTrue(s.contains(1));
-      Assert.assertTrue(s.contains(3));
+      assertEquals(2, s.size());
+      assertTrue(s.contains(1));
+      assertTrue(s.contains(3));
     }
     //string
     {
       Set s = (Set) StellarProcessorUtils.run("SET_REMOVE(SET_INIT(['one','two','three']), 'three')", new HashMap<>());
-      Assert.assertEquals(2, s.size());
-      Assert.assertTrue(s.contains("one"));
-      Assert.assertTrue(s.contains("two"));
+      assertEquals(2, s.size());
+      assertTrue(s.contains("one"));
+      assertTrue(s.contains("two"));
     }
   }
 
-  @Test(expected=ParseException.class)
-  public void setMergeTest_wrongType() throws Exception {
-    Set s = (Set) StellarProcessorUtils.run("SET_MERGE({ 'foo' : 'bar'} )", new HashMap<>());
+  @Test
+  public void setMergeTest_wrongType() {
+    assertThrows(
+        ParseException.class,
+        () -> StellarProcessorUtils.run("SET_MERGE({ 'foo' : 'bar'} )", new HashMap<>()));
   }
 
   @Test
-  public void setMergeTest() throws Exception {
+  public void setMergeTest() {
     {
       Set s = (Set) StellarProcessorUtils.run("SET_MERGE([SET_INIT(), SET_INIT(null), null])", new HashMap<>());
-      Assert.assertEquals(0, s.size());
+      assertEquals(0, s.size());
     }
     //int
     {
       Set s = (Set) StellarProcessorUtils.run("SET_MERGE([SET_INIT([1,2]), SET_INIT([3]), null, SET_INIT()])", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.contains(1));
-      Assert.assertTrue(s.contains(2));
-      Assert.assertTrue(s.contains(3));
+      assertEquals(3, s.size());
+      assertTrue(s.contains(1));
+      assertTrue(s.contains(2));
+      assertTrue(s.contains(3));
     }
     //string
     {
       Set s = (Set) StellarProcessorUtils.run("SET_MERGE([SET_INIT(['one','two']), SET_INIT(['three'])])", new HashMap<>());
-      Assert.assertEquals(3, s.size());
-      Assert.assertTrue(s.contains("one"));
-      Assert.assertTrue(s.contains("two"));
-      Assert.assertTrue(s.contains("three"));
+      assertEquals(3, s.size());
+      assertTrue(s.contains("one"));
+      assertTrue(s.contains("two"));
+      assertTrue(s.contains("three"));
     }
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/ShellFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/ShellFunctionsTest.java
index 126a974..b68781e 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/ShellFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/ShellFunctionsTest.java
@@ -20,20 +20,14 @@
 import com.google.common.collect.ImmutableMap;
 import org.adrianwalker.multilinestring.Multiline;
 import org.apache.metron.stellar.common.shell.VariableResult;
-import org.apache.metron.stellar.common.shell.cli.PausableInput;
 import org.apache.metron.stellar.dsl.Context;
-import org.apache.metron.stellar.dsl.Context.Capabilities;
-import org.jboss.aesh.console.Console;
-import org.jboss.aesh.console.settings.Settings;
-import org.jboss.aesh.console.settings.SettingsBuilder;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
-import java.util.Optional;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class ShellFunctionsTest {
 
@@ -66,7 +60,7 @@
             .with(Context.Capabilities.SHELL_VARIABLES , () -> variables)
             .build();
     Object out = run("SHELL_LIST_VARS()", new HashMap<>(), context);
-    Assert.assertEquals(expectedListWithFoo, out);
+    assertEquals(expectedListWithFoo, out);
   }
 
 /**
@@ -85,7 +79,7 @@
             .with(Context.Capabilities.SHELL_VARIABLES, () -> new HashMap<>())
             .build();
     Object out = run("SHELL_LIST_VARS()", new HashMap<>(), context);
-    Assert.assertEquals(expectedEmptyList, out);
+    assertEquals(expectedEmptyList, out);
   }
 /**
 ╔════════╤═══════╗
@@ -104,7 +98,7 @@
     Map<String, Object> variables = ImmutableMap.of("map_field", ImmutableMap.of("field1", "val1", "field2", "val2"));
     Context context = Context.EMPTY_CONTEXT();
     Object out = run("SHELL_MAP2TABLE(map_field)", variables, context);
-    Assert.assertEquals(expectedMap2Table, out);
+    assertEquals(expectedMap2Table, out);
   }
  /**
 ╔═════╤═══════╗
@@ -123,7 +117,7 @@
     }};
     Context context = Context.EMPTY_CONTEXT();
     Object out = run("SHELL_MAP2TABLE(map_field)", variables, context);
-    Assert.assertEquals(expectedMap2TableNullInput, out);
+    assertEquals(expectedMap2TableNullInput, out);
   }
 
   @Test
@@ -131,18 +125,18 @@
     Map<String, Object> variables = new HashMap<>();
     Context context = Context.EMPTY_CONTEXT();
     Object out = run("SHELL_MAP2TABLE()", variables, context);
-    Assert.assertNull(out);
+    assertNull(out);
   }
 
   @Test
   @SuppressWarnings("unchecked")
   public void testVars2Map() {
     Object out = run("SHELL_VARS2MAP('var1', 'var2')", new HashMap<>(), context);
-    Assert.assertTrue(out instanceof Map);
+    assertTrue(out instanceof Map);
     Map<String, String> mapOut = (Map<String, String>)out;
     //second one is null, so we don't want it there.
-    Assert.assertEquals(1, mapOut.size());
-    Assert.assertEquals("TO_UPPER('casey')", mapOut.get("var1"));
+    assertEquals(1, mapOut.size());
+    assertEquals("TO_UPPER('casey')", mapOut.get("var1"));
   }
 
   @Test
@@ -150,29 +144,29 @@
   public void testVars2MapEmpty() {
     Object out = run("SHELL_VARS2MAP()", new HashMap<>(), context);
     Map<String, String> mapOut = (Map<String, String>)out;
-    Assert.assertEquals(0, mapOut.size());
+    assertEquals(0, mapOut.size());
   }
 
   @Test
   public void testGetExpression() {
     Object out = run("SHELL_GET_EXPRESSION('var1')", new HashMap<>(), context);
-    Assert.assertTrue(out instanceof String);
+    assertTrue(out instanceof String);
     String expression = (String)out;
     //second one is null, so we don't want it there.
-    Assert.assertEquals("TO_UPPER('casey')", expression);
+    assertEquals("TO_UPPER('casey')", expression);
   }
 
   @Test
   public void testGetExpressionEmpty() {
     Object out = run("SHELL_GET_EXPRESSION()", new HashMap<>(), context);
-    Assert.assertNull(out );
+    assertNull(out );
   }
 
   @Test
-  public void testEdit() throws Exception {
+  public void testEdit() {
     System.getProperties().put("EDITOR", "/bin/cat");
     Object out = run("TO_UPPER(SHELL_EDIT(foo))", ImmutableMap.of("foo", "foo"), context);
-    Assert.assertEquals("FOO", out);
+    assertEquals("FOO", out);
   }
 
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/StringFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/StringFunctionsTest.java
index 7562570..e2aa16d 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/StringFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/StringFunctionsTest.java
@@ -24,37 +24,32 @@
 import org.apache.commons.collections4.map.HashedMap;
 import org.apache.metron.stellar.dsl.DefaultVariableResolver;
 import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
 import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class StringFunctionsTest {
 
   @Test
-  public void testStringFunctions() throws Exception {
+  public void testStringFunctions() {
     final Map<String, String> variableMap = new HashMap<String, String>() {{
       put("foo", "casey");
       put("ip", "192.168.0.1");
       put("empty", "");
       put("spaced", "metron is great");
     }};
-    Assert.assertTrue(runPredicate("true and TO_UPPER(foo) == 'CASEY'", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("foo in [ TO_LOWER('CASEY'), 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("TO_UPPER(foo) in [ TO_UPPER('casey'), 'david' ] and IN_SUBNET(ip, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("TO_LOWER(foo) in [ TO_UPPER('casey'), 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("true and TO_UPPER(foo) == 'CASEY'", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in [ TO_LOWER('CASEY'), 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("TO_UPPER(foo) in [ TO_UPPER('casey'), 'david' ] and IN_SUBNET(ip, '192.168.0.0/24')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("TO_LOWER(foo) in [ TO_UPPER('casey'), 'david' ]", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
-  public void testStringFunctions_advanced() throws Exception {
+  public void testStringFunctions_advanced() {
     final Map<String, Object> variableMap = new HashMap<String, Object>() {{
       put("foo", "casey");
       put("bar", "bar.casey.grok");
@@ -63,15 +58,15 @@
       put("spaced", "metron is great");
       put("myList", ImmutableList.of("casey", "apple", "orange"));
     }};
-    Assert.assertTrue(runPredicate("foo in SPLIT(bar, '.')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("foo in SPLIT(ip, '.')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("foo in myList", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
-    Assert.assertFalse(runPredicate("foo not in myList", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in SPLIT(bar, '.')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("foo in SPLIT(ip, '.')", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertTrue(runPredicate("foo in myList", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
+    assertFalse(runPredicate("foo not in myList", new DefaultVariableResolver(v -> variableMap.get(v),v -> variableMap.containsKey(v))));
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void testLeftRightFills() throws Exception {
+  public void testLeftRightFills() {
     final Map<String, Object> variableMap = new HashMap<String, Object>() {{
       put("foo", null);
       put("bar", null);
@@ -80,25 +75,25 @@
 
     //LEFT
     Object left = run("FILL_LEFT('123','X', 10)", new HashedMap());
-    Assert.assertNotNull(left);
-    Assert.assertEquals(10, ((String) left).length());
-    Assert.assertEquals("XXXXXXX123", (String) left);
+    assertNotNull(left);
+    assertEquals(10, ((String) left).length());
+    assertEquals("XXXXXXX123", (String) left);
 
     //RIGHT
     Object right = run("FILL_RIGHT('123','X', 10)", new HashedMap());
-    Assert.assertNotNull(right);
-    Assert.assertEquals(10, ((String) right).length());
-    Assert.assertEquals("123XXXXXXX", (String) right);
+    assertNotNull(right);
+    assertEquals(10, ((String) right).length());
+    assertEquals("123XXXXXXX", (String) right);
 
     //INPUT ALREADY LENGTH
     Object same = run("FILL_RIGHT('123','X', 3)", new HashedMap());
-    Assert.assertEquals(3, ((String) same).length());
-    Assert.assertEquals("123", (String) same);
+    assertEquals(3, ((String) same).length());
+    assertEquals("123", (String) same);
 
     //INPUT BIGGER THAN LENGTH
     Object tooBig = run("FILL_RIGHT('1234567890','X', 3)", new HashedMap());
-    Assert.assertEquals(10, ((String) tooBig).length());
-    Assert.assertEquals("1234567890", (String) tooBig);
+    assertEquals(10, ((String) tooBig).length());
+    assertEquals("1234567890", (String) tooBig);
 
     //NULL VARIABLES
     boolean thrown = false;
@@ -106,9 +101,9 @@
       run("FILL_RIGHT('123',foo,bar)", variableMap);
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("are both required"));
+      assertTrue(pe.getMessage().contains("are both required"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // NULL LENGTH
@@ -116,9 +111,9 @@
       run("FILL_RIGHT('123','X',bar)", variableMap);
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("are both required"));
+      assertTrue(pe.getMessage().contains("are both required"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // NULL FILL
@@ -126,9 +121,9 @@
       run("FILL_RIGHT('123',foo, 7)", variableMap);
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("are both required"));
+      assertTrue(pe.getMessage().contains("are both required"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // NON INTEGER LENGTH
@@ -136,9 +131,9 @@
       run("FILL_RIGHT('123','X', 'z' )", new HashedMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("not a valid Integer"));
+      assertTrue(pe.getMessage().contains("not a valid Integer"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // EMPTY STRING PAD
@@ -146,9 +141,9 @@
       Object returnValue = run("FILL_RIGHT('123','', 10 )", new HashedMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("cannot be an empty"));
+      assertTrue(pe.getMessage().contains("cannot be an empty"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     //MISSING LENGTH PARAMETER
@@ -156,16 +151,16 @@
       run("FILL_RIGHT('123',foo)", variableMap);
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("expects three"));
+      assertTrue(pe.getMessage().contains("expects three"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
   }
 
   @Test
-  public void shannonEntropyTest() throws Exception {
+  public void shannonEntropyTest() {
     //test empty string
-    Assert.assertEquals(0.0, (Double) run("STRING_ENTROPY('')", new HashMap<>()), 0.0);
-    Assert.assertEquals(0.0, (Double) run("STRING_ENTROPY(foo)", ImmutableMap.of("foo", "")), 0.0);
+    assertEquals(0.0, (Double) run("STRING_ENTROPY('')", new HashMap<>()), 0.0);
+    assertEquals(0.0, (Double) run("STRING_ENTROPY(foo)", ImmutableMap.of("foo", "")), 0.0);
 
     /*
     Now consider the string aaaaaaaaaabbbbbccccc or 10 a's followed by 5 b's and 5 c's.
@@ -177,22 +172,22 @@
       -p(a)*log_2(p(a)) - p(b)*log_2(p(b)) - p(c)*log_2(p(c)) =
       -0.5*-1 - 0.25*-2 - 0.25*-2 = 1.5
      */
-    Assert.assertEquals(1.5, (Double) run("STRING_ENTROPY(foo)", ImmutableMap.of("foo", "aaaaaaaaaabbbbbccccc")), 0.0);
+    assertEquals(1.5, (Double) run("STRING_ENTROPY(foo)", ImmutableMap.of("foo", "aaaaaaaaaabbbbbccccc")), 0.0);
   }
 
   @Test
-  public void testFormat() throws Exception {
+  public void testFormat() {
 
     Map<String, Object> vars = ImmutableMap.of(
             "cal", new Calendar.Builder().setDate(2017, 02, 02).build(),
             "x", 234,
             "y", 3);
 
-    Assert.assertEquals("no args",        run("FORMAT('no args')", vars));
-    Assert.assertEquals("234.0",          run("FORMAT('%.1f', TO_DOUBLE(234))", vars));
-    Assert.assertEquals("000234",         run("FORMAT('%06d', 234)", vars));
-    Assert.assertEquals("03 2,2017",      run("FORMAT('%1$tm %1$te,%1$tY', cal)", vars));
-    Assert.assertEquals("234 > 3",        run("FORMAT('%d > %d', x, y)", vars));
+    assertEquals("no args",        run("FORMAT('no args')", vars));
+    assertEquals("234.0",          run("FORMAT('%.1f', TO_DOUBLE(234))", vars));
+    assertEquals("000234",         run("FORMAT('%06d', 234)", vars));
+    assertEquals("03 2,2017",      run("FORMAT('%1$tm %1$te,%1$tY', cal)", vars));
+    assertEquals("234 > 3",        run("FORMAT('%d > %d', x, y)", vars));
 
     boolean thrown = false;
     try {
@@ -200,39 +195,38 @@
     } catch (ParseException pe) {
       thrown = true;
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
   }
 
   /**
    * FORMAT - Not passing a format string will throw an exception
    */
-  @Test(expected = ParseException.class)
-  public void testFormatWithNoArguments() throws Exception {
-    run("FORMAT()", Collections.emptyMap());
+  @Test
+  public void testFormatWithNoArguments() {
+    assertThrows(ParseException.class, () -> run("FORMAT()", Collections.emptyMap()));
   }
 
   /**
    * FORMAT - Forgetting to pass an argument required by the format string will throw an exception.
    */
-  @Test(expected = ParseException.class)
-  public void testFormatWithMissingArguments() throws Exception {
-    run("FORMAT('missing arg: %d')", Collections.emptyMap());
+  @Test
+  public void testFormatWithMissingArguments() {
+    assertThrows(ParseException.class, () -> run("FORMAT('missing arg: %d')", Collections.emptyMap()));
   }
 
 
   /**
    * CHOMP StringFunction
    *
-   * @throws Exception
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void testChomp() throws Exception {
-    Assert.assertEquals("abc",  run("CHOMP('abc')", new HashedMap()));
-    Assert.assertEquals("abc",  run("CHOMP(msg)", ImmutableMap.of("msg", "abc\r\n")));
-    Assert.assertEquals("",     run("CHOMP(msg)", ImmutableMap.of("msg", "\n")));
-    Assert.assertEquals("",     run("CHOMP('')", new HashedMap()));
-    Assert.assertEquals(null,   run("CHOMP(null)", new HashedMap()));
+  public void testChomp() {
+    assertEquals("abc",  run("CHOMP('abc')", new HashedMap()));
+    assertEquals("abc",  run("CHOMP(msg)", ImmutableMap.of("msg", "abc\r\n")));
+    assertEquals("",     run("CHOMP(msg)", ImmutableMap.of("msg", "\n")));
+    assertEquals("",     run("CHOMP('')", new HashedMap()));
+    assertNull(run("CHOMP(null)", new HashedMap()));
 
     // No input
     boolean thrown = false;
@@ -240,9 +234,9 @@
       run("CHOMP()", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("missing argument"));
+      assertTrue(pe.getMessage().contains("missing argument"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Variable missing
@@ -258,9 +252,9 @@
       run("CHOMP(123)", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("cannot be cast"));
+      assertTrue(pe.getMessage().contains("cannot be cast"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
   }
 
@@ -272,12 +266,12 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testChop() throws Exception {
-    Assert.assertEquals("ab",   run("CHOP('abc')", new HashedMap()));
-    Assert.assertEquals(null,   run("CHOP(null)", new HashedMap()));
-    Assert.assertEquals("abc",  run("CHOP(msg)", ImmutableMap.of("msg", "abc\r\n")));
-    Assert.assertEquals("",     run("CHOP(msg)", ImmutableMap.of("msg", "")));
-    Assert.assertEquals("",     run("CHOP(msg)", ImmutableMap.of("msg", "\n")));
-    Assert.assertEquals("",     run("CHOP('')", new HashedMap()));
+    assertEquals("ab",   run("CHOP('abc')", new HashedMap()));
+    assertNull(run("CHOP(null)", new HashedMap()));
+    assertEquals("abc",  run("CHOP(msg)", ImmutableMap.of("msg", "abc\r\n")));
+    assertEquals("",     run("CHOP(msg)", ImmutableMap.of("msg", "")));
+    assertEquals("",     run("CHOP(msg)", ImmutableMap.of("msg", "\n")));
+    assertEquals("",     run("CHOP('')", new HashedMap()));
 
     // No input
     boolean thrown = false;
@@ -285,9 +279,9 @@
       run("CHOP()", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("missing argument"));
+      assertTrue(pe.getMessage().contains("missing argument"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Variable missing
@@ -303,9 +297,9 @@
       run("CHOP(123)", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("cannot be cast"));
+      assertTrue(pe.getMessage().contains("cannot be cast"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
   }
 
@@ -315,11 +309,11 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testPrependIfMissing() throws Exception {
-    Assert.assertEquals("xyzabc",     run("PREPEND_IF_MISSING('abc', 'xyz')", new HashedMap()));
-    Assert.assertEquals("xyzXYZabc",  run("PREPEND_IF_MISSING('XYZabc', 'xyz', 'mno')", new HashedMap()));
-    Assert.assertEquals("mnoXYZabc",  run("PREPEND_IF_MISSING('mnoXYZabc', 'xyz', 'mno')", new HashedMap()));
-    Assert.assertEquals(null,         run("PREPEND_IF_MISSING(null, null, null)", new HashedMap()));
-    Assert.assertEquals("xyz",        run("PREPEND_IF_MISSING('', 'xyz', null)", new HashedMap()));
+    assertEquals("xyzabc",     run("PREPEND_IF_MISSING('abc', 'xyz')", new HashedMap()));
+    assertEquals("xyzXYZabc",  run("PREPEND_IF_MISSING('XYZabc', 'xyz', 'mno')", new HashedMap()));
+    assertEquals("mnoXYZabc",  run("PREPEND_IF_MISSING('mnoXYZabc', 'xyz', 'mno')", new HashedMap()));
+    assertNull(run("PREPEND_IF_MISSING(null, null, null)", new HashedMap()));
+    assertEquals("xyz",        run("PREPEND_IF_MISSING('', 'xyz', null)", new HashedMap()));
 
     // No input
     boolean thrown = false;
@@ -327,9 +321,9 @@
       run("PREPEND_IF_MISSING()", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("incorrect arguments"));
+      assertTrue(pe.getMessage().contains("incorrect arguments"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Incorrect number of arguments - 1
@@ -337,9 +331,9 @@
       run("PREPEND_IF_MISSING('abc')", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("incorrect arguments"));
+      assertTrue(pe.getMessage().contains("incorrect arguments"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Incorrect number of arguments - 2
@@ -347,9 +341,9 @@
       run("PREPEND_IF_MISSING('abc', 'def', 'ghi', 'jkl')", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("incorrect arguments"));
+      assertTrue(pe.getMessage().contains("incorrect arguments"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Integer input
@@ -357,9 +351,9 @@
       run("PREPEND_IF_MISSING(123, 'abc')", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("cannot be cast"));
+      assertTrue(pe.getMessage().contains("cannot be cast"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
   }
 
@@ -368,11 +362,11 @@
    */
   @Test
   @SuppressWarnings("unchecked")
-  public void testAppendIfMissing() throws Exception {
-    Assert.assertEquals("apachemetron",   run("APPEND_IF_MISSING('apache', 'metron')", new HashedMap()));
-    Assert.assertEquals("abcXYZxyz",      run("APPEND_IF_MISSING('abcXYZ', 'xyz', 'mno')", new HashedMap()));
-    Assert.assertEquals(null,             run("APPEND_IF_MISSING(null, null, null)", new HashedMap()));
-    Assert.assertEquals("xyz",            run("APPEND_IF_MISSING('', 'xyz', null)", new HashedMap()));
+  public void testAppendIfMissing() {
+    assertEquals("apachemetron",   run("APPEND_IF_MISSING('apache', 'metron')", new HashedMap()));
+    assertEquals("abcXYZxyz",      run("APPEND_IF_MISSING('abcXYZ', 'xyz', 'mno')", new HashedMap()));
+    assertNull(run("APPEND_IF_MISSING(null, null, null)", new HashedMap()));
+    assertEquals("xyz",            run("APPEND_IF_MISSING('', 'xyz', null)", new HashedMap()));
 
     // No input
     boolean thrown = false;
@@ -380,9 +374,9 @@
       run("APPEND_IF_MISSING()", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("incorrect arguments"));
+      assertTrue(pe.getMessage().contains("incorrect arguments"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Incorrect number of arguments - 1
@@ -390,9 +384,9 @@
       run("APPEND_IF_MISSING('abc')", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("incorrect arguments"));
+      assertTrue(pe.getMessage().contains("incorrect arguments"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Incorrect number of arguments - 2
@@ -400,9 +394,9 @@
       run("APPEND_IF_MISSING('abc', 'def', 'ghi', 'jkl')", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("incorrect arguments"));
+      assertTrue(pe.getMessage().contains("incorrect arguments"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Integer input
@@ -410,45 +404,45 @@
       run("APPEND_IF_MISSING(123, 'abc')", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("cannot be cast"));
+      assertTrue(pe.getMessage().contains("cannot be cast"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
   }
 
   @Test
-  public void testSubstring() throws Exception {
+  public void testSubstring() {
     Map<String, Object> variables = ImmutableMap.of("s", "apache metron");
-    Assert.assertEquals("metron", run("SUBSTRING(s, 7)", variables));
-    Assert.assertEquals("me", run("SUBSTRING(s, 7, 9)", variables));
-    Assert.assertNull(run("SUBSTRING(null, 7, 9)", new HashMap<>()));
-    Assert.assertNull(run("SUBSTRING(null, null, 9)", new HashMap<>()));
-    Assert.assertNull(run("SUBSTRING(s, null, 9)", variables));
-    Assert.assertNull(run("SUBSTRING(null, null, null)", new HashMap<>()));
-    Assert.assertEquals("metron", run("SUBSTRING(s, 7, null)", variables));
+    assertEquals("metron", run("SUBSTRING(s, 7)", variables));
+    assertEquals("me", run("SUBSTRING(s, 7, 9)", variables));
+    assertNull(run("SUBSTRING(null, 7, 9)", new HashMap<>()));
+    assertNull(run("SUBSTRING(null, null, 9)", new HashMap<>()));
+    assertNull(run("SUBSTRING(s, null, 9)", variables));
+    assertNull(run("SUBSTRING(null, null, null)", new HashMap<>()));
+    assertEquals("metron", run("SUBSTRING(s, 7, null)", variables));
   }
 
-  @Test(expected=ParseException.class)
-  public void testSubstring_invalidEmpty() throws Exception {
-    Assert.assertEquals("metron", run("SUBSTRING()", new HashMap<>()));
+  @Test
+  public void testSubstring_invalidEmpty() {
+    assertThrows(ParseException.class, () -> run("SUBSTRING()", new HashMap<>()));
   }
 
-  @Test(expected=ParseException.class)
-  public void testSubstring_invalidWrongTypeStart() throws Exception {
+  @Test
+  public void testSubstring_invalidWrongTypeStart() {
     Map<String, Object> variables = ImmutableMap.of("s", "apache metron");
-    Assert.assertEquals("metron", (String) run("SUBSTRING(s, '7')", variables));
+    assertThrows(ParseException.class, () -> run("SUBSTRING(s, '7')", variables));
   }
 
-  @Test(expected=ParseException.class)
-  public void testSubstring_invalidWrongTypeEnd() throws Exception {
+  @Test
+  public void testSubstring_invalidWrongTypeEnd() {
     Map<String, Object> variables = ImmutableMap.of("s", "apache metron");
-    Assert.assertEquals("metron", (String) run("SUBSTRING(s, 7, '9')", variables));
+    assertThrows(ParseException.class, () -> run("SUBSTRING(s, 7, '9')", variables));
   }
 
-  @Test(expected=ParseException.class)
-  public void testSubstring_invalidWrongTypeInput() throws Exception {
+  @Test
+  public void testSubstring_invalidWrongTypeInput() {
     Map<String, Object> variables = ImmutableMap.of("s", 7);
-    Assert.assertEquals("metron", (String) run("SUBSTRING(s, 7, '9')", variables));
+    assertThrows(ParseException.class, () -> run("SUBSTRING(s, 7, '9')", variables));
   }
 
   /**
@@ -457,10 +451,10 @@
   @Test
   @SuppressWarnings("unchecked")
   public void testCountMatches() throws Exception {
-    Assert.assertEquals(0, (int) run("COUNT_MATCHES(null, '*')", new HashedMap()));
-    Assert.assertEquals(2, (int) run("COUNT_MATCHES('apachemetron', 'e')", new HashedMap()));
-    Assert.assertEquals(2, (int) run("COUNT_MATCHES('anand', 'an')", new HashedMap()));
-    Assert.assertEquals(0, (int) run("COUNT_MATCHES('abcd', null)", new HashedMap()));
+    assertEquals(0, (int) run("COUNT_MATCHES(null, '*')", new HashedMap()));
+    assertEquals(2, (int) run("COUNT_MATCHES('apachemetron', 'e')", new HashedMap()));
+    assertEquals(2, (int) run("COUNT_MATCHES('anand', 'an')", new HashedMap()));
+    assertEquals(0, (int) run("COUNT_MATCHES('abcd', null)", new HashedMap()));
 
     // No input
     boolean thrown = false;
@@ -468,9 +462,9 @@
       run("COUNT_MATCHES()", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("incorrect arguments"));
+      assertTrue(pe.getMessage().contains("incorrect arguments"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Incorrect number of arguments - 1
@@ -478,9 +472,9 @@
       run("COUNT_MATCHES('abc')", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("incorrect arguments"));
+      assertTrue(pe.getMessage().contains("incorrect arguments"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Integer input
@@ -488,9 +482,9 @@
       run("COUNT_MATCHES(123, 456)", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("cannot be cast"));
+      assertTrue(pe.getMessage().contains("cannot be cast"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
   }
 
@@ -543,39 +537,39 @@
 
   @Test
   @SuppressWarnings("unchecked")
-  public void testToJsonObject() throws Exception {
+  public void testToJsonObject() {
     //JSON Object
     Object ret1 = run("TO_JSON_OBJECT(msg)", ImmutableMap.of("msg", string1));
-    Assert.assertNotNull(ret1);
-    Assert.assertTrue (ret1 instanceof HashMap);
+    assertNotNull(ret1);
+    assertTrue (ret1 instanceof HashMap);
 
     Object ret2 = run("TO_JSON_OBJECT(msg)", ImmutableMap.of("msg", string2));
-    Assert.assertNotNull(ret2);
-    Assert.assertTrue (ret2 instanceof HashMap);
-    Assert.assertEquals("def", run("MAP_GET( 'bar', returnval)", ImmutableMap.of("returnval", ret2)));
+    assertNotNull(ret2);
+    assertTrue (ret2 instanceof HashMap);
+    assertEquals("def", run("MAP_GET( 'bar', returnval)", ImmutableMap.of("returnval", ret2)));
 
     //Simple Arrays
     Object ret3 = run("TO_JSON_OBJECT(msg)", ImmutableMap.of("msg", string3));
-    Assert.assertNotNull(ret3);
-    Assert.assertTrue (ret3 instanceof ArrayList);
+    assertNotNull(ret3);
+    assertTrue (ret3 instanceof ArrayList);
     List<Object> result3 = (List<Object>) ret3;
-    Assert.assertEquals(2, result3.get(1));
+    assertEquals(2, result3.get(1));
 
     Object ret4 = run("TO_JSON_OBJECT(msg)", ImmutableMap.of("msg", string4));
-    Assert.assertNotNull(ret4);
-    Assert.assertTrue (ret4 instanceof ArrayList);
+    assertNotNull(ret4);
+    assertTrue (ret4 instanceof ArrayList);
     List<Object> result4 = (List<Object>) ret4;
-    Assert.assertEquals("car", result4.get(2));
+    assertEquals("car", result4.get(2));
 
     //JSON Array
     Object ret5 = run( "TO_JSON_OBJECT(msg)", ImmutableMap.of("msg", string5));
-    Assert.assertNotNull(ret5);
-    Assert.assertTrue (ret5 instanceof ArrayList);
+    assertNotNull(ret5);
+    assertTrue (ret5 instanceof ArrayList);
     List<List<Object>> result5 = (List<List<Object>>) ret5;
     HashMap<String,String> results5Map1 = (HashMap) result5.get(0);
-    Assert.assertEquals("def", results5Map1.get("bar1"));
+    assertEquals("def", results5Map1.get("bar1"));
     HashMap<String,String> results5Map2 = (HashMap) result5.get(1);
-    Assert.assertEquals("ghi", results5Map2.get("foo2"));
+    assertEquals("ghi", results5Map2.get("foo2"));
 
     // No input
     boolean thrown = false;
@@ -583,9 +577,9 @@
       run("TO_JSON_OBJECT()", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("Unable to parse"));
+      assertTrue(pe.getMessage().contains("Unable to parse"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Invalid input
@@ -593,9 +587,9 @@
       run("TO_JSON_OBJECT('123, 456')", new HashedMap<>());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("Valid JSON string not supplied"));
+      assertTrue(pe.getMessage().contains("Valid JSON string not supplied"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Malformed JSON String
@@ -603,23 +597,23 @@
       run("TO_JSON_OBJECT('{\"foo\" : 2')", new HashedMap<>());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("Valid JSON string not supplied"));
+      assertTrue(pe.getMessage().contains("Valid JSON string not supplied"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
   }
 
   @Test
-  public void testToJsonMap() throws Exception {
+  public void testToJsonMap() {
     //JSON Object
     Object ret1 = run("TO_JSON_MAP(msg)", ImmutableMap.of("msg", string1));
-    Assert.assertNotNull(ret1);
-    Assert.assertTrue (ret1 instanceof HashMap);
+    assertNotNull(ret1);
+    assertTrue (ret1 instanceof HashMap);
 
     Object ret2 = run("TO_JSON_MAP(msg)", ImmutableMap.of("msg", string2));
-    Assert.assertNotNull(ret2);
-    Assert.assertTrue (ret2 instanceof HashMap);
-    Assert.assertEquals("def", run("MAP_GET( 'bar', returnval)", ImmutableMap.of("returnval", ret2)));
+    assertNotNull(ret2);
+    assertTrue (ret2 instanceof HashMap);
+    assertEquals("def", run("MAP_GET( 'bar', returnval)", ImmutableMap.of("returnval", ret2)));
 
     //Simple Arrays
     boolean thrown = false;
@@ -629,7 +623,7 @@
     } catch (ParseException pe) {
       thrown = true;
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
     thrown = false;
     try {
@@ -637,7 +631,7 @@
     } catch (ParseException pe) {
       thrown = true;
     }
-    Assert.assertTrue (thrown);
+    assertTrue (thrown);
 
     //JSON Array
     thrown = false;
@@ -646,7 +640,7 @@
     } catch (ParseException pe) {
       thrown = true;
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
 
     // No input
@@ -654,9 +648,9 @@
       run("TO_JSON_MAP()", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("Unable to parse"));
+      assertTrue(pe.getMessage().contains("Unable to parse"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Invalid input
@@ -664,9 +658,9 @@
       run("TO_JSON_MAP('123, 456')", new HashedMap<>());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("is not a valid JSON string"));
+      assertTrue(pe.getMessage().contains("is not a valid JSON string"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
 
     // Malformed JSON String
@@ -674,37 +668,37 @@
       run("TO_JSON_MAP('{\"foo\" : 2')", new HashedMap<>());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("is not a valid JSON string"));
+      assertTrue(pe.getMessage().contains("is not a valid JSON string"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
     thrown = false;
   }
 
   @Test
   @SuppressWarnings("unchecked")
-  public void testToJsonList() throws Exception {
+  public void testToJsonList() {
     //Simple Arrays
     Object ret3 = run("TO_JSON_LIST(msg)", ImmutableMap.of("msg", string3));
-    Assert.assertNotNull(ret3);
-    Assert.assertTrue (ret3 instanceof ArrayList);
+    assertNotNull(ret3);
+    assertTrue (ret3 instanceof ArrayList);
     List<Object> result3 = (List<Object>) ret3;
-    Assert.assertEquals(2, result3.get(1));
+    assertEquals(2, result3.get(1));
 
     Object ret4 = run("TO_JSON_LIST(msg)", ImmutableMap.of("msg", string4));
-    Assert.assertNotNull(ret4);
-    Assert.assertTrue (ret4 instanceof ArrayList);
+    assertNotNull(ret4);
+    assertTrue (ret4 instanceof ArrayList);
     List<Object> result4 = (List<Object>) ret4;
-    Assert.assertEquals("car", result4.get(2));
+    assertEquals("car", result4.get(2));
 
     //JSON Array
     Object ret5 = run( "TO_JSON_LIST(msg)", ImmutableMap.of("msg", string5));
-    Assert.assertNotNull(ret5);
-    Assert.assertTrue (ret5 instanceof ArrayList);
+    assertNotNull(ret5);
+    assertTrue (ret5 instanceof ArrayList);
     List<List<Object>> result5 = (List<List<Object>>) ret5;
     HashMap<String,String> results5Map1 = (HashMap) result5.get(0);
-    Assert.assertEquals("def", results5Map1.get("bar1"));
+    assertEquals("def", results5Map1.get("bar1"));
     HashMap<String,String> results5Map2 = (HashMap) result5.get(1);
-    Assert.assertEquals("ghi", results5Map2.get("foo2"));
+    assertEquals("ghi", results5Map2.get("foo2"));
 
     //JSON Object - throws exception
     boolean thrown = false;
@@ -713,7 +707,7 @@
     } catch (ParseException pe) {
       thrown = true;
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
     thrown = false;
     try {
@@ -721,7 +715,7 @@
     } catch (ParseException pe) {
       thrown = true;
     }
-    Assert.assertTrue (thrown);
+    assertTrue (thrown);
 
     // No input
     thrown = false;
@@ -729,9 +723,9 @@
       run("TO_JSON_LIST()", Collections.emptyMap());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("Unable to parse"));
+      assertTrue(pe.getMessage().contains("Unable to parse"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
     // Invalid input
     thrown = false;
@@ -739,9 +733,9 @@
       run("TO_JSON_LIST('123, 456')", new HashedMap<>());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("is not a valid JSON string"));
+      assertTrue(pe.getMessage().contains("is not a valid JSON string"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
 
     // Malformed JSON String
     thrown = false;
@@ -749,9 +743,9 @@
       run("TO_JSON_LIST('{\"foo\" : 2')", new HashedMap<>());
     } catch (ParseException pe) {
       thrown = true;
-      Assert.assertTrue(pe.getMessage().contains("is not a valid JSON string"));
+      assertTrue(pe.getMessage().contains("is not a valid JSON string"));
     }
-    Assert.assertTrue(thrown);
+    assertTrue(thrown);
   }
 
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/SystemFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/SystemFunctionsTest.java
index 9dff323..0395c0b 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/SystemFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/SystemFunctionsTest.java
@@ -19,12 +19,12 @@
 
 import com.google.common.collect.ImmutableList;
 import org.apache.metron.stellar.common.system.Environment;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.ArrayList;
 
 import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/TextFunctionsTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/TextFunctionsTest.java
index d95cf66..57ad7c7 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/TextFunctionsTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/TextFunctionsTest.java
@@ -15,16 +15,17 @@
 
 package org.apache.metron.stellar.dsl.functions;
 
-import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
-import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import org.apache.metron.stellar.dsl.DefaultVariableResolver;
+import org.apache.metron.stellar.dsl.ParseException;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import org.apache.metron.stellar.dsl.DefaultVariableResolver;
-import org.apache.metron.stellar.dsl.ParseException;
-import org.junit.Assert;
-import org.junit.Test;
+
+import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.run;
+import static org.apache.metron.stellar.common.utils.StellarProcessorUtils.runPredicate;
+import static org.junit.jupiter.api.Assertions.*;
 
 public class TextFunctionsTest {
 
@@ -41,62 +42,75 @@
   @SuppressWarnings("unchecked")
   public void testGetAvailableLanguageTags() {
     Object ret = run("FUZZY_LANGS()", new HashMap<>());
-    Assert.assertNotNull(ret);
-    Assert.assertTrue(ret instanceof List);
+    assertNotNull(ret);
+    assertTrue(ret instanceof List);
     List<String> tags = (List<String>) ret;
-    Assert.assertTrue(tags.size() > 0);
-    Assert.assertTrue(tags.contains("en"));
-    Assert.assertTrue(tags.contains("fr"));
+    assertTrue(tags.size() > 0);
+    assertTrue(tags.contains("en"));
+    assertTrue(tags.contains("fr"));
   }
 
   @Test()
-  public void testNoMatchStrings() throws Exception {
-    Assert.assertTrue(runPredicate("0 == FUZZY_SCORE(metron,'z',english)",
+  public void testNoMatchStrings() {
+    assertTrue(runPredicate("0 == FUZZY_SCORE(metron,'z',english)",
         new DefaultVariableResolver(v -> variableMap.get(v),
             v -> variableMap.containsKey(v))));
   }
 
-  @Test(expected = ParseException.class)
-  public void testMissingLanguage() throws Exception {
-    runPredicate("0 == FUZZY_SCORE(metron,'z',klingon)",
-        new DefaultVariableResolver(v -> variableMap.get(v),
-            v -> variableMap.containsKey(v)));
+  @Test
+  public void testMissingLanguage() {
+    assertThrows(
+        ParseException.class,
+        () ->
+            runPredicate(
+                "0 == FUZZY_SCORE(metron,'z',klingon)",
+                new DefaultVariableResolver(
+                    v -> variableMap.get(v), v -> variableMap.containsKey(v))));
   }
 
   @Test()
-  public void testEmptyFirstArg() throws Exception {
-    Assert.assertTrue(runPredicate("0 == FUZZY_SCORE(empty,'z',english)",
+  public void testEmptyFirstArg() {
+    assertTrue(runPredicate("0 == FUZZY_SCORE(empty,'z',english)",
         new DefaultVariableResolver(v -> variableMap.get(v), v -> variableMap.containsKey(v))));
   }
 
   @Test()
-  public void testEmptyFirstTwoArgs() throws Exception {
-    Assert.assertTrue(runPredicate("0 == FUZZY_SCORE(empty,empty,english)",
+  public void testEmptyFirstTwoArgs() {
+    assertTrue(runPredicate("0 == FUZZY_SCORE(empty,empty,english)",
         new DefaultVariableResolver(v -> variableMap.get(v),
             v -> variableMap.containsKey(v))));
   }
 
-  @Test(expected = ParseException.class)
-  public void testEmptyArgs() throws Exception {
-    runPredicate("0 == FUZZY_SCORE(empty,empty,empty)",
-        new DefaultVariableResolver(v -> variableMap.get(v), v -> variableMap.containsKey(v)));
-  }
-
-  @Test(expected = ParseException.class)
-  public void testNoArgs() throws Exception {
-    runPredicate("0 == FUZZY_SCORE()",
-        new DefaultVariableResolver(v -> variableMap.get(v), v -> variableMap.containsKey(v)));
+  @Test
+  public void testEmptyArgs() {
+    assertThrows(
+        ParseException.class,
+        () ->
+            runPredicate(
+                "0 == FUZZY_SCORE(empty,empty,empty)",
+                new DefaultVariableResolver(
+                    v -> variableMap.get(v), v -> variableMap.containsKey(v))));
   }
 
   @Test
-  public void testHappyStringFunctions() throws Exception {
-    Assert
-        .assertTrue(runPredicate("1 == FUZZY_SCORE(metron,'m',english)",
+  public void testNoArgs() {
+    assertThrows(
+        ParseException.class,
+        () ->
+            runPredicate(
+                "0 == FUZZY_SCORE()",
+                new DefaultVariableResolver(
+                    v -> variableMap.get(v), v -> variableMap.containsKey(v))));
+  }
+
+  @Test
+  public void testHappyStringFunctions() {
+    assertTrue(runPredicate("1 == FUZZY_SCORE(metron,'m',english)",
             new DefaultVariableResolver(v -> variableMap.get(v), v -> variableMap.containsKey(v))));
-    Assert.assertTrue(
+    assertTrue(
         runPredicate("16 == FUZZY_SCORE(metron,'metron',english)",
             new DefaultVariableResolver(v -> variableMap.get(v), v -> variableMap.containsKey(v))));
-    Assert.assertTrue(runPredicate("3 == FUZZY_SCORE(asf,'asf',english)",
+    assertTrue(runPredicate("3 == FUZZY_SCORE(asf,'asf',english)",
         new DefaultVariableResolver(v -> variableMap.get(v), v -> variableMap.containsKey(v))));
   }
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/BaseFunctionResolverTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/BaseFunctionResolverTest.java
index 47cbda3..093b8a3 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/BaseFunctionResolverTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/BaseFunctionResolverTest.java
@@ -19,7 +19,9 @@
 package org.apache.metron.stellar.dsl.functions.resolver;
 
 import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+
 
 import java.io.IOException;
 import java.util.HashSet;
@@ -28,11 +30,8 @@
 import org.apache.metron.stellar.dsl.BaseStellarFunction;
 import org.apache.metron.stellar.dsl.Stellar;
 import org.apache.metron.stellar.dsl.StellarFunction;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 public class BaseFunctionResolverTest {
 
@@ -104,7 +103,7 @@
     }
 
     @Override
-    public void close() throws IOException {
+    public void close() {
       closeCallCount++;
       if (throwException) {
         throw new NullPointerException("A most annoying exception.");
@@ -114,7 +113,7 @@
 
   private TestResolver resolver;
 
-  @Before
+  @BeforeEach
   public void setup() {
     resolver = new TestResolver();
     IAmAFunction.throwException = false;
@@ -130,18 +129,13 @@
     assertThat(IAmAnotherFunction.closeCallCount, equalTo(1));
   }
 
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   @Test
-  public void close_collects_all_exceptions_thrown_on_loaded_function_close_methods()
-      throws IOException {
+  public void close_collects_all_exceptions_thrown_on_loaded_function_close_methods() {
     IAmAFunction.throwException = true;
     IAmAnotherFunction.throwException = true;
     resolver.withClass(IAmAFunction.class);
     resolver.withClass(IAmAnotherFunction.class);
-    exception.expect(IOException.class);
-    resolver.close();
+    assertThrows(IOException.class, () -> resolver.close());
   }
 
   @Test
@@ -151,12 +145,7 @@
     IAmAnotherFunction.throwException = true;
     resolver.withClass(IAmAFunction.class);
     resolver.withClass(IAmAnotherFunction.class);
-    try {
-      resolver.close();
-      Assert.fail("Should have thrown an exception.");
-    } catch (IOException e) {
-      // intentionally empty
-    }
+    assertThrows(IOException.class, () -> resolver.close());
     assertThat(IAmAFunction.closeCallCount, equalTo(1));
     assertThat(IAmAnotherFunction.closeCallCount, equalTo(1));
     // should not throw exceptions or call any function's close again.
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/ClasspathFunctionResolverTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/ClasspathFunctionResolverTest.java
index cc5bc7c..95ebce0 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/ClasspathFunctionResolverTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/ClasspathFunctionResolverTest.java
@@ -21,13 +21,10 @@
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
-import org.apache.commons.vfs2.FileSystemException;
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.dsl.StellarFunction;
-import org.junit.Assert;
-import org.junit.BeforeClass;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.Test;
 import org.reflections.util.FilterBuilder;
 
 import java.io.File;
@@ -37,14 +34,15 @@
 import java.util.Set;
 
 import static org.apache.metron.stellar.dsl.functions.resolver.ClasspathFunctionResolver.Config.*;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
 
 public class ClasspathFunctionResolverTest {
 
   private static List<String> expectedFunctions;
 
-  @BeforeClass
+  @BeforeAll
   public static void setup() {
 
     // search the entire classpath for functions - provides a baseline to test against
@@ -82,7 +80,7 @@
     List<String> actual = Lists.newArrayList(resolver.getFunctions());
 
     // validate - should have found all of the functions
-    Assert.assertEquals(expectedFunctions, actual);
+    assertEquals(expectedFunctions, actual);
   }
 
   @Test
@@ -97,8 +95,8 @@
     List<String> actual = Lists.newArrayList(resolver.getFunctions());
 
     // validate - should have found all of the functions
-    Assert.assertTrue(actual.size() > 0);
-    Assert.assertTrue(actual.size() <= expectedFunctions.size());
+    assertTrue(actual.size() > 0);
+    assertTrue(actual.size() <= expectedFunctions.size());
   }
 
   @Test
@@ -113,23 +111,23 @@
     List<String> actual = Lists.newArrayList(resolver.getFunctions());
 
     // both should have resolved the same functions
-    Assert.assertEquals(0, actual.size());
+    assertEquals(0, actual.size());
   }
 
   @Test
-  public void testExternalLocal() throws FileSystemException, ClassNotFoundException {
+  public void testExternalLocal() {
     File jar = new File("src/test/classpath-resources");
-    Assert.assertTrue(jar.exists());
+    assertTrue(jar.exists());
     Properties config = new Properties();
     config.put(STELLAR_VFS_PATHS.param(), jar.toURI() + "/.*.jar");
 
     ClasspathFunctionResolver resolver = create(config);
     HashSet<String> functions = new HashSet<>(Lists.newArrayList(resolver.getFunctions()));
-    Assert.assertTrue(functions.contains("NOW"));
+    assertTrue(functions.contains("NOW"));
   }
 
   @Test
-  public void testInvalidStellarClass() throws Exception {
+  public void testInvalidStellarClass() {
     StellarFunction goodFunc = mock(StellarFunction.class);
     StellarFunction badFunc = mock(StellarFunction.class);
     ClasspathFunctionResolver resolver = new ClasspathFunctionResolver() {
@@ -147,8 +145,8 @@
       }
     };
     Set<Class<? extends StellarFunction>> funcs = resolver.resolvables();
-    Assert.assertEquals(1, funcs.size());
-    Assert.assertEquals(goodFunc.getClass(), Iterables.getFirst(funcs, null));
+    assertEquals(1, funcs.size());
+    assertEquals(goodFunc.getClass(), Iterables.getFirst(funcs, null));
   }
 
 }
diff --git a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/SimpleFunctionResolverTest.java b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/SimpleFunctionResolverTest.java
index a4c3b2d..1e88fe5 100644
--- a/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/SimpleFunctionResolverTest.java
+++ b/metron-stellar/stellar-common/src/test/java/org/apache/metron/stellar/dsl/functions/resolver/SimpleFunctionResolverTest.java
@@ -19,17 +19,15 @@
 package org.apache.metron.stellar.dsl.functions.resolver;
 
 import com.google.common.collect.Lists;
-import org.apache.metron.stellar.dsl.BaseStellarFunction;
-import org.apache.metron.stellar.dsl.Context;
-import org.apache.metron.stellar.dsl.ParseException;
-import org.apache.metron.stellar.dsl.Stellar;
-import org.apache.metron.stellar.dsl.StellarFunction;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.apache.metron.stellar.dsl.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.List;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Tests the SimpleFunctionResolver class.
  */
@@ -37,7 +35,7 @@
 
   private SimpleFunctionResolver resolver;
 
-  @Before
+  @BeforeEach
   public void setup() {
     resolver = new SimpleFunctionResolver();
   }
@@ -46,8 +44,8 @@
   public void testFunctionResolution() {
     resolver.withClass(IAmAFunction.class);
     List<String> functions = Lists.newArrayList(resolver.getFunctions());
-    Assert.assertEquals(1, functions.size());
-    Assert.assertTrue(functions.contains("namespace_function"));
+    assertEquals(1, functions.size());
+    assertTrue(functions.contains("namespace_function"));
   }
 
   /**
@@ -58,7 +56,7 @@
     resolver.withClass(IAmAFunction.class);
     final String functionName = "namespace_function";
     StellarFunction fn = resolver.apply(functionName);
-    Assert.assertTrue(fn instanceof IAmAFunction);
+    assertTrue(fn instanceof IAmAFunction);
   }
 
   /**
@@ -68,7 +66,7 @@
   public void testFunctionResolutionWithMissingAnnotation() {
     resolver.withClass(MissingAnnotation.class);
     List<String> functions = Lists.newArrayList(resolver.getFunctions());
-    Assert.assertEquals(0, functions.size());
+    assertEquals(0, functions.size());
   }
 
   /**
@@ -79,7 +77,7 @@
     resolver.withClass(IAmAFunction.class);
     resolver.withClass(IAmAFunction.class);
     List<String> functions = Lists.newArrayList(resolver.getFunctions());
-    Assert.assertEquals(1, functions.size());
+    assertEquals(1, functions.size());
   }
 
   /**
diff --git a/metron-stellar/stellar-common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/metron-stellar/stellar-common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
new file mode 100644
index 0000000..ca6ee9c
--- /dev/null
+++ b/metron-stellar/stellar-common/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
@@ -0,0 +1 @@
+mock-maker-inline
\ No newline at end of file
diff --git a/metron-stellar/stellar-zeppelin/pom.xml b/metron-stellar/stellar-zeppelin/pom.xml
index 3984afe..dc77c3d 100644
--- a/metron-stellar/stellar-zeppelin/pom.xml
+++ b/metron-stellar/stellar-zeppelin/pom.xml
@@ -49,8 +49,19 @@
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>
-            <artifactId>mockito-all</artifactId>
-            <version>${global_mockito_version}</version>
+            <artifactId>mockito-core</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-api</artifactId>
+            <version>${global_junit_jupiter_version}</version>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter-engine</artifactId>
+            <version>${global_junit_jupiter_version}</version>
             <scope>test</scope>
         </dependency>
     </dependencies>
diff --git a/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/StellarInterpreterPropertyTest.java b/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/StellarInterpreterPropertyTest.java
index d474eaf..7eb922a 100644
--- a/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/StellarInterpreterPropertyTest.java
+++ b/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/StellarInterpreterPropertyTest.java
@@ -17,13 +17,13 @@
  */
 package org.apache.metron.stellar.zeppelin;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.util.Collections;
 import java.util.Map;
 
 import static org.apache.metron.stellar.zeppelin.StellarInterpreterProperty.ZOOKEEPER_URL;
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Tests the StellarInterpreterProperty class.
diff --git a/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/StellarInterpreterTest.java b/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/StellarInterpreterTest.java
index c817747..e6ebcd5 100644
--- a/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/StellarInterpreterTest.java
+++ b/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/StellarInterpreterTest.java
@@ -25,19 +25,15 @@
 import org.apache.zeppelin.interpreter.InterpreterResult;
 import org.apache.zeppelin.interpreter.InterpreterResultMessage;
 import org.apache.zeppelin.interpreter.thrift.InterpreterCompletion;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.List;
 import java.util.Map;
 import java.util.Optional;
 import java.util.Properties;
 
-import static org.apache.metron.stellar.zeppelin.StellarInterpreterProperty.ZOOKEEPER_URL;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 import static org.mockito.Mockito.mock;
 
 /**
@@ -48,7 +44,7 @@
   private StellarInterpreter interpreter;
   private InterpreterContext context;
 
-  @Before
+  @BeforeEach
   public void setup() {
     Properties props = new Properties();
     interpreter = new StellarInterpreter(props);
diff --git a/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/integration/StellarInterpreterIntegrationTest.java b/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/integration/StellarInterpreterIntegrationTest.java
index b6395eb..e02ad29 100644
--- a/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/integration/StellarInterpreterIntegrationTest.java
+++ b/metron-stellar/stellar-zeppelin/src/test/java/org/apache/metron/stellar/zeppelin/integration/StellarInterpreterIntegrationTest.java
@@ -23,9 +23,9 @@
 import org.apache.metron.stellar.dsl.Context;
 import org.apache.metron.stellar.zeppelin.StellarInterpreter;
 import org.apache.zeppelin.interpreter.InterpreterContext;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.util.HashMap;
 import java.util.Map;
@@ -33,7 +33,7 @@
 import java.util.Properties;
 
 import static org.apache.metron.stellar.zeppelin.StellarInterpreterProperty.ZOOKEEPER_URL;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 
 /**
@@ -48,7 +48,7 @@
   private ZKServerComponent zkServer;
   private ComponentRunner runner;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
 
     // a component that uploads the global configuration
@@ -76,7 +76,7 @@
     context = mock(InterpreterContext.class);
   }
 
-  @After
+  @AfterEach
   public void tearDown() throws Exception {
     runner.stop();
   }
diff --git a/pom.xml b/pom.xml
index 6450331..3f24590 100644
--- a/pom.xml
+++ b/pom.xml
@@ -111,7 +111,8 @@
         <global_elasticsearch_version>5.6.14</global_elasticsearch_version>
         <global_json_simple_version>1.1.1</global_json_simple_version>
         <global_metrics_version>3.0.2</global_metrics_version>
-        <global_junit_version>4.12</global_junit_version>
+        <global_junit_jupiter_version>5.5.2</global_junit_jupiter_version>
+        <global_hamcrest_version>2.2</global_hamcrest_version>
         <global_guava_version>17.0</global_guava_version>
         <global_hbase_guava_version>12.0</global_hbase_guava_version>
         <global_json_schema_validator_version>2.2.5</global_json_schema_validator_version>
@@ -119,13 +120,12 @@
         <global_opencsv_version>3.7</global_opencsv_version>
         <global_java_version>1.8</global_java_version>
         <global_solr_version>6.6.2</global_solr_version>
-        <global_mockito_version>1.10.19</global_mockito_version>
-        <global_powermock_version>1.7.0</global_powermock_version>
+        <global_mockito_version>3.1.0</global_mockito_version>
         <global_shade_version>3.2.0</global_shade_version>
         <global_jackson_version>2.7.4</global_jackson_version>
         <global_errorprone_core_version>2.0.14</global_errorprone_core_version>
         <global_jar_version>3.0.2</global_jar_version>
-        <global_surefire_version>2.18</global_surefire_version>
+        <global_surefire_version>3.0.0-M4</global_surefire_version>
         <global_maven_version>[3.3.1,)</global_maven_version>
         <global_kryo_version>3.0.3</global_kryo_version>
         <global_kryo_serializers_version>0.38</global_kryo_serializers_version>