You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by le...@apache.org on 2019/12/07 15:01:58 UTC

[metron] branch master updated: METRON-2307 Migrate to JUnit5 (justinleet) closes apache/metron#1554

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

leet pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git


The following commit(s) were added to refs/heads/master by this push:
     new b71ddce  METRON-2307 Migrate to JUnit5 (justinleet) closes apache/metron#1554
b71ddce is described below

commit b71ddceeefb4efc677f800c66ca65fae46f4a45a
Author: justinleet <ju...@gmail.com>
AuthorDate: Sat Dec 7 09:54:58 2019 -0500

    METRON-2307 Migrate to JUnit5 (justinleet) closes apache/metron#1554
---
 .travis.yml                                        |   1 +
 dependencies_with_url.csv                          |  12 +-
 .../discovery/ServiceDiscoveryIntegrationTest.java |  37 +-
 .../metron/maas/service/MaasIntegrationTest.java   |  68 +-
 .../maas/service/StellarMaaSIntegrationTest.java   |  49 +-
 metron-analytics/metron-profiler-client/pom.xml    |   3 +-
 .../profiler/client/HBaseProfilerClientTest.java   |  31 +-
 .../metron/profiler/client/ProfileWriter.java      |  13 +-
 .../profiler/client/stellar/GetProfileTest.java    |  77 +-
 .../client/stellar/IntervalPredicateTest.java      |  52 +-
 .../client/stellar/VerboseProfileTest.java         |  84 +-
 .../client/stellar/WindowLookbackTest.java         |  48 +-
 .../client/window/WindowProcessorTest.java         | 122 +--
 metron-analytics/metron-profiler-common/pom.xml    |  22 +-
 .../profiler/DefaultMessageDistributorTest.java    |   8 +-
 .../metron/profiler/DefaultMessageRouterTest.java  |  10 +-
 .../metron/profiler/DefaultProfileBuilderTest.java |  56 +-
 .../metron/profiler/ProfileMeasurementTest.java    |  13 +-
 .../apache/metron/profiler/ProfilePeriodTest.java  |  19 +-
 .../profiler/clock/DefaultClockFactoryTest.java    |  10 +-
 .../metron/profiler/clock/EventTimeClockTest.java  |   6 +-
 .../clock/EventTimeOnlyClockFactoryTest.java       |  16 +-
 .../metron/profiler/clock/WallClockTest.java       |   4 +-
 .../profiler/hbase/SaltyRowKeyBuilderTest.java     |  52 +-
 .../profiler/repl/ProfilerFunctionsTest.java       |  40 +-
 .../profiler/repl/StandAloneProfilerTest.java      |  12 +-
 metron-analytics/metron-profiler-spark/pom.xml     |  12 +
 .../spark/BatchProfilerIntegrationTest.java        |  80 +-
 .../metron/profiler/spark/TimestampParserTest.java |  16 +-
 .../profiler/spark/cli/BatchProfilerCLITest.java   |  30 +-
 .../spark/cli/BatchProfilerZKIntegrationTest.java  |  10 +-
 .../spark/function/GroupByPeriodFunctionTest.java  |  11 +-
 .../spark/function/HBaseWriterFunctionTest.java    |  20 +-
 .../spark/function/MessageRouterFunctionTest.java  |  47 +-
 .../spark/function/ProfileBuilderFunctionTest.java |  40 +-
 .../reader/ColumnEncodedTelemetryReaderTest.java   |  22 +-
 .../function/reader/TelemetryReadersTest.java      |  32 +-
 .../reader/TextEncodedTelemetryReaderTest.java     |  22 +-
 metron-analytics/metron-profiler-storm/pom.xml     |   7 -
 .../apache/metron/hbase/bolt/HBaseBoltTest.java    |  46 +-
 .../storm/FixedFrequencyFlushSignalTest.java       |   9 +-
 .../metron/profiler/storm/HBaseEmitterTest.java    |  19 +-
 .../metron/profiler/storm/KafkaEmitterTest.java    |  30 +-
 .../profiler/storm/ProfileBuilderBoltTest.java     |  18 +-
 .../profiler/storm/ProfileHBaseMapperTest.java     |  20 +-
 .../profiler/storm/ProfileSplitterBoltTest.java    |  22 +-
 .../storm/integration/ConfigUploadComponent.java   |   9 +-
 .../storm/integration/ProfilerIntegrationTest.java |  48 +-
 .../statistics/OnlineStatisticsProvider.java       |   2 +-
 .../apache/metron/statistics/BinFunctionsTest.java |  30 +-
 .../statistics/OnlineStatisticsProviderTest.java   |  52 +-
 .../statistics/StellarStatisticsFunctionsTest.java | 163 ++--
 .../HyperLogLogPlusFunctionsIntegrationTest.java   |  14 +-
 .../HyperLogLogPlusFunctionsTest.java              |  82 +-
 .../statistics/informationtheory/EntropyTest.java  |  11 +-
 .../outlier/MedianAbsoluteDeviationTest.java       |  33 +-
 .../statistics/sampling/SamplerFunctionsTest.java  |  49 +-
 .../statistics/sampling/UniformSamplerTest.java    |  15 +-
 metron-analytics/pom.xml                           |  30 +-
 metron-contrib/metron-performance/pom.xml          |   6 -
 .../metron/performance/load/LoadOptionsTest.java   |  52 +-
 .../metron/performance/load/SendToKafkaTest.java   |   9 +-
 .../metron/performance/sampler/SamplerTest.java    |  48 +-
 metron-contrib/pom.xml                             |  16 +-
 metron-interface/metron-rest/pom.xml               |  35 +-
 .../org/apache/metron/rest/config/HBaseConfig.java |   7 +-
 .../apache/metron/rest/config/HadoopConfig.java    |  14 +-
 .../rest/config/KnoxSSOAuthenticationFilter.java   |  23 +-
 .../metron/rest/config/RestTemplateConfig.java     |   7 +-
 .../rest/service/impl/DockerStormCLIWrapper.java   |   3 +-
 .../metron/rest/service/impl/HdfsServiceImpl.java  |  19 +-
 .../metron/rest/MetronRestApplicationTest.java     |  42 -
 .../apache/metron/rest/config/HBaseConfigTest.java |  46 +-
 .../metron/rest/config/HadoopConfigTest.java       |  49 +-
 .../apache/metron/rest/config/KafkaConfigTest.java |  25 +-
 .../config/KnoxSSOAuthenticationFilterTest.java    | 102 +--
 .../rest/config/MetronAuthoritiesMapperTest.java   |  22 +-
 .../metron/rest/config/RestTemplateConfigTest.java |  44 +-
 .../AlertsUIControllerIntegrationTest.java         |  32 +-
 .../GlobalConfigControllerIntegrationTest.java     |  16 +-
 .../controller/GrokControllerIntegrationTest.java  |  18 +-
 .../controller/HdfsControllerIntegrationTest.java  |  19 +-
 .../controller/KafkaControllerIntegrationTest.java |  34 +-
 .../MetaAlertControllerIntegrationTest.java        |  40 +-
 .../controller/PcapControllerIntegrationTest.java  | 102 ++-
 .../rest/controller/RestExceptionHandlerTest.java  |   8 +-
 .../SearchControllerIntegrationTest.java           |  43 +-
 ...rEnrichmentConfigControllerIntegrationTest.java |  12 +-
 ...sorIndexingConfigControllerIntegrationTest.java |  37 +-
 ...ensorParserConfigControllerIntegrationTest.java |  28 +-
 ...SensorParserGroupControllerIntegrationTest.java |  52 +-
 .../StellarControllerIntegrationTest.java          |  16 +-
 .../controller/StormControllerIntegrationTest.java |  24 +-
 .../UpdateControllerIntegrationTest.java           |  26 +-
 .../controller/UserControllerIntegrationTest.java  |  14 +-
 .../rest/service/impl/AlertsUIServiceImplTest.java |  35 +-
 .../impl/CachedStormStatusServiceImplTest.java     |  24 +-
 .../service/impl/DockerStormCLIWrapperTest.java    |  40 +-
 .../service/impl/GlobalConfigServiceImplTest.java  |  48 +-
 .../rest/service/impl/GrokServiceImplTest.java     |  70 +-
 .../service/impl/HdfsServiceImplExceptionTest.java |  81 +-
 .../rest/service/impl/HdfsServiceImplTest.java     |  19 +-
 .../rest/service/impl/KafkaServiceImplTest.java    |  99 +--
 .../rest/service/impl/PcapServiceImplTest.java     | 254 +++---
 .../rest/service/impl/SearchServiceImplTest.java   |  41 +-
 .../SensorEnrichmentConfigServiceImplTest.java     |  41 +-
 .../impl/SensorIndexingConfigServiceImplTest.java  |  70 +-
 .../impl/SensorParserConfigServiceImplTest.java    |  81 +-
 .../impl/SensorParserGroupServiceImplTest.java     |  56 +-
 .../rest/service/impl/StellarServiceImplTest.java  |  10 +-
 .../service/impl/StormAdminServiceImplTest.java    |  23 +-
 .../rest/service/impl/StormCLIWrapperTest.java     |  90 +--
 .../service/impl/StormStatusServiceImplTest.java   |  16 +-
 .../metron/rest/user/UserSettingsClientTest.java   |  37 +-
 .../org.mockito.plugins.MockMaker                  |   1 +
 metron-interface/pom.xml                           |   6 -
 .../metron-common-storm/pom.xml                    |  11 +
 .../storm/common/bolt/BaseConfiguredBoltTest.java  |   7 +-
 .../common/bolt/ConfiguredEnrichmentBoltTest.java  |  44 +-
 .../common/bolt/ConfiguredParserBoltTest.java      |  49 +-
 .../storm/common/message/MessageGettersTest.java   |  15 +-
 .../message/metadata/RawMessageUtilTest.java       | 122 +--
 .../metron/storm/common/utils/ErrorUtilsTest.java  |  19 +-
 metron-platform/metron-common/pom.xml              |  18 +
 .../org/apache/metron/common/AggregatorsTest.java  |  31 +-
 .../cli/ConfigurationManagerIntegrationTest.java   | 126 +--
 .../common/configuration/ConfigOptionTest.java     |  11 +-
 .../common/configuration/ConfigurationTest.java    |  18 +-
 .../common/configuration/ConfigurationsTest.java   |  13 +-
 .../configuration/ConfigurationsUtilsTest.java     |  41 +-
 .../common/configuration/EnrichmentConfigTest.java |  12 +-
 .../configuration/IndexingConfigurationsTest.java  |  10 +-
 .../configuration/ParserConfigurationsTest.java    |  11 +-
 .../configuration/SensorEnrichmentConfigTest.java  |  20 +-
 .../SensorEnrichmentUpdateConfigTest.java          | 230 ++++--
 .../configuration/SensorParserConfigTest.java      |   9 +-
 .../configuration/StellarEnrichmentConfigTest.java |  85 +-
 .../threatintel/ThreatTriageConfigTest.java        |   6 +-
 .../configuration/profiler/ProfileConfigTest.java  |  29 +-
 .../configuration/profiler/ProfilerConfigTest.java |  10 +-
 .../writer/ConfigurationsStrategiesTest.java       |  23 +-
 .../writer/EnrichmentWriterConfigurationTest.java  |  13 +-
 .../writer/IndexingWriterConfigurationTest.java    |  17 +-
 .../writer/ParserWriterConfigurationTest.java      |  17 +-
 .../writer/ProfilerWriterConfigurationTest.java    |  13 +-
 .../metron/common/error/MetronErrorTest.java       |  12 +-
 .../common/field/DeDotFieldNameConverterTest.java  |   4 +-
 .../common/field/FieldNameConvertersTest.java      |   4 +-
 .../transformation/FieldTransformationTest.java    |  25 +-
 .../RegexSelectTransformationTest.java             |  26 +-
 .../transformation/RemoveTransformationTest.java   |  20 +-
 .../transformation/RenameTransformationTest.java   |  24 +-
 .../transformation/SelectTransformationTest.java   |  36 +-
 .../transformation/StellarTransformationTest.java  | 184 ++---
 .../field/validation/QueryValidationTest.java      |  31 +-
 .../common/field/validation/ValidationTest.java    |  25 +-
 .../validation/network/DomainValidationTest.java   |  41 +-
 .../validation/network/EmailValidationTest.java    |  45 +-
 .../field/validation/network/IPValidationTest.java |  33 +-
 .../validation/network/URLValidationTest.java      |  41 +-
 .../validation/primitive/DateValidationTest.java   |  37 +-
 .../primitive/IntegerValidationTest.java           |  41 +-
 .../primitive/NotEmptyValidationTest.java          |  25 +-
 .../validation/primitive/RegexValidationTest.java  |  24 +-
 .../common/performance/PerformanceLoggerTest.java  |  51 +-
 .../metron/common/performance/TimingTest.java      |  10 +-
 .../org/apache/metron/common/system/ClockTest.java |   9 +-
 .../typosquat/TyposquattingStrategiesTest.java     |  51 +-
 .../metron/common/utils/CompressionUtilsTest.java  |  13 +-
 .../apache/metron/common/utils/HDFSUtilsTest.java  |  15 +-
 .../apache/metron/common/utils/HashUtilsTest.java  |   4 +-
 .../apache/metron/common/utils/JSONUtilsTest.java  |  16 +-
 .../apache/metron/common/utils/KafkaUtilsTest.java |  74 +-
 .../metron/common/utils/LazyLoggerImplTest.java    |   8 +-
 .../common/utils/LazzyLoggerImplPerfTest.java      |  14 +-
 .../metron/common/utils/RuntimeErrorsTest.java     |  63 +-
 .../apache/metron/common/utils/SerDeUtilsTest.java |   9 +-
 .../common/utils/file/ReaderSpliteratorTest.java   |  38 +-
 .../ZKConfigurationsCacheIntegrationTest.java      |  62 +-
 metron-platform/metron-data-management/pom.xml     |  34 +-
 .../metron/dataloads/bulk/HDFSDataPrunerTest.java  |  69 +-
 .../extractor/ExtractorDecoratorTest.java          |  14 +-
 .../metron/dataloads/extractor/ExtractorTest.java  |  19 +-
 .../TransformFilterExtractorDecoratorTest.java     |  41 +-
 .../dataloads/extractor/csv/CSVExtractorTest.java  |  35 +-
 .../extractor/stix/StixExtractorTest.java          |  35 +-
 .../dataloads/extractor/stix/URIHandlerTest.java   |  14 +-
 .../hbase/HBaseEnrichmentConverterTest.java        |  20 +-
 .../dataloads/hbase/mr/BulkLoadMapperTest.java     |  20 +-
 .../mr/LeastRecentlyUsedPrunerIntegrationTest.java |  52 +-
 ...pleEnrichmentFlatFileLoaderIntegrationTest.java | 151 ++--
 .../flatfile/SimpleFlatFileSummarizerTest.java     |  22 +-
 .../nonbulk/geo/MaxmindDbEnrichmentLoaderTest.java |  45 +-
 .../nonbulk/taxii/TaxiiIntegrationTest.java        |  35 +-
 .../metron-elasticsearch-common/pom.xml            |   9 +-
 .../elasticsearch/writer/ElasticsearchWriter.java  |  14 +-
 .../bulk/ElasticsearchBulkDocumentWriterTest.java  |  12 +-
 .../bulk/ElasticsearchImportExportTest.java        |  15 +-
 .../dao/ElasticsearchColumnMetadataDaoTest.java    |  17 +-
 .../elasticsearch/dao/ElasticsearchDaoTest.java    |  34 +-
 .../dao/ElasticsearchMetaAlertDaoTest.java         |  48 +-
 .../dao/ElasticsearchRequestSubmitterTest.java     |  13 +-
 .../dao/ElasticsearchUpdateDaoTest.java            |   4 +-
 ...ticsearchBulkDocumentWriterIntegrationTest.java |  42 +-
 .../ElasticsearchMetaAlertIntegrationTest.java     |  72 +-
 .../ElasticsearchSearchIntegrationTest.java        | 136 ++--
 .../ElasticsearchUpdateIntegrationTest.java        |  27 +-
 .../writer/ElasticsearchWriterTest.java            |  44 +-
 .../metron-enrichment-common/pom.xml               |   6 +
 .../enrichment/stellar/EnrichmentObjectGet.java    |   6 +
 .../metron/enrichment/stellar/ObjectGet.java       |  10 +
 .../adapters/host/HostFromJSONListAdapterTest.java |  29 +-
 .../host/HostFromPropertiesFileAdapterTest.java    |  24 +-
 .../enrichment/adapters/jdbc/MySqlConfigTest.java  |  13 +-
 .../maxmind/asn/GeoLiteAsnDatabaseTest.java        |  62 +-
 .../adapters/maxmind/geo/GeoAdapterTest.java       |  20 +-
 .../maxmind/geo/GeoLiteCityDatabaseTest.java       |  66 +-
 .../simplehbase/SimpleHBaseAdapterTest.java        |  35 +-
 .../simplehbase/SimpleHBaseConfigTest.java         |   9 +-
 .../adapters/stellar/StellarAdapterTest.java       |  74 +-
 .../threatintel/ThreatIntelAdapterTest.java        |  31 +-
 .../threatintel/ThreatIntelConfigTest.java         |  17 +-
 .../metron/enrichment/cache/ObjectCacheTest.java   |  37 +-
 .../converter/EnrichmentConverterTest.java         |  11 +-
 .../enrichment/parallel/ParallelEnricherTest.java  |  98 ++-
 .../stellar/AsnEnrichmentFunctionsTest.java        |  66 +-
 .../EnrichmentObjectGetIntegrationTest.java        |  20 +-
 .../stellar/EnrichmentObjectGetTest.java           |  72 +-
 .../stellar/GeoEnrichmentFunctionsTest.java        |  53 +-
 .../enrichment/stellar/GeoHashFunctionsTest.java   | 109 +--
 .../stellar/ObjectGetIntegrationTest.java          |  20 +-
 .../metron/enrichment/stellar/ObjectGetTest.java   |  55 +-
 .../SimpleHBaseEnrichmentFunctionsTest.java        |  52 +-
 .../threatintel/triage/ThreatTriageTest.java       | 221 +++---
 .../metron-enrichment-storm/pom.xml                |   5 +
 .../enrichment/bolt/GenericEnrichmentBoltTest.java |  51 +-
 .../integration/EnrichmentIntegrationTest.java     | 125 +--
 .../EnrichmentCoprocessorIntegrationTest.java      |  30 +-
 .../coprocessor/EnrichmentCoprocessorTest.java     |  58 +-
 .../metron-hbase/metron-hbase-common/pom.xml       |   3 +-
 .../metron/hbase/client/HBaseClientTest.java       |  76 +-
 .../metron-indexing/metron-indexing-common/pom.xml |   3 +-
 .../lucene/AbstractLuceneMetaAlertUpdateDao.java   |   2 +-
 .../metron/indexing/dao/search/SortField.java      |   7 +
 .../apache/metron/indexing/dao/HBaseDaoTest.java   |   4 +-
 .../metron/indexing/dao/MultiIndexDaoTest.java     |  75 +-
 .../metron/indexing/dao/SearchIntegrationTest.java | 429 +++++-----
 .../apache/metron/indexing/dao/UpdateDaoTest.java  |  33 +-
 .../metron/indexing/dao/UpdateIntegrationTest.java |  66 +-
 .../dao/metaalert/MetaAlertIntegrationTest.java    | 226 +++---
 .../indexing/dao/metaalert/MetaScoresTest.java     |   8 +-
 .../AbstractLuceneMetaAlertUpdateDaoTest.java      | 105 +--
 .../metron/indexing/dao/update/PatchUtilsTest.java |  70 +-
 .../integration/HBaseDaoIntegrationTest.java       |  66 +-
 .../indexing/util/IndexingCacheUtilTest.java       |   8 +-
 .../integration/IndexingIntegrationTest.java       |  39 +-
 metron-platform/metron-integration-test/pom.xml    |  14 +-
 .../StellarClasspathFunctionResolver.java          |  26 +-
 .../components/FluxTopologyComponent.java          |  33 +-
 metron-platform/metron-job/pom.xml                 |  17 +
 .../java/org/apache/metron/job/JobStatusTest.java  |   8 +-
 .../metron/job/manager/InMemoryJobManagerTest.java |  37 +-
 metron-platform/metron-management/pom.xml          |   6 +
 .../management/ConfigurationFunctionsTest.java     |  79 +-
 .../management/EnrichmentConfigFunctionsTest.java  | 125 +--
 .../metron/management/FileSystemFunctionsTest.java | 132 ++--
 .../metron/management/GrokFunctionsTest.java       |  28 +-
 .../management/IndexingConfigFunctionsTest.java    |  38 +-
 .../management/KafkaFunctionsIntegrationTest.java  | 123 ++-
 .../management/ParserConfigFunctionsTest.java      |  43 +-
 .../metron/management/ParserFunctionsTest.java     | 103 ++-
 .../metron/management/StellarParserRunnerTest.java |  50 +-
 .../management/ThreatTriageFunctionsTest.java      | 159 ++--
 .../metron-parsing/metron-parsers-common/pom.xml   |  24 +-
 .../apache/metron/parsers/ParserRunnerImpl.java    |  26 +-
 .../org/apache/metron/filters/FiltersTest.java     |  15 +-
 .../org/apache/metron/parsers/BasicParserTest.java |  36 +-
 .../org/apache/metron/parsers/GrokParserTest.java  |  39 +-
 .../apache/metron/parsers/MessageParserTest.java   |  52 +-
 .../metron/parsers/MultiLineGrokParserTest.java    |  36 +-
 .../parsers/MultiLineWithErrorsGrokParserTest.java |  34 +-
 .../metron/parsers/ParserRunnerImplTest.java       | 155 ++--
 .../apache/metron/parsers/csv/CSVParserTest.java   |  72 +-
 .../EnvelopedParserIntegrationTest.java            |  54 +-
 .../parsers/integration/ParserIntegrationTest.java |  20 +-
 .../validation/SampleDataValidation.java           |   7 +-
 .../parsers/json/JSONMapParserQueryTest.java       | 161 ++--
 .../metron/parsers/json/JSONMapParserTest.java     |  85 +-
 .../json/JSONMapParserWrappedQueryTest.java        | 107 +--
 .../regex/RegularExpressionsParserTest.java        |  73 +-
 .../parsers/syslog/Syslog3164ParserTest.java       |  23 +-
 .../parsers/syslog/Syslog5424ParserTest.java       |  48 +-
 .../metron/parsers/utils/SyslogUtilsTest.java      |   4 +-
 .../org/apache/metron/filters/FiltersTest.java     |  13 +-
 .../org/apache/metron/parsers/SnortParserTest.java |  99 ++-
 .../metron/parsers/asa/BasicAsaParserTest.java     |  81 +-
 .../metron/parsers/bro/BasicBroParserTest.java     | 877 +++++++++++----------
 .../apache/metron/parsers/cef/CEFParserTest.java   | 109 ++-
 .../parsers/fireeye/BasicFireEyeParserTest.java    |  33 +-
 .../metron/parsers/ise/BasicIseParserTest.java     |  28 +-
 .../parsers/lancope/BasicLancopeParserTest.java    |  30 +-
 .../apache/metron/parsers/leef/LEEFParserTest.java | 199 +++--
 .../paloalto/BasicPaloAltoFirewallParserTest.java  |  57 +-
 .../sourcefire/BasicSourcefireParserTest.java      |  27 +-
 .../parsers/websphere/GrokWebSphereParserTest.java |  68 +-
 .../metron-parsing/metron-parsing-storm/pom.xml    |   6 +
 .../apache/metron/parsers/bolt/ParserBoltTest.java |  76 +-
 .../apache/metron/parsers/bolt/WriterBoltTest.java |  22 +-
 .../integration/StormParserIntegrationTest.java    |  24 +-
 .../integration/validation/StormParserDriver.java  |   1 -
 .../topology/ParserTopologyBuilderTest.java        |  85 +-
 .../parsers/topology/ParserTopologyCLITest.java    |  67 +-
 ...SimpleHbaseEnrichmentWriterIntegrationTest.java |  38 +-
 .../StormEnvelopedParserIntegrationTest.java       |   2 +-
 .../integration/WriterBoltIntegrationTest.java     |  61 +-
 metron-platform/metron-pcap-backend/pom.xml        |  19 +-
 .../integration/PcapTopologyIntegrationTest.java   | 150 ++--
 .../org/apache/metron/pcap/query/PcapCliTest.java  |  45 +-
 .../pcap/deserializer/FromKeyDeserializerTest.java |  17 +-
 metron-platform/metron-pcap/pom.xml                |  17 +
 .../apache/metron/pcap/PcapFilenameHelperTest.java |   6 +-
 .../org/apache/metron/pcap/PcapHelperTest.java     |  31 +-
 .../metron/pcap/PcapPackerComparatorTest.java      |  37 +-
 .../java/org/apache/metron/pcap/PcapPagesTest.java |   4 +-
 .../apache/metron/pcap/filter/PcapFiltersTest.java |  10 +-
 .../pcap/filter/fixed/FixedPcapFilterTest.java     |  65 +-
 .../pcap/filter/query/QueryPcapFilterTest.java     |  57 +-
 .../apache/metron/pcap/mr/FileFilterUtilTest.java  |  48 +-
 .../metron/pcap/mr/OutputDirFormatterTest.java     |  17 +-
 .../org/apache/metron/pcap/mr/PcapJobTest.java     |  88 +--
 .../pcap/pattern/ByteArrayMatchingUtilTest.java    |  84 +-
 .../apache/metron/pcap/utils/PcapUtilsTest.java    |   7 +-
 .../metron-solr/metron-solr-common/pom.xml         |   3 +-
 .../java/org/apache/metron/solr/dao/SolrDao.java   |  24 +-
 .../metron/solr/client/SolrClientFactoryTest.java  |   4 +-
 .../metron/solr/dao/SolrColumnMetadataTest.java    |  38 +-
 .../org/apache/metron/solr/dao/SolrDaoTest.java    |  75 +-
 .../metron/solr/dao/SolrMetaAlertDaoTest.java      |  75 +-
 .../apache/metron/solr/dao/SolrSearchDaoTest.java  | 126 +--
 .../apache/metron/solr/dao/SolrUpdateDaoTest.java  |  45 +-
 .../apache/metron/solr/dao/SolrUtilitiesTest.java  |   4 +-
 .../integration/SolrMetaAlertIntegrationTest.java  |  71 +-
 .../SolrRetrieveLatestIntegrationTest.java         |  24 +-
 .../integration/SolrSearchIntegrationTest.java     | 116 +--
 .../integration/SolrUpdateIntegrationTest.java     |  33 +-
 .../schema/SchemaValidationIntegrationTest.java    |  16 +-
 .../solr/matcher/ModifiableSolrParamsMatcher.java  |  10 +-
 .../solr/matcher/SolrInputDocumentListMatcher.java |   9 +-
 .../solr/matcher/SolrInputDocumentMatcher.java     |  10 +-
 .../metron/solr/matcher/SolrQueryMatcher.java      |  76 +-
 .../metron/solr/writer/MetronSolrClientTest.java   |  31 +-
 .../apache/metron/solr/writer/SolrWriterTest.java  | 116 ++-
 .../storm/kafka/spout/internal/TimerTest.java      |  10 +-
 .../storm/kafka/flux/SpoutConfigurationTest.java   |  25 +-
 metron-platform/metron-test-utilities/pom.xml      |  13 +-
 .../org/apache/metron/test/bolt/BaseBoltTest.java  |  24 +-
 .../metron/test/bolt/BaseEnrichmentBoltTest.java   |   4 +-
 .../org/apache/metron/test/bolt/PrintingBolt.java  |   4 +-
 .../metron/test/error/MetronErrorJSONMatcher.java  |   5 +-
 .../test/spouts/GenericInternalTestSpout.java      |   9 +-
 .../org/apache/metron/test/utils/KafkaLoader.java  |   7 +-
 .../apache/metron/test/utils/UnitTestHelper.java   |  16 +-
 .../apache/metron/test/utils/ValidationUtils.java  |  15 +-
 .../apache/metron/writer/BatchSizePolicyTest.java  |  10 +-
 .../metron/writer/BatchTimeoutPolicyTest.java      |   8 +-
 .../metron/writer/BulkWriterComponentTest.java     |  39 +-
 .../org/apache/metron/writer/NoopWriterTest.java   |  16 +-
 .../hbase/SimpleHBaseEnrichmentWriterTest.java     | 127 ++-
 .../metron/writer/kafka/KafkaWriterTest.java       |  31 +-
 .../metron-writer/metron-writer-storm/pom.xml      |   6 +
 .../apache/metron/writer/AckTuplesPolicyTest.java  |  36 +-
 .../metron/writer/bolt/BatchTimeoutHelperTest.java |   4 +-
 .../writer/bolt/BulkMessageWriterBoltTest.java     |  29 +-
 .../writer/hdfs/ClonedSyncPolicyCreatorTest.java   |  12 +-
 .../apache/metron/writer/hdfs/HdfsWriterTest.java  | 114 +--
 .../hdfs/PathExtensionFileNameFormatTest.java      |   9 +-
 .../metron/writer/hdfs/SourceHandlerTest.java      |  22 +-
 metron-platform/pom.xml                            |  18 +-
 metron-stellar/pom.xml                             |  21 +-
 metron-stellar/stellar-common/pom.xml              |  24 +-
 .../stellar/common/BaseStellarProcessorTest.java   |  37 +-
 .../common/CachingStellarProcessorTest.java        |  12 +-
 .../common/DefaultStellarStatefulExecutorTest.java |  19 +-
 .../stellar/common/StellarArithmeticTest.java      |  82 +-
 .../stellar/common/StellarAssignmentTest.java      |  26 +-
 ...tellarComparisonExpressionWithOperatorTest.java |  42 +-
 .../metron/stellar/common/StellarCompilerTest.java | 112 ++-
 .../common/StellarPredicateProcessorTest.java      |  16 +-
 .../stellar/common/encoding/EncodingsTest.java     |  86 +-
 .../common/evaluators/ArithmeticEvaluatorTest.java |  73 +-
 ...parisonExpressionWithOperatorEvaluatorTest.java |  45 +-
 .../ComparisonOperatorsEvaluatorTest.java          |  65 +-
 .../evaluators/DoubleLiteralEvaluatorTest.java     |  32 +-
 .../evaluators/EqualityOperatorsEvaluatorTest.java |  32 +-
 .../evaluators/FloatLiteralEvaluatorTest.java      |  37 +-
 .../common/evaluators/IntLiteralEvaluatorTest.java |  37 +-
 .../evaluators/LongLiteralEvaluatorTest.java       |  42 +-
 .../evaluators/NumberLiteralEvaluatorTest.java     |  45 +-
 .../common/network/NetworkFunctionsTest.java       |   3 +-
 .../shell/DefaultStellarAutoCompleterTest.java     |  15 +-
 .../shell/DefaultStellarShellExecutorTest.java     |  17 +-
 .../stellar/common/shell/StellarResultTest.java    |   7 +-
 .../cli/StellarShellOptionsValidatorTest.java      | 159 ++--
 .../stellar/common/shell/cli/StellarShellTest.java |  16 +-
 .../shell/specials/AssignmentCommandTest.java      |  17 +-
 .../stellar/common/shell/specials/CommentTest.java |  14 +-
 .../common/shell/specials/DocCommandTest.java      |   8 +-
 .../shell/specials/MagicDefineGlobalTest.java      |  14 +-
 .../shell/specials/MagicListFunctionsTest.java     |  14 +-
 .../shell/specials/MagicListGlobalsTest.java       |  14 +-
 .../shell/specials/MagicListVariablesTest.java     |  14 +-
 .../shell/specials/MagicUndefineGlobalTest.java    |  14 +-
 .../metron/stellar/common/system/ClockTest.java    |   4 +-
 .../stellar/common/utils/BloomFilterTest.java      |  24 +-
 .../metron/stellar/common/utils/ConcatMapTest.java |  11 +-
 .../stellar/common/utils/ConversionUtilsTest.java  |  13 +-
 .../metron/stellar/common/utils/JSONUtilsTest.java |  16 +-
 .../stellar/common/utils/SerDeUtilsTest.java       |   9 +-
 .../stellar/common/utils/UnitTestHelper.java       |   6 +-
 .../common/utils/hashing/DefaultHasherTest.java    |   6 +-
 .../stellar/dsl/functions/BasicStellarTest.java    | 644 ++++++++-------
 .../dsl/functions/ConversionFunctionsTest.java     |  17 +-
 .../dsl/functions/DataStructureFunctionsTest.java  |  44 +-
 .../stellar/dsl/functions/DateFunctionsTest.java   |  48 +-
 .../dsl/functions/EncodingFunctionsTest.java       | 109 ++-
 .../dsl/functions/FunctionalFunctionsTest.java     | 153 ++--
 .../stellar/dsl/functions/HashFunctionsTest.java   | 101 ++-
 .../metron/stellar/dsl/functions/MatchTest.java    | 140 ++--
 .../stellar/dsl/functions/MathFunctionsTest.java   |  34 +-
 .../dsl/functions/OrdinalFunctionsTest.java        | 114 ++-
 .../stellar/dsl/functions/RegExFunctionsTest.java  |  68 +-
 .../functions/RestFunctionsIntegrationTest.java    | 101 ++-
 .../stellar/dsl/functions/RestFunctionsTest.java   |  33 +-
 .../stellar/dsl/functions/SetFunctionsTest.java    | 311 ++++----
 .../stellar/dsl/functions/ShellFunctionsTest.java  |  38 +-
 .../stellar/dsl/functions/StringFunctionsTest.java | 376 +++++----
 .../stellar/dsl/functions/SystemFunctionsTest.java |   4 +-
 .../stellar/dsl/functions/TextFunctionsTest.java   |  84 +-
 .../resolver/BaseFunctionResolverTest.java         |  31 +-
 .../resolver/ClasspathFunctionResolverTest.java    |  32 +-
 .../resolver/SimpleFunctionResolverTest.java       |  26 +-
 .../org.mockito.plugins.MockMaker                  |   1 +
 metron-stellar/stellar-zeppelin/pom.xml            |  15 +-
 .../zeppelin/StellarInterpreterPropertyTest.java   |   4 +-
 .../stellar/zeppelin/StellarInterpreterTest.java   |  12 +-
 .../StellarInterpreterIntegrationTest.java         |  12 +-
 pom.xml                                            |   8 +-
 447 files changed, 9644 insertions(+), 10623 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index a0d8d13..78cc5f7 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -60,6 +60,7 @@ matrix:
 
     - 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.2.2:compile,CDDL,https://jaxb.dev.java.net/
 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.jruby.joni:joni:jar:2.1.2:compile,MIT License,https://github.com/jruby/joni
 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 @@ org.elasticsearch:securesm:jar:1.2:compile
 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.curator.x.discovery.ServiceType;
 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 @@ public class ServiceDiscoveryIntegrationTest {
     //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.CuratorFramework;
 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.hadoop.yarn.conf.YarnConfiguration;
 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 @@ public class MaasIntegrationTest {
   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 @@ public class MaasIntegrationTest {
     client.start();
   }
 
-  @AfterClass
+  @AfterAll
   public static void tearDownAfterClass(){
     if(client != null){
       client.close();
@@ -98,17 +100,19 @@ public class MaasIntegrationTest {
     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 @@ public class MaasIntegrationTest {
     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 @@ public class MaasIntegrationTest {
         break;
       }
     }
-    Assert.assertTrue(errorMessage, verified);
+    assertTrue(verified, errorMessage);
     FileSystem fs = FileSystem.get(conf);
     try {
       new ModelSubmission().execute(FileSystem.get(conf)
@@ -234,13 +238,13 @@ public class MaasIntegrationTest {
           }
           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 @@ public class MaasIntegrationTest {
           }
           Thread.sleep(2000);
         }
-        Assert.assertTrue(passed);
+        assertTrue(passed);
       }
     }
     finally {
@@ -336,10 +340,8 @@ public class MaasIntegrationTest {
       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 @@ public class MaasIntegrationTest {
         break;
       }
     }
-    Assert.assertTrue(currentContainerLogFileIndex != -1);
+    assertTrue(currentContainerLogFileIndex != -1);
     File[] containerFiles =
             listOfFiles[currentContainerLogFileIndex].listFiles();
 
@@ -417,7 +419,7 @@ public class MaasIntegrationTest {
                 }
               } 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 @@ public class MaasIntegrationTest {
              */
             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.utils.CloseableUtils;
 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.Map;
 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 @@ public class StellarMaaSIntegrationTest {
   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 @@ public class StellarMaaSIntegrationTest {
   }
 
   @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 @@ public class StellarMaaSIntegrationTest {
     {
       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.SaltyRowKeyBuilder;
 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 @@ public class HBaseProfilerClientTest {
   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 @@ public class HBaseProfilerClientTest {
         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 @@ public class HBaseProfilerClientTest {
   }
 
   @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 @@ public class HBaseProfilerClientTest {
   }
 
   @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.RowKeyBuilder;
 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 @@ public class ProfileWriter {
     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.Context;
 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 @@ public class GetProfileTest {
    * 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 @@ public class GetProfileTest {
    * 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 @@ public class GetProfileTest {
     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 @@ public class GetProfileTest {
     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 @@ public class GetProfileTest {
     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 @@ public class GetProfileTest {
 
     // 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 @@ public class GetProfileTest {
     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 @@ public class GetProfileTest {
     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 @@ public class GetProfileTest {
 
       // 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 @@ public class GetProfileTest {
     // 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 @@ public class GetProfileTest {
     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 @@ public class GetProfileTest {
     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 @@ public class GetProfileTest {
     // 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 @@ public class GetProfileTest {
     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 @@ public class GetProfileTest {
     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 @@ public class IntervalPredicateTest {
       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 @@ public class IntervalPredicateTest {
       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 @@ public class IntervalPredicateTest {
       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 @@ public class IntervalPredicateTest {
       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.DefaultStellarStatefulExecutor;
 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 @@ public class VerboseProfileTest {
 
   private Map<String, Object> globals;
 
-  @Before
+  @BeforeEach
   public void setup() {
     state = new HashMap<>();
     final Table table = MockHBaseTableProvider.addToCache(tableName, columnFamily);
@@ -128,15 +114,15 @@ public class VerboseProfileTest {
     // 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 @@ public class VerboseProfileTest {
     // 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 @@ public class VerboseProfileTest {
     // 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 @@ public class VerboseProfileTest {
     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 @@ public class WindowLookbackTest {
   }
 
   @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 @@ public class WindowLookbackTest {
     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 @@ public class WindowLookbackTest {
                                                                     , 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 @@ public class WindowLookbackTest {
                                                                     );
     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.Date;
 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 @@ public class WindowProcessorTest {
       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 @@ public class WindowProcessorTest {
      */
       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 @@ public class WindowProcessorTest {
      */
       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 @@ public class WindowProcessorTest {
      */
     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 @@ public class WindowProcessorTest {
       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 @@ public class WindowProcessorTest {
       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 @@ public class WindowProcessorTest {
      */
       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 @@ public class WindowProcessorTest {
     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 @@ public class WindowProcessorTest {
 
       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 @@ public class WindowProcessorTest {
       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 @@ public class WindowProcessorTest {
     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 @@ public class WindowProcessorTest {
       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 @@ public class WindowProcessorTest {
       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.common.utils.JSONUtils;
 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 @@ public class DefaultMessageDistributorTest {
   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.common.utils.JSONUtils;
 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 @@ public class DefaultMessageRouterTest {
     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 @@ public class DefaultMessageRouterTest {
    */
   @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.common.utils.JSONUtils;
 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 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @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 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String testInitProfile;
+  private static String testInitProfile;
 
   /**
    * Ensure that the 'init' block is executed correctly.
@@ -141,7 +139,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @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 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String testResultProfile;
+  private static String testResultProfile;
 
   /**
    * Ensure that the result expression is executed on a flush.
@@ -264,7 +262,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String testGroupByProfile;
+  private static String testGroupByProfile;
 
   /**
    * Ensure that the 'groupBy' expression is executed correctly.
@@ -303,7 +301,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @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 @@ public class DefaultProfileBuilderTest {
 
     // 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 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String testFlushProfile;
+  private static String testFlushProfile;
 
   @Test
   public void testFlushDoesNotClearsState() throws Exception {
@@ -409,7 +407,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String testFlushProfileWithNaiveInit;
+  private static String testFlushProfileWithNaiveInit;
 
   @Test
   public void testFlushDoesNotClearsStateButInitDoes() throws Exception {
@@ -456,7 +454,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String testEntityProfile;
+  private static String testEntityProfile;
 
   /**
    * Ensure that the entity is correctly set on the resulting profile measurements.
@@ -497,7 +495,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String testResultWithProfileExpression;
+  private static String testResultWithProfileExpression;
 
   /**
    * Ensure that the result expression is executed on a flush.
@@ -541,7 +539,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String testResultWithTriageExpression;
+  private static String testResultWithTriageExpression;
 
   /**
    * Ensure that the result expression is executed on a flush.
@@ -581,7 +579,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String badInitProfile;
+  private static String badInitProfile;
 
   @Test
   public void testBadInitExpression() throws Exception {
@@ -612,7 +610,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String badSimpleResultProfile;
+  private static String badSimpleResultProfile;
 
   @Test
   public void testBadResultExpression() throws Exception {
@@ -643,7 +641,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String badGroupByProfile;
+  private static String badGroupByProfile;
 
   @Test
   public void testBadGroupByExpression() throws Exception {
@@ -678,7 +676,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String badResultProfile;
+  private static String badResultProfile;
 
   @Test
   public void testBadResultProfileExpression() throws Exception {
@@ -713,7 +711,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @Multiline
-  private String badResultTriage;
+  private static String badResultTriage;
 
   @Test
   public void testBadResultTriageExpression() throws Exception {
@@ -743,7 +741,7 @@ public class DefaultProfileBuilderTest {
    * }
    */
   @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.Input;
 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.io.ObjectOutputStream;
 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 @@ public class ProfileMeasurementTest {
   private ProfileConfig definition;
   private ProfileMeasurement measurement;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     definition = ProfileConfig.fromJSON(profile);
     measurement = new ProfileMeasurement()
@@ -78,7 +75,7 @@ public class ProfileMeasurementTest {
    * 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 @@ package org.apache.metron.profiler;
 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.io.ObjectOutputStream;
 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 @@ public class ProfilePeriodTest {
     });
   }
 
-  @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 @@ public class ProfilePeriodTest {
    * 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 @@ public class ProfilePeriodTest {
     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 @@ public class DefaultClockFactoryTest {
    */
   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 @@ public class EventTimeOnlyClockFactoryTest {
 
   private EventTimeOnlyClockFactory clockFactory;
 
-  @Before
+  @BeforeEach
   public void setup() {
     clockFactory = new EventTimeOnlyClockFactory();
   }
@@ -51,11 +52,10 @@ public class EventTimeOnlyClockFactoryTest {
     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 @@ public class SaltyRowKeyBuilderTest {
   /**
    * 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 @@ public class SaltyRowKeyBuilderTest {
    * 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 @@ public class SaltyRowKeyBuilderTest {
 
     // 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 @@ public class SaltyRowKeyBuilderTest {
 
     // 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 @@ public class SaltyRowKeyBuilderTest {
 
     // 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 @@ public class SaltyRowKeyBuilderTest {
 
     // 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 @@ public class SaltyRowKeyBuilderTest {
 
     // 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 @@ public class SaltyRowKeyBuilderTest {
       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.ParseException;
 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 java.util.Map;
 
 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 @@ public class ProfilerFunctionsTest {
     return executor.execute(expression, state, clazz);
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     state = new HashMap<>();
 
@@ -144,14 +142,16 @@ public class ProfilerFunctionsTest {
     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 @@ public class ProfilerFunctionsTest {
     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 @@ public class ProfilerFunctionsTest {
     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 @@ public class ProfilerFunctionsTest {
     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.profiler.ProfileMeasurement;
 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 @@ public class StandAloneProfilerTest {
 
   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,6 +19,30 @@
  */
 package org.apache.metron.profiler.spark;
 
+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;
+import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
+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.apache.metron.profiler.spark.BatchProfilerConfig.HBASE_TABLE_PROVIDER;
+import static org.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_BEGIN;
+import static org.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_END;
+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.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_READER;
+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.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;
@@ -28,7 +52,6 @@ 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;
@@ -36,41 +59,20 @@ 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.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;
 
-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;
-import static org.apache.metron.profiler.client.stellar.ProfilerClientConfig.PROFILER_HBASE_TABLE_PROVIDER;
-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.apache.metron.profiler.spark.BatchProfilerConfig.HBASE_TABLE_PROVIDER;
-import static org.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_BEGIN;
-import static org.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_END;
-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.apache.metron.profiler.spark.BatchProfilerConfig.TELEMETRY_INPUT_READER;
-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;
-
 /**
  * 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 @@ public class BatchProfilerIntegrationTest {
   @Rule
   public TemporaryFolder tempFolder = new TemporaryFolder();
 
-  @BeforeClass
+  @BeforeAll
   public static void setupSpark() {
     SparkConf conf = new SparkConf()
             .setMaster("local")
@@ -94,14 +96,14 @@ public class BatchProfilerIntegrationTest {
             .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 @@ public class BatchProfilerIntegrationTest {
   @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 @@ public class BatchProfilerIntegrationTest {
      * 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 @@ public class TimestampParserTest {
     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 @@ package org.apache.metron.profiler.spark.cli;
 
 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 @@ public class BatchProfilerCLITest {
    * 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.adrianwalker.multilinestring.Multiline;
 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 @@ public class BatchProfilerZKIntegrationTest {
       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 @@ public class BatchProfilerZKIntegrationTest {
       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.common.configuration.profiler.ProfileConfig;
 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 @@ public class GroupByPeriodFunctionTest {
     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.hbase.mock.MockHBaseTableProvider;
 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 java.util.concurrent.TimeUnit;
 
 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 @@ public class HBaseWriterFunctionTest {
 
     // 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 @@ public class HBaseWriterFunctionTest {
 
     // 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 @@ public class HBaseWriterFunctionTest {
 
     // 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.adrianwalker.multilinestring.Multiline;
 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 @@ public class MessageRouterFunctionTest {
     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 @@ public class MessageRouterFunctionTest {
 
     // 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 @@ public class MessageRouterFunctionTest {
     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 @@ public class MessageRouterFunctionTest {
 
     // 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 @@ public class MessageRouterFunctionTest {
 
     // 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 @@ public class MessageRouterFunctionTest {
 
     // 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 @@ public class MessageRouterFunctionTest {
 
     // 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 @@ public class MessageRouterFunctionTest {
 
     // 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 @@ public class MessageRouterFunctionTest {
 
     // 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 @@ public class MessageRouterFunctionTest {
 
     // 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.List;
 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 @@ public class ProfileBuilderFunctionTest {
 
     // 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 @@ public class ProfileBuilderFunctionTest {
     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 @@ public class ProfileBuilderFunctionTest {
   @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 @@ public class ProfileBuilderFunctionTest {
 
     // 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 @@ public class ProfileBuilderFunctionTest {
 
     // 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.metron.profiler.spark.reader.TelemetryReaders;
 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 @@ public class ColumnEncodedTelemetryReaderTest {
   private Properties profilerProperties;
   private Properties readerProperties;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupSpark() {
     SparkConf conf = new SparkConf()
             .setMaster("local")
@@ -58,14 +60,14 @@ public class ColumnEncodedTelemetryReaderTest {
             .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 @@ public class ColumnEncodedTelemetryReaderTest {
 
     // 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 @@ public class ColumnEncodedTelemetryReaderTest {
 
     // 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 @@ package org.apache.metron.profiler.spark.function.reader;
 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.SparkConf;
 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 @@ public class TextEncodedTelemetryReaderTest {
   private Properties profilerProperties;
   private Properties readerProperties;
 
-  @BeforeClass
+  @BeforeAll
   public static void setupSpark() {
     SparkConf conf = new SparkConf()
             .setMaster("local")
@@ -59,14 +61,14 @@ public class TextEncodedTelemetryReaderTest {
             .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 @@ public class TextEncodedTelemetryReaderTest {
 
     // 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 @@ public class TextEncodedTelemetryReaderTest {
 
     // 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 @@ public class HBaseBoltTest extends BaseBoltTest {
   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 @@ public class HBaseBoltTest extends BaseBoltTest {
     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 @@ public class HBaseBoltTest extends BaseBoltTest {
    * 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 @@ public class HBaseBoltTest extends BaseBoltTest {
    * 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 @@ public class HBaseBoltTest extends BaseBoltTest {
    * 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 @@ public class HBaseBoltTest extends BaseBoltTest {
    * 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 @@ public class HBaseBoltTest extends BaseBoltTest {
 
     // 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 @@ public class FixedFrequencyFlushSignalTest {
     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.common.utils.JSONUtils;
 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 @@ public class HBaseEmitterTest {
   private ProfileConfig profile;
   private OutputCollector collector;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     emitter = new HBaseEmitter();
     profile = createDefinition(profileDefinition);
@@ -76,7 +71,7 @@ public class HBaseEmitterTest {
    * 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.metron.statistics.OnlineStatisticsProvider;
 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.Collections;
 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 @@ public class KafkaEmitterTest {
   private ProfileConfig profile;
   private OutputCollector collector;
 
-  @Before
+  @BeforeEach
   public void setup() throws Exception {
     kafkaEmitter = new KafkaEmitter();
     profile = createDefinition(profileDefinitionWithTriage);
@@ -86,7 +80,7 @@ public class KafkaEmitterTest {
    * 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 @@ public class KafkaEmitterTest {
    * 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 @@ public class KafkaEmitterTest {
    * 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 @@ public class KafkaEmitterTest {
    * 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 @@ public class KafkaEmitterTest {
    * 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 @@ public class KafkaEmitterTest {
    * 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 @@ public class KafkaEmitterTest {
    * 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.Tuple;
 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.List;
 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 @@ public class ProfileBuilderBoltTest extends BaseBoltTest {
   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.common.configuration.profiler.ProfileResult;
 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 @@ public class ProfileHBaseMapperTest {
   private RowKeyBuilder rowKeyBuilder;
   private ProfileConfig profile;
 
-  @Before
+  @BeforeEach
   public void setup() {
     rowKeyBuilder = mock(RowKeyBuilder.class);
 
@@ -72,22 +72,22 @@ public class ProfileHBaseMapperTest {
    * 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 @@ public class ProfileSplitterBoltTest extends BaseBoltTest {
   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 @@ public class ProfileSplitterBoltTest extends BaseBoltTest {
   /**
    * 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.InMemoryComponent;
 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.metron.stellar.dsl.functions.resolver.SimpleFunctionResolver;
 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 @@ public class ProfilerIntegrationTest extends BaseIntegrationTest {
             .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 @@ public class ProfilerIntegrationTest extends BaseIntegrationTest {
     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 @@ public class ProfilerIntegrationTest extends BaseIntegrationTest {
                     .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 @@ public class OnlineStatisticsProvider implements StatisticsProvider, KryoSeriali
     //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 @@ package org.apache.metron.statistics;
 
 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.GaussianRandomGenerator;
 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 @@ public class OnlineStatisticsProviderTest {
                                                , 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 @@ public class OnlineStatisticsProviderTest {
     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.GaussianRandomGenerator;
 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 @@ public class StellarStatisticsFunctionsTest {
       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 @@ public class StellarStatisticsFunctionsTest {
     return ret;
   }
 
-  @Before
+  @BeforeEach
   public void setup() {
     variables = new HashMap<>();
 
@@ -173,20 +163,20 @@ public class StellarStatisticsFunctionsTest {
     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 @@ public class StellarStatisticsFunctionsTest {
 
   }
 
-  @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 @@ public class StellarStatisticsFunctionsTest {
     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 @@ public class StellarStatisticsFunctionsTest {
     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 @@ public class StellarStatisticsFunctionsTest {
     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 @@ public class StellarStatisticsFunctionsTest {
     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 @@ public class StellarStatisticsFunctionsTest {
     }
   }
 
-  @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 @@ public class StellarStatisticsFunctionsTest {
     }
   }
 
-  @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 @@ public class StellarStatisticsFunctionsTest {
     }
   }
 
-  @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 @@ public class StellarStatisticsFunctionsTest {
    * 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 @@ public class StellarStatisticsFunctionsTest {
     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 @@ public class StellarStatisticsFunctionsTest {
   }
 
   @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 @@ public class StellarStatisticsFunctionsTest {
   }
 
   @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 @@ public class StellarStatisticsFunctionsTest {
   }
 
   @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 @@ package org.apache.metron.statistics.approximation;
 
 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 @@ public class HyperLogLogPlusFunctionsIntegrationTest {
   @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 @@ public class HyperLogLogPlusFunctionsIntegrationTest {
   @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 @@ public class HyperLogLogPlusFunctionsIntegrationTest {
   @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 @@ public class HyperLogLogPlusFunctionsIntegrationTest {
   @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 @@ public class HyperLogLogPlusFunctionsIntegrationTest {
   @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 @@ public class HyperLogLogPlusFunctionsTest {
     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 @@ public class HyperLogLogPlusFunctionsTest {
     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 @@ public class HyperLogLogPlusFunctionsTest {
     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 @@ public class HyperLogLogPlusFunctionsTest {
     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 @@ public class EntropyTest {
       -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.distribution.TDistribution;
 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 @@ public class MedianAbsoluteDeviationTest {
     }
     {
       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 @@ public class MedianAbsoluteDeviationTest {
     }
     {
       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.ImmutableMap;
 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 @@ public class SamplerFunctionsTest {
   }
 
   @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 @@ public class SamplerFunctionsTest {
       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 @@ package org.apache.metron.statistics.sampling;
 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 @@ public class UniformSamplerTest {
   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 @@ public class UniformSamplerTest {
     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 @@ public class UniformSamplerTest {
     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 @@ public class LoadOptionsTest {
     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 @@ public class SendToKafkaTest {
     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 @@ package org.apache.metron.performance.sampler;
 
 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 @@ public class SamplerTest {
     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 class SamplerTest {
   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 class SamplerTest {
   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 @@ public class HBaseConfig {
         } 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 class HadoopConfig {
     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.authentication.UsernamePasswordAuthenticatio
 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.io.IOException;
 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 @@ public class KnoxSSOAuthenticationFilter implements Filter {
       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 @@ public class KnoxSSOAuthenticationFilter implements Filter {
     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 @@ public class KnoxSSOAuthenticationFilter implements Filter {
       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 @@ public class KnoxSSOAuthenticationFilter implements Filter {
     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 @@ public class RestTemplateConfig {
         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 @@ public class DockerStormCLIWrapper extends StormCLIWrapper {
     }
   }
 
-  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 @@ public class HdfsServiceImpl implements HdfsService {
     @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 class HdfsServiceImpl implements HdfsService {
     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 @@ public class HdfsServiceImpl implements HdfsService {
         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 @@ public class HdfsServiceImpl implements HdfsService {
     @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 @@ public class HdfsServiceImpl implements HdfsService {
     @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;
+
+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.*;
 
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({HTableProvider.class, HBaseConfiguration.class, HBaseConfig.class})
 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 @@ public class HBaseConfigTest {
       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 @@ public class HBaseConfigTest {
       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 @@ public class HadoopConfigTest {
 
     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());
+
+    hadoopConfig.configuration();
 
-    verifyStatic();
-    UserGroupInformation.setConfiguration(any(Configuration.class));
-    UserGroupInformation.loginUserFromKeytab("metron keytabLocation", "metron principal");
+    verify(hadoopConfig).setUGIConfiguration(any());
+    verify(hadoopConfig).loginUserFromKeytab("metron keytabLocation", "metron principal");
   }
 
   @Test
@@ -74,9 +61,13 @@ public class HadoopConfigTest {
 
     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 java.util.Map;
 import org.apache.metron.rest.MetronRestConstants;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 import org.springframework.core.env.Environment;
 
+import java.util.Map;
+
+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 @@ public class KafkaConfigTest {
   }
 
   @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.crypto.RSASSAVerifier;
 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.security.interfaces.RSAPublicKey;
 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 @@ public class KnoxSSOAuthenticationFilterTest {
     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 @@ public class KnoxSSOAuthenticationFilterTest {
     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 @@ public class KnoxSSOAuthenticationFilterTest {
     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 @@ public class KnoxSSOAuthenticationFilterTest {
       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 @@ public class KnoxSSOAuthenticationFilterTest {
 
   @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.ArrayList;
 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 @@ public class MetronAuthoritiesMapperTest {
 
     // 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 @@ public class MetronAuthoritiesMapperTest {
 
     // 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 @@ public class MetronAuthoritiesMapperTest {
     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 @@ public class MetronAuthoritiesMapperTest {
 
     // 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");
+
+    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");
 
-    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(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 @@ public class AlertsUIControllerIntegrationTest {
   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 @@ package org.apache.metron.rest.controller;
 
 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.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 GlobalConfigControllerIntegrationTest {
@@ -70,7 +68,7 @@ public class GlobalConfigControllerIntegrationTest {
     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.request.SecurityMock
 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 @@ public class GrokControllerIntegrationTest {
     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 @@ public class HdfsControllerIntegrationTest {
     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.UnableToStartException;
 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 @@ public class KafkaControllerIntegrationTest {
   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 @@ public class KafkaControllerIntegrationTest {
     }
   }
 
-  @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.MetaAlertAddRemoveRequest;
 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 @@ public class MetaAlertControllerIntegrationTest extends DaoControllerTest {
   @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 @@ public class MetaAlertControllerIntegrationTest extends DaoControllerTest {
     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.fixed.FixedPcapFilter;
 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;
-
-@RunWith(SpringRunner.class)
+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 PcapControllerIntegrationTest {
@@ -126,7 +122,7 @@ public class PcapControllerIntegrationTest {
   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 @@ public class PcapControllerIntegrationTest {
             .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 @@ public class PcapControllerIntegrationTest {
             .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 @@ public class PcapControllerIntegrationTest {
             .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 @@ public class RestExceptionHandlerTest {
   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,43 +17,40 @@
  */
 package org.apache.metron.rest.controller;
 
-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.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.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.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;
 
-@RunWith(SpringRunner.class)
+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;
+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 SearchControllerIntegrationTest extends DaoControllerTest {
@@ -99,7 +96,7 @@ public class SearchControllerIntegrationTest extends DaoControllerTest {
   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 @@ public class SearchControllerIntegrationTest extends DaoControllerTest {
     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 @@ package org.apache.metron.rest.controller;
 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.security.test.web.servlet.setup.SecurityMockMv
 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 @@ public class SensorEnrichmentConfigControllerIntegrationTest {
   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 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 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.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 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.*;
+import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
+
+@ExtendWith(SpringExtension.class)
 @SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
 @ActiveProfiles(TEST_PROFILE)
 public class SensorIndexingConfigControllerIntegrationTest {
@@ -70,8 +67,8 @@ public class SensorIndexingConfigControllerIntegrationTest {
   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.common.configuration.SensorParserConfig;
 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 java.util.concurrent.atomic.AtomicInteger;
 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;
-
-@RunWith(SpringRunner.class)
+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 SensorParserConfigControllerIntegrationTest {
@@ -176,8 +172,8 @@ public class SensorParserConfigControllerIntegrationTest {
   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 @@ public class SensorParserConfigControllerIntegrationTest {
 
     {
       //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.integration.utils.TestUtils;
 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 java.util.concurrent.atomic.AtomicInteger;
 
 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;
-
-@RunWith(SpringRunner.class)
+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 SensorParserGroupControllerIntegrationTest {
@@ -119,7 +115,7 @@ public class SensorParserGroupControllerIntegrationTest {
   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 @@ public class SensorParserGroupControllerIntegrationTest {
     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 class SensorParserGroupControllerIntegrationTest {
   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 class SensorParserGroupControllerIntegrationTest {
   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 class SensorParserGroupControllerIntegrationTest {
   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 class SensorParserGroupControllerIntegrationTest {
   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 class SensorParserGroupControllerIntegrationTest {
   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 @@ public class SensorParserGroupControllerIntegrationTest {
 
     {
       //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.request.SecurityMock
 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 @@ public class StellarControllerIntegrationTest {
     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.MetronRestConstants;
 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 java.util.Map;
 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 @@ public class StormControllerIntegrationTest {
 
   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 @@ public class StormControllerIntegrationTest {
     {
       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 @@ public class StormControllerIntegrationTest {
     {
       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.HBaseDao;
 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 @@ public class UpdateControllerIntegrationTest extends DaoControllerTest {
   @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 @@ public class UpdateControllerIntegrationTest extends DaoControllerTest {
 
     // 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 @@ public class UpdateControllerIntegrationTest extends DaoControllerTest {
             .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.request.MockMvcRequestBuilder
 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 @@ public class UserControllerIntegrationTest {
   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 @@ public class AlertsUIServiceImplTest {
   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 @@ public class AlertsUIServiceImplTest {
     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 @@ public class DockerStormCLIWrapperTest {
 
 
     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.RestException;
 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 @@ public class GlobalConfigServiceImplTest {
 
   @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 @@ public class GlobalConfigServiceImplTest {
 
   @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.RestException;
 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 @@ public class GrokServiceImplTest {
   }
 
   @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 @@ public class GrokServiceImplTest {
   }
 
   @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 @@ public class GrokServiceImplTest {
   }
 
   @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 @@ public class GrokServiceImplTest {
   }
 
   @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 @@ public class GrokServiceImplTest {
   }
 
   @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.conf.Configuration;
 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.commons.io.FileUtils;
 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.Collections;
 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 @@ public class HdfsServiceImplTest {
         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.kafka.common.TopicPartition;
 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 @@ public class KafkaServiceImplTest {
   }};
 
   @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 @@ public class KafkaServiceImplTest {
   }
 
   @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 @@ public class KafkaServiceImplTest {
 
     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 @@ public class KafkaServiceImplTest {
 
     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 @@ public class KafkaServiceImplTest {
 
     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 @@ public class KafkaServiceImplTest {
   }
 
   @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 @@ public class KafkaServiceImplTest {
   }
 
   @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 @@ public class KafkaServiceImplTest {
   }
 
   @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 @@ public class KafkaServiceImplTest {
 
     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 @@ public class KafkaServiceImplTest {
     verify(kafkaConsumer, times(2)).position(topicPartition);
     verify(kafkaConsumer).seek(topicPartition, 0);
 
-    verifyZeroInteractions(zkUtils, adminUtils);
+    verifyNoInteractions(zkUtils, adminUtils);
   }
 
   @Test
@@ -314,11 +283,11 @@ public class KafkaServiceImplTest {
 
     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.FileSystem;
 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.RestException;
 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;
 
+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")
-@RunWith(PowerMockRunner.class)
-@PrepareForTest({PcapToPdmlScriptWrapper.class, ProcessBuilder.class})
+//@PrepareForTest({PcapToPdmlScriptWrapper.class, ProcessBuilder.class})
 public class PcapServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
-
   /**
    *<?xml version="1.0" encoding="utf-8"?>
    *<?xml-stylesheet type="text/xsl" href="pdml2html.xsl"?>
@@ -182,8 +154,8 @@ public class PcapServiceImplTest {
   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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
 
   @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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
 
   @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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
     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 @@ public class PcapServiceImplTest {
 
     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.model.AlertsUIUserSettings;
 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 @@ public class SearchServiceImplTest {
   AlertsUIService alertsUIService;
   SearchServiceImpl searchService;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     dao = mock(IndexDao.class);
     environment = mock(Environment.class);
@@ -157,14 +144,12 @@ public class SearchServiceImplTest {
 
   @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.RestException;
 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 @@ public class SensorEnrichmentConfigServiceImplTest {
   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 @@ public class SensorEnrichmentConfigServiceImplTest {
 
   @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 @@ public class SensorEnrichmentConfigServiceImplTest {
     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 @@ public class SensorEnrichmentConfigServiceImplTest {
     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 @@ public class SensorEnrichmentConfigServiceImplTest {
     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 @@ public class SensorEnrichmentConfigServiceImplTest {
   }
 
   @Test
-  public void getAvailableThreatTriageAggregatorsShouldReturnAggregators() throws Exception {
+  public void getAvailableThreatTriageAggregatorsShouldReturnAggregators() {
     assertEquals(new ArrayList<String>() {{
       add("MAX");
       add("MIN");
@@ -238,11 +227,11 @@ public class SensorEnrichmentConfigServiceImplTest {
   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.fasterxml.jackson.databind.ObjectMapper;
 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 java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Collections;
-
-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 org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import java.nio.charset.StandardCharsets;
+import java.util.*;
+
+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 @@ public class SensorIndexingConfigServiceImplTest {
   @Multiline
   public static String broJson;
 
-  @Before
+  @BeforeEach
   public void setUp() throws Exception {
     objectMapper = mock(ObjectMapper.class);
     curatorFramework = mock(CuratorFramework.class);
@@ -101,25 +82,20 @@ public class SensorIndexingConfigServiceImplTest {
 
   @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 @@ public class SensorIndexingConfigServiceImplTest {
     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 @@ public class SensorIndexingConfigServiceImplTest {
     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 @@ public class SensorIndexingConfigServiceImplTest {
     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 @@ public class SensorIndexingConfigServiceImplTest {
     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 @@ public class SensorIndexingConfigServiceImplTest {
 
   @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 @@ package org.apache.metron.rest.service.impl;
 
 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.GrokService;
 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 org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
 
 import java.io.File;
-import java.io.FileWriter;
+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 org.springframework.security.core.Authentication;
-import org.springframework.security.core.context.SecurityContextHolder;
 
 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;
-
-@SuppressWarnings("ALL")
-public class SensorParserConfigServiceImplTest {
-  @Rule
-  public final ExpectedException exception = ExpectedException.none();
+import static org.junit.jupiter.api.Assertions.*;
+import static org.mockito.Mockito.*;
 
+public class SensorParserConfigServiceImplTest {
   Environment environment;
   ObjectMapper objectMapper;
   CuratorFramework curatorFramework;
@@ -105,8 +89,8 @@ public class SensorParserConfigServiceImplTest {
 
   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 @@ public class SensorParserConfigServiceImplTest {
 
   @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 @@ public class SensorParserConfigServiceImplTest {
     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 @@ public class SensorParserConfigServiceImplTest {
     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 @@ public class SensorParserConfigServiceImplTest {
 
   @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 @@ public class SensorParserConfigServiceImplTest {
 
     final SensorParserConfig sensorParserConfig = new SensorParserConfig();
     sensorParserConfig.setSensorTopic("bro");
-    sensorParserConfigService.save("bro", sensorParserConfig);
+    assertThrows(RestException.class, () -> sensorParserConfigService.save("bro", sensorParserConfig));
   }
 
   @Test
@@ -242,7 +219,7 @@ public class SensorParserConfigServiceImplTest {
   }
 
   @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 @@ public class SensorParserConfigServiceImplTest {
     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 @@ public class SensorParserConfigServiceImplTest {
   }
 
   @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 @@ public class SensorParserConfigServiceImplTest {
     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.RestException;
 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 @@ public class SensorParserGroupServiceImplTest {
   }
 
   @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 @@ public class SensorParserGroupServiceImplTest {
     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 @@ public class SensorParserGroupServiceImplTest {
     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.common.configuration.SensorParserConfig;
 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.LinkedHashMap;
 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 @@ public class StellarServiceImplTest {
   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.common.configuration.SensorParserGroup;
 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 java.util.Arrays;
-import java.util.Collections;
+import org.apache.metron.rest.service.*;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 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 @@ public class StormAdminServiceImplTest {
   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 @@ package org.apache.metron.rest.service.impl;
 
 import org.apache.metron.rest.MetronRestConstants;
 import org.apache.metron.rest.RestException;
-import org.junit.Before;
-import org.junit.Rule;
... 35519 lines suppressed ...