You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nifi.apache.org by mt...@apache.org on 2021/08/28 12:35:13 UTC

[nifi] branch main updated: NIFI-9137 Refactored nifi-parquet-processors using JUnit 5 NIFI-9138 Refactored nifi-pgp-bundle using JUnit 5 NIFI-9139 Refactored nifi-poi-bundle using JUnit 5 NIFI-9140 Refactored nifi-prometheus-bundle using JUnit 5

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

mthomsen pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git


The following commit(s) were added to refs/heads/main by this push:
     new 60b08cc  NIFI-9137 Refactored nifi-parquet-processors using JUnit 5 NIFI-9138 Refactored nifi-pgp-bundle using JUnit 5 NIFI-9139 Refactored nifi-poi-bundle using JUnit 5 NIFI-9140 Refactored nifi-prometheus-bundle using JUnit 5
60b08cc is described below

commit 60b08cc5695da73496710e062ef2a8ac889700db
Author: exceptionfactory <ex...@apache.org>
AuthorDate: Fri Aug 27 07:33:34 2021 -0500

    NIFI-9137 Refactored nifi-parquet-processors using JUnit 5
    NIFI-9138 Refactored nifi-pgp-bundle using JUnit 5
    NIFI-9139 Refactored nifi-poi-bundle using JUnit 5
    NIFI-9140 Refactored nifi-prometheus-bundle using JUnit 5
    
    This closes #5353
    
    Signed-off-by: Mike Thomsen <mt...@apache.org>
---
 .../org/apache/nifi/parquet/TestParquetReader.java |  47 +++---
 .../nifi/parquet/TestParquetRecordSetWriter.java   |  57 +++----
 .../nifi/processors/parquet/FetchParquetTest.java  |  96 +++++------
 .../nifi/processors/parquet/PutParquetTest.java    | 101 ++++++------
 .../parquet/TestConvertAvroToParquet.java          |  88 ++++------
 .../nifi/processors/pgp/DecryptContentPGPTest.java |  18 +-
 .../nifi/processors/pgp/EncryptContentPGPTest.java |  24 +--
 .../standard/StandardPGPPrivateKeyServiceTest.java |  14 +-
 .../standard/StandardPGPPublicKeyServiceTest.java  |  15 +-
 .../poi/ConvertExcelToCSVProcessorTest.java        | 181 ++++++++++-----------
 .../prometheus/PrometheusReportingTaskIT.java      |  34 ++--
 .../prometheus/TestPrometheusRecordSink.java       |  28 +---
 pom.xml                                            |  10 ++
 13 files changed, 325 insertions(+), 388 deletions(-)

diff --git a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/parquet/TestParquetReader.java b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/parquet/TestParquetReader.java
index f0db498..0fccd7d 100644
--- a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/parquet/TestParquetReader.java
+++ b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/parquet/TestParquetReader.java
@@ -20,7 +20,6 @@ import org.apache.avro.Schema;
 import org.apache.avro.generic.GenericData;
 import org.apache.avro.generic.GenericRecord;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.SystemUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.nifi.components.PropertyDescriptor;
@@ -35,10 +34,11 @@ import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.apache.parquet.avro.AvroParquetWriter;
 import org.apache.parquet.hadoop.ParquetWriter;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.apache.parquet.hadoop.util.HadoopOutputFile;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledOnOs;
+import org.junit.jupiter.api.condition.OS;
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
@@ -50,25 +50,22 @@ import java.nio.file.Paths;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import static org.junit.Assert.assertEquals;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+@DisabledOnOs({ OS.WINDOWS })
 public class TestParquetReader {
 
-    private Map<PropertyDescriptor,String> readerFactoryProperties;
-    private ConfigurationContext readerFactoryConfigContext;
+    private static final String PARQUET_PATH = "src/test/resources/TestParquetReader.parquet";
+    private static final String SCHEMA_PATH = "src/test/resources/avro/user.avsc";
 
     private ParquetReader parquetReaderFactory;
     private ComponentLog componentLog;
 
-    @BeforeClass
-    public static void setUpSuite() {
-        Assume.assumeTrue("Test only runs on *nix", !SystemUtils.IS_OS_WINDOWS);
-    }
-
-    @Before
+    @BeforeEach
     public void setup() {
-        readerFactoryProperties = new HashMap<>();
-        readerFactoryConfigContext = new MockConfigurationContext(readerFactoryProperties, null);
+        Map<PropertyDescriptor, String> readerFactoryProperties = new HashMap<>();
+        ConfigurationContext readerFactoryConfigContext = new MockConfigurationContext(readerFactoryProperties, null);
 
         parquetReaderFactory = new ParquetReader();
         parquetReaderFactory.abstractStoreConfigContext(readerFactoryConfigContext);
@@ -78,7 +75,7 @@ public class TestParquetReader {
 
     @Test
     public void testReadUsers() throws IOException, MalformedRecordException {
-        final Schema schema = getSchema("src/test/resources/avro/user.avsc");
+        final Schema schema = getSchema();
         final File parquetFile = new File("target/TestParquetReader-testReadUsers-" + System.currentTimeMillis());
 
         // write some users to the parquet file...
@@ -112,25 +109,25 @@ public class TestParquetReader {
     @Test
     public void testReader() throws InitializationException, IOException  {
         final TestRunner runner = TestRunners.newTestRunner(TestParquetProcessor.class);
-        final String path = "src/test/resources/TestParquetReader.parquet";
+
 
         final ParquetReader parquetReader = new ParquetReader();
 
         runner.addControllerService("reader", parquetReader);
         runner.enableControllerService(parquetReader);
 
-        runner.enqueue(Paths.get(path));
+        runner.enqueue(Paths.get(PARQUET_PATH));
 
         runner.setProperty(TestParquetProcessor.READER, "reader");
-        runner.setProperty(TestParquetProcessor.PATH, path);
+        runner.setProperty(TestParquetProcessor.PATH, PARQUET_PATH);
 
         runner.run();
         runner.assertAllFlowFilesTransferred(TestParquetProcessor.SUCCESS, 1);
     }
 
 
-    private Schema getSchema(final String schemaFilePath) throws IOException {
-        final File schemaFile = new File(schemaFilePath);
+    private Schema getSchema() throws IOException {
+        final File schemaFile = new File(SCHEMA_PATH);
         final String schemaString = IOUtils.toString(new FileInputStream(schemaFile), StandardCharsets.UTF_8);
         return new Schema.Parser().parse(schemaString);
     }
@@ -139,13 +136,9 @@ public class TestParquetReader {
         final Configuration conf = new Configuration();
         final Path parquetPath = new Path(parquetFile.getPath());
 
-        final ParquetWriter<GenericRecord> writer =
-                AvroParquetWriter.<GenericRecord>builder(parquetPath)
+        return AvroParquetWriter.<GenericRecord>builder(HadoopOutputFile.fromPath(parquetPath, conf))
                         .withSchema(schema)
                         .withConf(conf)
                         .build();
-
-        return writer;
     }
-
 }
diff --git a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/parquet/TestParquetRecordSetWriter.java b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/parquet/TestParquetRecordSetWriter.java
index faa937c..ed772e5 100644
--- a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/parquet/TestParquetRecordSetWriter.java
+++ b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/parquet/TestParquetRecordSetWriter.java
@@ -42,25 +42,30 @@ import org.apache.parquet.avro.AvroParquetReader;
 import org.apache.parquet.hadoop.ParquetReader;
 import org.apache.parquet.hadoop.util.HadoopInputFile;
 import org.apache.parquet.io.InputFile;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class TestParquetRecordSetWriter {
 
+    private static final String SCHEMA_PATH = "src/test/resources/avro/user.avsc";
+
+    private static final int USERS = 10;
+
     private ComponentLog componentLog;
     private ParquetRecordSetWriter recordSetWriterFactory;
 
-    @Before
+    @BeforeEach
     public void setup() {
         recordSetWriterFactory = new ParquetRecordSetWriter();
         componentLog = new MockComponentLog("1234", recordSetWriterFactory);
@@ -68,42 +73,24 @@ public class TestParquetRecordSetWriter {
 
     @Test
     public void testWriteUsers() throws IOException, SchemaNotFoundException, InitializationException {
-        initRecordSetWriter("src/test/resources/avro/user.avsc");
-
-        // get the schema from the writer factory
+        initRecordSetWriter();
         final RecordSchema writeSchema = recordSetWriterFactory.getSchema(Collections.emptyMap(), null);
-
-        // write some records
-        final int numUsers = 10;
         final File parquetFile = new File("target/testWriterUsers-" + System.currentTimeMillis());
-
-        // write some records...
-        writeUsers(writeSchema, parquetFile, numUsers);
-
-        // read the records back in to verify
-        verifyParquetRecords(parquetFile, numUsers);
+        writeUsers(writeSchema, parquetFile);
+        verifyParquetRecords(parquetFile);
     }
 
     @Test
     public void testWriteUsersWhenSchemaFormatNotAvro() throws IOException, SchemaNotFoundException, InitializationException {
-        initRecordSetWriter("src/test/resources/avro/user.avsc");
-
-        // get the schema from the writer factory
+        initRecordSetWriter();
         final RecordSchema writeSchema = recordSetWriterFactory.getSchema(Collections.emptyMap(), null);
         final RecordSchema writeSchemaWithOtherFormat = new SimpleRecordSchema(writeSchema.getFields(), null, "OTHER-FORMAT", SchemaIdentifier.EMPTY);
-
-        // write some records
-        final int numUsers = 10;
         final File parquetFile = new File("target/testWriterUsers-" + System.currentTimeMillis());
-
-        // write some records...
-        writeUsers(writeSchemaWithOtherFormat, parquetFile, numUsers);
-
-        // read the records back in to verify
-        verifyParquetRecords(parquetFile, numUsers);
+        writeUsers(writeSchemaWithOtherFormat, parquetFile);
+        verifyParquetRecords(parquetFile);
     }
 
-    private void initRecordSetWriter(final String schemaPath) throws IOException, InitializationException {
+    private void initRecordSetWriter() throws IOException, InitializationException {
         final TestRunner runner = TestRunners.newTestRunner(new AbstractProcessor() {
             @Override
             public void onTrigger(final ProcessContext context, final ProcessSession session) throws ProcessException {
@@ -112,17 +99,17 @@ public class TestParquetRecordSetWriter {
 
         runner.addControllerService("writer", recordSetWriterFactory);
 
-        final File schemaFile = new File(schemaPath);
+        final File schemaFile = new File(SCHEMA_PATH);
         final Map<PropertyDescriptor, String> properties = createPropertiesWithSchema(schemaFile);
         properties.forEach((k, v) -> runner.setProperty(recordSetWriterFactory, k, v));
 
         runner.enableControllerService(recordSetWriterFactory);
     }
 
-    private void writeUsers(final RecordSchema writeSchema, final File parquetFile, final int numUsers) throws IOException {
+    private void writeUsers(final RecordSchema writeSchema, final File parquetFile) throws IOException {
         try(final OutputStream output = new FileOutputStream(parquetFile);
             final RecordSetWriter recordSetWriter = recordSetWriterFactory.createWriter(componentLog, writeSchema, output, Collections.emptyMap())) {
-            for (int i = 0; i < numUsers; i++) {
+            for (int i = 0; i < USERS; i++) {
                 final Map<String, Object> userFields = new HashMap<>();
                 userFields.put("name", "user" + i);
                 userFields.put("favorite_number", i);
@@ -136,7 +123,7 @@ public class TestParquetRecordSetWriter {
         }
     }
 
-    private void verifyParquetRecords(final File parquetFile, final int expectedRecordCount) throws IOException {
+    private void verifyParquetRecords(final File parquetFile) throws IOException {
         final Configuration conf = new Configuration();
         final Path path = new Path(parquetFile.getPath());
         final InputFile inputFile = HadoopInputFile.fromPath(path, conf);
@@ -148,12 +135,12 @@ public class TestParquetRecordSetWriter {
             while(reader.read() != null) {
                 recordCount++;
             }
-            assertEquals(expectedRecordCount, recordCount);
+            assertEquals(USERS, recordCount);
         }
     }
 
     private Map<PropertyDescriptor,String> createPropertiesWithSchema(final File schemaFile) throws IOException {
-        return createPropertiesWithSchema(IOUtils.toString(schemaFile.toURI()));
+        return createPropertiesWithSchema(IOUtils.toString(schemaFile.toURI(), StandardCharsets.UTF_8));
     }
 
     private Map<PropertyDescriptor,String> createPropertiesWithSchema(final String schemaText) {
diff --git a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/FetchParquetTest.java b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/FetchParquetTest.java
index ccb9d47..3bb5475 100644
--- a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/FetchParquetTest.java
+++ b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/FetchParquetTest.java
@@ -21,7 +21,6 @@ import org.apache.avro.Schema;
 import org.apache.avro.generic.GenericData;
 import org.apache.avro.generic.GenericRecord;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.SystemUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.Path;
 import org.apache.nifi.flowfile.FlowFile;
@@ -41,11 +40,11 @@ import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
 import org.apache.parquet.avro.AvroParquetWriter;
 import org.apache.parquet.hadoop.ParquetWriter;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.apache.parquet.hadoop.util.HadoopOutputFile;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledOnOs;
+import org.junit.jupiter.api.condition.OS;
 import org.mockito.AdditionalMatchers;
 import org.mockito.Mockito;
 
@@ -59,15 +58,20 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.when;
 
+@DisabledOnOs({ OS.WINDOWS })
 public class FetchParquetTest {
 
     static final String DIRECTORY = "target";
     static final String TEST_CONF_PATH = "src/test/resources/core-site.xml";
     static final String RECORD_HEADER = "name,favorite_number,favorite_color";
+    private static final int USERS = 10;
 
     private Schema schema;
     private Schema schemaWithArray;
@@ -78,13 +82,8 @@ public class FetchParquetTest {
     private FetchParquet proc;
     private TestRunner testRunner;
 
-    @BeforeClass
-    public static void setUpSuite() {
-        Assume.assumeTrue("Test only runs on *nix", !SystemUtils.IS_OS_WINDOWS);
-    }
-
-    @Before
-    public void setup() throws IOException, InitializationException {
+    @BeforeEach
+    public void setup() throws IOException {
         final String avroSchema = IOUtils.toString(new FileInputStream("src/test/resources/avro/user.avsc"), StandardCharsets.UTF_8);
         schema = new Schema.Parser().parse(avroSchema);
 
@@ -119,8 +118,7 @@ public class FetchParquetTest {
 
         final File parquetDir = new File(DIRECTORY);
         final File parquetFile = new File(parquetDir,"testFetchParquetToCSV.parquet");
-        final int numUsers = 10;
-        writeParquetUsers(parquetFile, numUsers);
+        writeParquetUsers(parquetFile);
 
         final Map<String,String> attributes = new HashMap<>();
         attributes.put(CoreAttributes.PATH.key(), parquetDir.getAbsolutePath());
@@ -131,14 +129,14 @@ public class FetchParquetTest {
         testRunner.assertAllFlowFilesTransferred(FetchParquet.REL_SUCCESS, 1);
 
         final MockFlowFile flowFile = testRunner.getFlowFilesForRelationship(FetchParquet.REL_SUCCESS).get(0);
-        flowFile.assertAttributeEquals(FetchParquet.RECORD_COUNT_ATTR, String.valueOf(numUsers));
+        flowFile.assertAttributeEquals(FetchParquet.RECORD_COUNT_ATTR, String.valueOf(USERS));
         flowFile.assertAttributeEquals(CoreAttributes.MIME_TYPE.key(), "text/plain");
 
         // the mock record writer will write the header for each record so replace those to get down to just the records
         String flowFileContent = new String(flowFile.toByteArray(), StandardCharsets.UTF_8);
         flowFileContent = flowFileContent.replaceAll(RECORD_HEADER + "\n", "");
 
-        verifyCSVRecords(numUsers, flowFileContent);
+        verifyCSVRecords(flowFileContent);
     }
 
     @Test
@@ -156,7 +154,7 @@ public class FetchParquetTest {
     }
 
     @Test
-    public void testFetchWhenDoesntExistShouldRouteToFailure() throws InitializationException {
+    public void testFetchWhenDoesNotExistShouldRouteToFailure() throws InitializationException {
         configure(proc);
 
         final String filename = "/tmp/does-not-exist-" + System.currentTimeMillis();
@@ -185,8 +183,7 @@ public class FetchParquetTest {
 
         final File parquetDir = new File(DIRECTORY);
         final File parquetFile = new File(parquetDir,"testFetchParquetToCSV.parquet");
-        final int numUsers = 10;
-        writeParquetUsers(parquetFile, numUsers);
+        writeParquetUsers(parquetFile);
 
         final Map<String,String> attributes = new HashMap<>();
         attributes.put(CoreAttributes.PATH.key(), parquetDir.getAbsolutePath());
@@ -204,15 +201,14 @@ public class FetchParquetTest {
     public void testIOExceptionWhileReadingShouldRouteToRetry() throws IOException, InitializationException {
         final FetchParquet proc = new FetchParquet() {
             @Override
-            public HDFSRecordReader createHDFSRecordReader(ProcessContext context, FlowFile flowFile, Configuration conf, Path path)
-                    throws IOException {
+            public HDFSRecordReader createHDFSRecordReader(ProcessContext context, FlowFile flowFile, Configuration conf, Path path) {
                 return new HDFSRecordReader() {
                     @Override
                     public Record nextRecord() throws IOException {
                         throw new IOException("IOException");
                     }
                     @Override
-                    public void close() throws IOException {
+                    public void close() {
                     }
                 };
             }
@@ -222,8 +218,7 @@ public class FetchParquetTest {
 
         final File parquetDir = new File(DIRECTORY);
         final File parquetFile = new File(parquetDir,"testFetchParquetToCSV.parquet");
-        final int numUsers = 10;
-        writeParquetUsers(parquetFile, numUsers);
+        writeParquetUsers(parquetFile);
 
         final Map<String,String> attributes = new HashMap<>();
         attributes.put(CoreAttributes.PATH.key(), parquetDir.getAbsolutePath());
@@ -255,8 +250,7 @@ public class FetchParquetTest {
 
         final File parquetDir = new File(DIRECTORY);
         final File parquetFile = new File(parquetDir,"testFetchParquetToCSV.parquet");
-        final int numUsers = 10;
-        writeParquetUsers(parquetFile, numUsers);
+        writeParquetUsers(parquetFile);
 
         final Map<String,String> attributes = new HashMap<>();
         attributes.put(CoreAttributes.PATH.key(), parquetDir.getAbsolutePath());
@@ -276,8 +270,7 @@ public class FetchParquetTest {
 
         final File parquetDir = new File(DIRECTORY);
         final File parquetFile = new File(parquetDir,"testFetchParquetWithArrayToCSV.parquet");
-        final int numUsers = 10;
-        writeParquetUsersWithArray(parquetFile, numUsers);
+        writeParquetUsersWithArray(parquetFile);
 
         final Map<String,String> attributes = new HashMap<>();
         attributes.put(CoreAttributes.PATH.key(), parquetDir.getAbsolutePath());
@@ -294,8 +287,7 @@ public class FetchParquetTest {
 
         final File parquetDir = new File(DIRECTORY);
         final File parquetFile = new File(parquetDir,"testFetchParquetWithNullableArrayToCSV.parquet");
-        final int numUsers = 10;
-        writeParquetUsersWithNullableArray(parquetFile, numUsers);
+        writeParquetUsersWithNullableArray(parquetFile);
 
         final Map<String,String> attributes = new HashMap<>();
         attributes.put(CoreAttributes.PATH.key(), parquetDir.getAbsolutePath());
@@ -312,8 +304,7 @@ public class FetchParquetTest {
 
         final File parquetDir = new File(DIRECTORY);
         final File parquetFile = new File(parquetDir,"testFetchParquetWithDecimal.parquet");
-        final int numUsers = 10;
-        writeParquetUsersWithDecimal(parquetFile, numUsers);
+        writeParquetUsersWithDecimal(parquetFile);
 
         final Map<String,String> attributes = new HashMap<>();
         attributes.put(CoreAttributes.PATH.key(), parquetDir.getAbsolutePath());
@@ -324,34 +315,34 @@ public class FetchParquetTest {
         testRunner.assertAllFlowFilesTransferred(FetchParquet.REL_SUCCESS, 1);
     }
 
-    protected void verifyCSVRecords(int numUsers, String csvContent) {
+    protected void verifyCSVRecords(String csvContent) {
         final String[] splits = csvContent.split("[\\n]");
-        Assert.assertEquals(numUsers, splits.length);
+        assertEquals(USERS, splits.length);
 
-        for (int i=0; i < numUsers; i++) {
+        for (int i=0; i < USERS; i++) {
             final String line = splits[i];
-            Assert.assertEquals("Bob" + i + "," + i + ",blue" + i, line);
+            assertEquals("Bob" + i + "," + i + ",blue" + i, line);
         }
     }
 
-    private AvroParquetWriter.Builder<GenericRecord> createAvroParquetWriter(final File parquetFile, final Schema schema) {
+    private AvroParquetWriter.Builder<GenericRecord> createAvroParquetWriter(final File parquetFile, final Schema schema) throws IOException {
         final Path parquetPath = new Path(parquetFile.getPath());
 
         return AvroParquetWriter
-                .<GenericRecord>builder(parquetPath)
+                .<GenericRecord>builder(HadoopOutputFile.fromPath(parquetPath, testConf))
                 .withSchema(schema)
                 .withConf(testConf);
     }
 
-    private void writeParquetUsers(final File parquetFile, int numUsers) throws IOException {
+    private void writeParquetUsers(final File parquetFile) throws IOException {
         if (parquetFile.exists()) {
-            Assert.assertTrue(parquetFile.delete());
+            assertTrue(parquetFile.delete());
         }
 
         final AvroParquetWriter.Builder<GenericRecord> writerBuilder = createAvroParquetWriter(parquetFile, schema);
 
         try (final ParquetWriter<GenericRecord> writer = writerBuilder.build()) {
-            for (int i=0; i < numUsers; i++) {
+            for (int i=0; i < USERS; i++) {
                 final GenericRecord user = new GenericData.Record(schema);
                 user.put("name", "Bob" + i);
                 user.put("favorite_number", i);
@@ -362,9 +353,9 @@ public class FetchParquetTest {
         }
     }
 
-    private void writeParquetUsersWithArray(final File parquetFile, int numUsers) throws IOException {
+    private void writeParquetUsersWithArray(final File parquetFile) throws IOException {
         if (parquetFile.exists()) {
-            Assert.assertTrue(parquetFile.delete());
+            assertTrue(parquetFile.delete());
         }
 
         final AvroParquetWriter.Builder<GenericRecord> writerBuilder = createAvroParquetWriter(parquetFile, schemaWithArray);
@@ -372,7 +363,7 @@ public class FetchParquetTest {
         final Schema favoriteColorsSchema = schemaWithArray.getField("favorite_colors").schema();
 
         try (final ParquetWriter<GenericRecord> writer = writerBuilder.build()) {
-            for (int i=0; i < numUsers; i++) {
+            for (int i=0; i < USERS; i++) {
                 final GenericRecord user = new GenericData.Record(schema);
                 user.put("name", "Bob" + i);
                 user.put("favorite_number", i);
@@ -388,9 +379,9 @@ public class FetchParquetTest {
         }
     }
 
-    private void writeParquetUsersWithNullableArray(final File parquetFile, int numUsers) throws IOException {
+    private void writeParquetUsersWithNullableArray(final File parquetFile) throws IOException {
         if (parquetFile.exists()) {
-            Assert.assertTrue(parquetFile.delete());
+            assertTrue(parquetFile.delete());
         }
 
         final AvroParquetWriter.Builder<GenericRecord> writerBuilder = createAvroParquetWriter(parquetFile, schemaWithNullableArray);
@@ -400,7 +391,7 @@ public class FetchParquetTest {
         final Schema favoriteColorsSchema = schemaWithArray.getField("favorite_colors").schema();
 
         try (final ParquetWriter<GenericRecord> writer = writerBuilder.build()) {
-            for (int i=0; i < numUsers; i++) {
+            for (int i=0; i < USERS; i++) {
                 final GenericRecord user = new GenericData.Record(schema);
                 user.put("name", "Bob" + i);
                 user.put("favorite_number", i);
@@ -416,9 +407,9 @@ public class FetchParquetTest {
         }
     }
 
-    private void writeParquetUsersWithDecimal(final File parquetFile, int numUsers) throws IOException {
+    private void writeParquetUsersWithDecimal(final File parquetFile) throws IOException {
         if (parquetFile.exists()) {
-            Assert.assertTrue(parquetFile.delete());
+            assertTrue(parquetFile.delete());
         }
 
         final BigDecimal initialAmount = new BigDecimal("1234567.0123456789");
@@ -426,12 +417,12 @@ public class FetchParquetTest {
 
         final List<Schema> amountSchemaUnion = schemaWithDecimal.getField("amount").schema().getTypes();
         final Schema amountSchema = amountSchemaUnion.stream().filter(s -> s.getType() == Schema.Type.FIXED).findFirst().orElse(null);
-        Assert.assertNotNull(amountSchema);
+        assertNotNull(amountSchema);
 
         final Conversions.DecimalConversion decimalConversion = new Conversions.DecimalConversion();
 
         try (final ParquetWriter<GenericRecord> writer = writerBuilder.build()) {
-            for (int i=0; i < numUsers; i++) {
+            for (int i=0; i < USERS; i++) {
                 final BigDecimal incrementedAmount = initialAmount.add(new BigDecimal("1"));
                 final GenericRecord user = new GenericData.Record(schemaWithDecimal);
                 user.put("name", "Bob" + i);
@@ -442,5 +433,4 @@ public class FetchParquetTest {
         }
 
     }
-
 }
diff --git a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/PutParquetTest.java b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/PutParquetTest.java
index b4ba3db..3c77aff 100644
--- a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/PutParquetTest.java
+++ b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/PutParquetTest.java
@@ -16,6 +16,10 @@
  */
 package org.apache.nifi.processors.parquet;
 
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.when;
 
@@ -31,7 +35,6 @@ import java.util.Map;
 import org.apache.avro.Schema;
 import org.apache.avro.generic.GenericRecord;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.SystemUtils;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
@@ -61,14 +64,15 @@ import org.apache.nifi.util.TestRunners;
 import org.apache.parquet.avro.AvroParquetReader;
 import org.apache.parquet.hadoop.ParquetReader;
 import org.apache.parquet.hadoop.metadata.CompressionCodecName;
-import org.junit.Assert;
-import org.junit.Assume;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.apache.parquet.hadoop.util.HadoopInputFile;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.condition.DisabledOnOs;
+import org.junit.jupiter.api.condition.OS;
 import org.mockito.Mockito;
 
-
+@DisabledOnOs(OS.WINDOWS)
 public class PutParquetTest {
 
     static final String DIRECTORY = "target";
@@ -80,14 +84,13 @@ public class PutParquetTest {
     private MockRecordParser readerFactory;
     private TestRunner testRunner;
 
-    @BeforeClass
+    @BeforeAll
     public static void setupBeforeClass() {
-        Assume.assumeTrue("Test only runs on *nix", !SystemUtils.IS_OS_WINDOWS);
         BasicConfigurator.configure();
     }
 
-    @Before
-    public void setup() throws IOException, InitializationException {
+    @BeforeEach
+    public void setup() throws IOException {
         final String avroSchema = IOUtils.toString(new FileInputStream("src/test/resources/avro/user.avsc"), StandardCharsets.UTF_8);
         schema = new Schema.Parser().parse(avroSchema);
 
@@ -142,28 +145,28 @@ public class PutParquetTest {
 
         // verify we generated a provenance event
         final List<ProvenanceEventRecord> provEvents = testRunner.getProvenanceEvents();
-        Assert.assertEquals(1, provEvents.size());
+        assertEquals(1, provEvents.size());
 
         // verify it was a SEND event with the correct URI
         final ProvenanceEventRecord provEvent = provEvents.get(0);
-        Assert.assertEquals(ProvenanceEventType.SEND, provEvent.getEventType());
+        assertEquals(ProvenanceEventType.SEND, provEvent.getEventType());
         // If it runs with a real HDFS, the protocol will be "hdfs://", but with a local filesystem, just assert the filename.
-        Assert.assertTrue(provEvent.getTransitUri().endsWith(DIRECTORY + "/" + filename));
+        assertTrue(provEvent.getTransitUri().endsWith(DIRECTORY + "/" + filename));
 
         // verify the content of the parquet file by reading it back in
         verifyAvroParquetUsers(avroParquetFile, 100);
 
         // verify we don't have the temp dot file after success
         final File tempAvroParquetFile = new File(DIRECTORY + "/." + filename);
-        Assert.assertFalse(tempAvroParquetFile.exists());
+        assertFalse(tempAvroParquetFile.exists());
 
         // verify we DO have the CRC file after success
         final File crcAvroParquetFile = new File(DIRECTORY + "/." + filename + ".crc");
-        Assert.assertTrue(crcAvroParquetFile.exists());
+        assertTrue(crcAvroParquetFile.exists());
     }
 
     @Test
-    public void testWriteAvroAndRemoveCRCFiles() throws IOException, InitializationException {
+    public void testWriteAvroAndRemoveCRCFiles() throws InitializationException {
         configure(proc,100);
         testRunner.setProperty(PutParquet.REMOVE_CRC_FILES, "true");
 
@@ -178,11 +181,11 @@ public class PutParquetTest {
 
         // verify we don't have the temp dot file after success
         final File tempAvroParquetFile = new File(DIRECTORY + "/." + filename);
-        Assert.assertFalse(tempAvroParquetFile.exists());
+        assertFalse(tempAvroParquetFile.exists());
 
         // verify we don't have the CRC file after success because we set remove to true
         final File crcAvroParquetFile = new File(DIRECTORY + "/." + filename + ".crc");
-        Assert.assertFalse(crcAvroParquetFile.exists());
+        assertFalse(crcAvroParquetFile.exists());
     }
 
     @Test
@@ -229,11 +232,11 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testCreateDirectoryIOExceptionShouldRouteToRetry() throws InitializationException, IOException {
+    public void testCreateDirectoryIOExceptionShouldRouteToRetry() throws InitializationException {
         final PutParquet proc = new PutParquet() {
             @Override
             protected void createDirectory(FileSystem fileSystem, Path directory, String remoteOwner, String remoteGroup)
-                    throws IOException, FailureException {
+                    throws IOException {
                 throw new IOException("IOException creating directory");
             }
         };
@@ -251,11 +254,11 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testCreateDirectoryFailureExceptionShouldRouteToFailure() throws InitializationException, IOException {
+    public void testCreateDirectoryFailureExceptionShouldRouteToFailure() throws InitializationException {
         final PutParquet proc = new PutParquet() {
             @Override
             protected void createDirectory(FileSystem fileSystem, Path directory, String remoteOwner, String remoteGroup)
-                    throws IOException, FailureException {
+                    throws FailureException {
                 throw new FailureException("FailureException creating directory");
             }
         };
@@ -281,7 +284,7 @@ public class PutParquetTest {
 
         // create a file in the directory with the same name
         final File avroParquetFile = new File(DIRECTORY + "/" + filename);
-        Assert.assertTrue(avroParquetFile.createNewFile());
+        assertTrue(avroParquetFile.createNewFile());
 
         final Map<String,String> flowFileAttributes = new HashMap<>();
         flowFileAttributes.put(CoreAttributes.FILENAME.key(), filename);
@@ -301,7 +304,7 @@ public class PutParquetTest {
 
         // create a file in the directory with the same name
         final File avroParquetFile = new File(DIRECTORY + "/" + filename);
-        Assert.assertTrue(avroParquetFile.createNewFile());
+        assertTrue(avroParquetFile.createNewFile());
 
         final Map<String,String> flowFileAttributes = new HashMap<>();
         flowFileAttributes.put(CoreAttributes.FILENAME.key(), filename);
@@ -320,7 +323,7 @@ public class PutParquetTest {
 
         // create a file in the directory with the same name
         final File avroParquetFile = new File(DIRECTORY + "/" + filename);
-        Assert.assertTrue(avroParquetFile.createNewFile());
+        assertTrue(avroParquetFile.createNewFile());
 
         final Map<String,String> flowFileAttributes = new HashMap<>();
         flowFileAttributes.put(CoreAttributes.FILENAME.key(), filename);
@@ -331,7 +334,7 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testValidSchemaWithELShouldBeSuccessful() throws InitializationException, IOException {
+    public void testValidSchemaWithELShouldBeSuccessful() throws InitializationException {
         configure(proc, 10);
 
         final String filename = "testValidSchemaWithELShouldBeSuccessful-" + System.currentTimeMillis();
@@ -372,11 +375,11 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testIOExceptionCreatingWriterShouldRouteToRetry() throws InitializationException, IOException, MalformedRecordException {
+    public void testIOExceptionCreatingWriterShouldRouteToRetry() throws InitializationException {
         final PutParquet proc = new PutParquet() {
             @Override
             public HDFSRecordWriter createHDFSRecordWriter(ProcessContext context, FlowFile flowFile, Configuration conf, Path path, RecordSchema schema)
-                    throws IOException, SchemaNotFoundException {
+                    throws IOException {
                 throw new IOException("IOException");
             }
         };
@@ -422,11 +425,11 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testIOExceptionRenamingShouldRouteToRetry() throws InitializationException, IOException {
+    public void testIOExceptionRenamingShouldRouteToRetry() throws InitializationException {
         final PutParquet proc = new PutParquet() {
             @Override
             protected void rename(FileSystem fileSystem, Path srcFile, Path destFile)
-                    throws IOException, InterruptedException, FailureException {
+                    throws IOException {
                 throw new IOException("IOException renaming");
             }
         };
@@ -444,15 +447,15 @@ public class PutParquetTest {
 
         // verify we don't have the temp dot file after success
         final File tempAvroParquetFile = new File(DIRECTORY + "/." + filename);
-        Assert.assertFalse(tempAvroParquetFile.exists());
+        assertFalse(tempAvroParquetFile.exists());
     }
 
     @Test
-    public void testFailureExceptionRenamingShouldRouteToFailure() throws InitializationException, IOException {
+    public void testFailureExceptionRenamingShouldRouteToFailure() throws InitializationException {
         final PutParquet proc = new PutParquet() {
             @Override
             protected void rename(FileSystem fileSystem, Path srcFile, Path destFile)
-                    throws IOException, InterruptedException, FailureException {
+                    throws FailureException {
                 throw new FailureException("FailureException renaming");
             }
         };
@@ -470,11 +473,11 @@ public class PutParquetTest {
 
         // verify we don't have the temp dot file after success
         final File tempAvroParquetFile = new File(DIRECTORY + "/." + filename);
-        Assert.assertFalse(tempAvroParquetFile.exists());
+        assertFalse(tempAvroParquetFile.exists());
     }
 
     @Test
-    public void testRowGroupSize() throws IOException, InitializationException {
+    public void testRowGroupSize() throws InitializationException {
         configure(proc, 10);
         testRunner.setProperty(ParquetUtils.ROW_GROUP_SIZE, "1024 B");
 
@@ -489,7 +492,7 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testInvalidRowGroupSizeFromELShouldRouteToFailure() throws IOException, InitializationException {
+    public void testInvalidRowGroupSizeFromELShouldRouteToFailure() throws InitializationException {
         configure(proc, 10);
         testRunner.setProperty(ParquetUtils.ROW_GROUP_SIZE, "${row.group.size}");
 
@@ -505,7 +508,7 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testPageSize() throws IOException, InitializationException {
+    public void testPageSize() throws InitializationException {
         configure(proc, 10);
         testRunner.setProperty(ParquetUtils.PAGE_SIZE, "1024 B");
 
@@ -520,7 +523,7 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testInvalidPageSizeFromELShouldRouteToFailure() throws IOException, InitializationException {
+    public void testInvalidPageSizeFromELShouldRouteToFailure() throws InitializationException {
         configure(proc, 10);
         testRunner.setProperty(ParquetUtils.PAGE_SIZE, "${page.size}");
 
@@ -536,7 +539,7 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testDictionaryPageSize() throws IOException, InitializationException {
+    public void testDictionaryPageSize() throws InitializationException {
         configure(proc, 10);
         testRunner.setProperty(ParquetUtils.DICTIONARY_PAGE_SIZE, "1024 B");
 
@@ -551,7 +554,7 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testInvalidDictionaryPageSizeFromELShouldRouteToFailure() throws IOException, InitializationException {
+    public void testInvalidDictionaryPageSizeFromELShouldRouteToFailure() throws InitializationException {
         configure(proc, 10);
         testRunner.setProperty(ParquetUtils.DICTIONARY_PAGE_SIZE, "${dictionary.page.size}");
 
@@ -567,7 +570,7 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testMaxPaddingPageSize() throws IOException, InitializationException {
+    public void testMaxPaddingPageSize() throws InitializationException {
         configure(proc, 10);
         testRunner.setProperty(ParquetUtils.MAX_PADDING_SIZE, "1024 B");
 
@@ -582,7 +585,7 @@ public class PutParquetTest {
     }
 
     @Test
-    public void testInvalidMaxPaddingSizeFromELShouldRouteToFailure() throws IOException, InitializationException {
+    public void testInvalidMaxPaddingSizeFromELShouldRouteToFailure() throws InitializationException {
         configure(proc, 10);
         testRunner.setProperty(ParquetUtils.MAX_PADDING_SIZE, "${max.padding.size}");
 
@@ -621,7 +624,7 @@ public class PutParquetTest {
 
     private void verifyAvroParquetUsers(final Path avroParquetUsers, final int numExpectedUsers) throws IOException {
         final ParquetReader.Builder<GenericRecord> readerBuilder = AvroParquetReader
-                .<GenericRecord>builder(avroParquetUsers)
+                .<GenericRecord>builder(HadoopInputFile.fromPath(avroParquetUsers, testConf))
                 .withConf(testConf);
 
         int currUser = 0;
@@ -629,15 +632,15 @@ public class PutParquetTest {
         try (final ParquetReader<GenericRecord> reader = readerBuilder.build()) {
             GenericRecord nextRecord;
             while((nextRecord = reader.read()) != null) {
-                Assert.assertNotNull(nextRecord);
-                Assert.assertEquals("name" + currUser, nextRecord.get("name").toString());
-                Assert.assertEquals(currUser, nextRecord.get("favorite_number"));
-                Assert.assertEquals("blue" + currUser, nextRecord.get("favorite_color").toString());
+                assertNotNull(nextRecord);
+                assertEquals("name" + currUser, nextRecord.get("name").toString());
+                assertEquals(currUser, nextRecord.get("favorite_number"));
+                assertEquals("blue" + currUser, nextRecord.get("favorite_color").toString());
                 currUser++;
             }
         }
 
-        Assert.assertEquals(numExpectedUsers, currUser);
+        assertEquals(numExpectedUsers, currUser);
     }
 
 
diff --git a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/TestConvertAvroToParquet.java b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/TestConvertAvroToParquet.java
index 00bd23e..2d824c6 100644
--- a/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/TestConvertAvroToParquet.java
+++ b/nifi-nar-bundles/nifi-parquet-bundle/nifi-parquet-processors/src/test/java/org/apache/nifi/processors/parquet/TestConvertAvroToParquet.java
@@ -18,7 +18,6 @@ package org.apache.nifi.processors.parquet;
 
 import com.google.common.base.Charsets;
 import com.google.common.collect.ImmutableMap;
-import com.google.common.io.Resources;
 import org.apache.avro.Schema;
 import org.apache.avro.file.DataFileReader;
 import org.apache.avro.file.DataFileWriter;
@@ -29,7 +28,6 @@ import org.apache.avro.generic.GenericDatumWriter;
 import org.apache.avro.generic.GenericDatumReader;
 import org.apache.avro.io.DatumReader;
 import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.fs.FileSystem;
 import org.apache.hadoop.fs.Path;
 import org.apache.nifi.flowfile.attributes.CoreAttributes;
 import org.apache.nifi.util.MockFlowFile;
@@ -41,43 +39,49 @@ import org.apache.parquet.hadoop.ParquetReader;
 import org.apache.parquet.hadoop.example.GroupReadSupport;
 import org.apache.parquet.hadoop.metadata.BlockMetaData;
 import org.apache.parquet.hadoop.metadata.ParquetMetadata;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
 import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.nio.ByteBuffer;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Map;
-import java.util.HashMap;
+
 import static org.apache.parquet.format.converter.ParquetMetadataConverter.NO_FILTER;
-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;
 
 /**
  * Unit tests for ConvertAvroToParquet processor
  */
 public class TestConvertAvroToParquet {
 
-    private ConvertAvroToParquet processor;
     private TestRunner runner;
 
-    private List<GenericRecord> records = new ArrayList<>();
-    File tmpAvro = new File("target/test.avro");
-    File tmpParquet = new File("target/test.parquet");
+    private final List<GenericRecord> records = new ArrayList<>();
+    private File tmpAvro;
+    private File tmpParquet;
 
-    @Before
+    @BeforeEach
     public void setUp() throws Exception {
-        processor = new ConvertAvroToParquet();
+        tmpAvro = File.createTempFile(TestConvertAvroToParquet.class.getSimpleName(), ".avro");
+        tmpAvro.deleteOnExit();
+
+        tmpParquet = File.createTempFile(TestConvertAvroToParquet.class.getSimpleName(), ".parquet");
+        tmpParquet.deleteOnExit();
+
+        ConvertAvroToParquet processor = new ConvertAvroToParquet();
         runner = TestRunners.newTestRunner(processor);
 
-        Schema schema = new Schema.Parser().parse(Resources.getResource("avro/all-minus-enum.avsc").openStream());
+        Schema schema = new Schema.Parser().parse(getClass().getResourceAsStream("/avro/all-minus-enum.avsc"));
 
-        DataFileWriter<Object> awriter = new DataFileWriter<Object>(new GenericDatumWriter<Object>());
+        DataFileWriter<Object> awriter = new DataFileWriter<>(new GenericDatumWriter<>());
         GenericData.Record nestedRecord = new GenericRecordBuilder(
                 schema.getField("mynestedrecord").schema())
                 .set("mynestedint", 1).build();
@@ -92,7 +96,7 @@ public class TestConvertAvroToParquet {
                 .set("mybytes", ByteBuffer.wrap("hello".getBytes(Charsets.UTF_8)))
                 .set("mystring", "hello")
                 .set("mynestedrecord", nestedRecord)
-                .set("myarray", new GenericData.Array<Integer>(Schema.createArray(Schema.create(Schema.Type.INT)), Arrays.asList(1, 2)))
+                .set("myarray", new GenericData.Array<>(Schema.createArray(Schema.create(Schema.Type.INT)), Arrays.asList(1, 2)))
                 .set("mymap", ImmutableMap.of("a", 1, "b", 2))
                 .set("myfixed", new GenericData.Fixed(Schema.createFixed("ignored", null, null, 1), new byte[] { (byte) 65 }))
                 .build();
@@ -102,19 +106,17 @@ public class TestConvertAvroToParquet {
         awriter.flush();
         awriter.close();
 
-        DatumReader<GenericRecord> datumReader = new GenericDatumReader<GenericRecord>(schema);
-        DataFileReader<GenericRecord> dataFileReader = new DataFileReader<GenericRecord>(tmpAvro, datumReader);
+        DatumReader<GenericRecord> datumReader = new GenericDatumReader<>(schema);
+        DataFileReader<GenericRecord> dataFileReader = new DataFileReader<>(tmpAvro, datumReader);
         GenericRecord record1 = null;
         while (dataFileReader.hasNext()) {
             record1 = dataFileReader.next(record1);
             records.add(record1);
         }
-
     }
 
     @Test
-    public void test_Processor() throws Exception {
-
+    public void testProcessor() throws Exception {
         FileInputStream fileInputStream = new FileInputStream(tmpAvro);
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         int readedBytes;
@@ -124,9 +126,7 @@ public class TestConvertAvroToParquet {
         }
         out.close();
 
-        Map<String, String> attributes = new HashMap<String, String>() {{
-            put(CoreAttributes.FILENAME.key(), "test.avro");
-        }};
+        Map<String, String> attributes = Collections.singletonMap(CoreAttributes.FILENAME.key(), "test.avro");
         runner.enqueue(out.toByteArray(), attributes);
         runner.run();
 
@@ -134,16 +134,12 @@ public class TestConvertAvroToParquet {
 
         MockFlowFile resultFlowFile = runner.getFlowFilesForRelationship(ConvertAvroToParquet.SUCCESS).get(0);
 
-        // assert meta data
         assertEquals("1", resultFlowFile.getAttribute(ConvertAvroToParquet.RECORD_COUNT_ATTRIBUTE));
         assertEquals("test.parquet", resultFlowFile.getAttribute(CoreAttributes.FILENAME.key()));
-
-
     }
 
     @Test
-    public void test_Meta_Info() throws Exception {
-
+    public void testMetaInfo() throws Exception {
         FileInputStream fileInputStream = new FileInputStream(tmpAvro);
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         int readedBytes;
@@ -153,14 +149,11 @@ public class TestConvertAvroToParquet {
         }
         out.close();
 
-        Map<String, String> attributes = new HashMap<String, String>() {{
-            put(CoreAttributes.FILENAME.key(), "test.avro");
-        }};
+        Map<String, String> attributes = Collections.singletonMap(CoreAttributes.FILENAME.key(), "test.avro");
         runner.enqueue(out.toByteArray(), attributes);
         runner.run();
         MockFlowFile resultFlowFile = runner.getFlowFilesForRelationship(ConvertAvroToParquet.SUCCESS).get(0);
 
-        // Save the flowfile
         byte[] resultContents = runner.getContentAsByteArray(resultFlowFile);
         FileOutputStream fos = new FileOutputStream(tmpParquet);
         fos.write(resultContents);
@@ -168,11 +161,9 @@ public class TestConvertAvroToParquet {
         fos.close();
 
         Configuration conf = new Configuration();
-        FileSystem fs = FileSystem.getLocal(conf);
         ParquetMetadata metaData;
         metaData = ParquetFileReader.readFooter(conf, new Path(tmpParquet.getAbsolutePath()), NO_FILTER);
 
-        // #number of records
         long nParquetRecords = 0;
         for(BlockMetaData meta : metaData.getBlocks()){
             nParquetRecords += meta.getRowCount();
@@ -183,9 +174,7 @@ public class TestConvertAvroToParquet {
     }
 
     @Test
-    public void test_Data() throws Exception {
-
-
+    public void testData() throws Exception {
         FileInputStream fileInputStream = new FileInputStream(tmpAvro);
         ByteArrayOutputStream out = new ByteArrayOutputStream();
         int readedBytes;
@@ -195,14 +184,11 @@ public class TestConvertAvroToParquet {
         }
         out.close();
 
-        Map<String, String> attributes = new HashMap<String, String>() {{
-            put(CoreAttributes.FILENAME.key(), "test.avro");
-        }};
+        Map<String, String> attributes = Collections.singletonMap(CoreAttributes.FILENAME.key(), "test.avro");
         runner.enqueue(out.toByteArray(), attributes);
         runner.run();
         MockFlowFile resultFlowFile = runner.getFlowFilesForRelationship(ConvertAvroToParquet.SUCCESS).get(0);
 
-        // Save the flowfile
         byte[] resultContents = runner.getContentAsByteArray(resultFlowFile);
         FileOutputStream fos = new FileOutputStream(tmpParquet);
         fos.write(resultContents);
@@ -210,17 +196,15 @@ public class TestConvertAvroToParquet {
         fos.close();
 
         Configuration conf = new Configuration();
-        FileSystem fs = FileSystem.getLocal(conf);
         ParquetReader<Group> reader = ParquetReader.builder(new GroupReadSupport(), new Path(tmpParquet.getAbsolutePath()))
                         .withConf(conf)
                         .build();
 
-        List<Group> parquetRecords = new ArrayList<Group>();
+        List<Group> parquetRecords = new ArrayList<>();
 
         Group current;
         current = reader.read();
         while (current != null) {
-            assertTrue(current instanceof Group);
             parquetRecords.add(current);
             current = reader.read();
         }
@@ -230,7 +214,7 @@ public class TestConvertAvroToParquet {
         // Primitive
         assertEquals(firstRecord.getInteger("myint", 0), 1);
         assertEquals(firstRecord.getLong("mylong", 0), 2);
-        assertEquals(firstRecord.getBoolean("myboolean", 0), true);
+        assertTrue(firstRecord.getBoolean("myboolean", 0));
         assertEquals(firstRecord.getFloat("myfloat", 0), 3.1, 0.0001);
         assertEquals(firstRecord.getDouble("mydouble", 0), 4.1, 0.001);
         assertEquals(firstRecord.getString("mybytes", 0), "hello");
@@ -249,15 +233,5 @@ public class TestConvertAvroToParquet {
 
         // Fixed
         assertEquals(firstRecord.getString("myfixed",0), "A");
-
-    }
-
-    @After
-    public void cleanup(){
-        tmpAvro.delete();
-        tmpParquet.delete();
-
     }
-
-
 }
\ No newline at end of file
diff --git a/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-processors/src/test/java/org/apache/nifi/processors/pgp/DecryptContentPGPTest.java b/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-processors/src/test/java/org/apache/nifi/processors/pgp/DecryptContentPGPTest.java
index fec44ed..dcff039 100644
--- a/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-processors/src/test/java/org/apache/nifi/processors/pgp/DecryptContentPGPTest.java
+++ b/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-processors/src/test/java/org/apache/nifi/processors/pgp/DecryptContentPGPTest.java
@@ -46,12 +46,12 @@ import org.bouncycastle.openpgp.operator.bc.BcPublicKeyKeyEncryptionMethodGenera
 import org.bouncycastle.openpgp.operator.jcajce.JcaPGPContentSignerBuilder;
 import org.bouncycastle.openpgp.operator.jcajce.JcePBEKeyEncryptionMethodGenerator;
 import org.bouncycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoExtension;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -66,12 +66,12 @@ import java.util.UUID;
 
 import static org.hamcrest.CoreMatchers.hasItem;
 import static org.hamcrest.CoreMatchers.isA;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
 
-@RunWith(MockitoJUnitRunner.class)
+@ExtendWith(MockitoExtension.class)
 public class DecryptContentPGPTest {
     private static final int ENCRYPTION_ALGORITHM = SymmetricKeyAlgorithmTags.AES_256;
 
@@ -112,7 +112,7 @@ public class DecryptContentPGPTest {
     @Mock
     private PGPPrivateKeyService privateKeyService;
 
-    @BeforeClass
+    @BeforeAll
     public static void setKeys() throws Exception {
         rsaSecretKey = PGPSecretKeyGenerator.generateRsaSecretKey(PASSPHRASE.toCharArray());
 
@@ -128,7 +128,7 @@ public class DecryptContentPGPTest {
         }
     }
 
-    @Before
+    @BeforeEach
     public void setRunner() {
         runner = TestRunners.newTestRunner(new DecryptContentPGP());
     }
diff --git a/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-processors/src/test/java/org/apache/nifi/processors/pgp/EncryptContentPGPTest.java b/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-processors/src/test/java/org/apache/nifi/processors/pgp/EncryptContentPGPTest.java
index bb13449..5fb2be7 100644
--- a/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-processors/src/test/java/org/apache/nifi/processors/pgp/EncryptContentPGPTest.java
+++ b/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-processors/src/test/java/org/apache/nifi/processors/pgp/EncryptContentPGPTest.java
@@ -49,12 +49,12 @@ import org.bouncycastle.openpgp.operator.bc.BcPGPDigestCalculatorProvider;
 import org.bouncycastle.openpgp.operator.bc.BcPublicKeyDataDecryptorFactory;
 import org.bouncycastle.openpgp.operator.jcajce.JcePBESecretKeyDecryptorBuilder;
 
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
-import org.mockito.junit.MockitoJUnitRunner;
+import org.mockito.junit.jupiter.MockitoExtension;
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
@@ -63,12 +63,12 @@ import java.util.Optional;
 import java.util.UUID;
 import java.util.stream.StreamSupport;
 
-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.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
 
-@RunWith(MockitoJUnitRunner.class)
+@ExtendWith(MockitoExtension.class)
 public class EncryptContentPGPTest {
     private static final String PASSPHRASE = UUID.randomUUID().toString();
 
@@ -91,7 +91,7 @@ public class EncryptContentPGPTest {
     @Mock
     private PGPPublicKeyService publicKeyService;
 
-    @BeforeClass
+    @BeforeAll
     public static void setKeys() throws Exception {
         rsaSecretKey = PGPSecretKeyGenerator.generateRsaSecretKey(PASSPHRASE.toCharArray());
         final PGPSecretKeyRing dsaElGamalSecretKeyRing = PGPSecretKeyGenerator.generateDsaElGamalSecretKeyRing(PASSPHRASE.toCharArray());
@@ -107,7 +107,7 @@ public class EncryptContentPGPTest {
         }
     }
 
-    @Before
+    @BeforeEach
     public void setRunner() {
         runner = TestRunners.newTestRunner(new EncryptContentPGP());
     }
@@ -248,7 +248,7 @@ public class EncryptContentPGPTest {
         final Optional<PGPEncryptedData> encryptedData = StreamSupport.stream(encryptedDataList.spliterator(), false)
                 .filter(pgpEncryptedData -> pgpEncryptedData instanceof PGPPublicKeyEncryptedData)
                 .findFirst();
-        assertTrue("Public Key Encrypted Data not found", encryptedData.isPresent());
+        assertTrue(encryptedData.isPresent(), "Public Key Encrypted Data not found");
 
         final PGPPublicKeyEncryptedData publicKeyEncryptedData = (PGPPublicKeyEncryptedData) encryptedData.get();
         final String decryptedData = getDecryptedData(publicKeyEncryptedData, privateKey);
@@ -264,7 +264,7 @@ public class EncryptContentPGPTest {
         final Optional<PGPEncryptedData> encryptedData = StreamSupport.stream(encryptedDataList.spliterator(), false)
                 .filter(pgpEncryptedData -> pgpEncryptedData instanceof PGPPBEEncryptedData)
                 .findFirst();
-        assertTrue("Password Based Encrypted Data not found", encryptedData.isPresent());
+        assertTrue(encryptedData.isPresent(), "Password Based Encrypted Data not found");
 
         final PGPPBEEncryptedData passwordBasedEncryptedData = (PGPPBEEncryptedData) encryptedData.get();
         final String decryptedData = getDecryptedData(passwordBasedEncryptedData, passphrase);
diff --git a/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-service/src/test/java/org/apche/nifi/pgp/service/standard/StandardPGPPrivateKeyServiceTest.java b/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-service/src/test/java/org/apche/nifi/pgp/service/standard/StandardPGPPrivateKeyServiceTest.java
index 78d7fb2..fee6b03 100644
--- a/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-service/src/test/java/org/apche/nifi/pgp/service/standard/StandardPGPPrivateKeyServiceTest.java
+++ b/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-service/src/test/java/org/apche/nifi/pgp/service/standard/StandardPGPPrivateKeyServiceTest.java
@@ -27,17 +27,17 @@ import org.bouncycastle.openpgp.PGPPrivateKey;
 import org.bouncycastle.openpgp.PGPSecretKey;
 
 import org.bouncycastle.openpgp.PGPSecretKeyRing;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.nio.charset.StandardCharsets;
 import java.util.Optional;
 import java.util.UUID;
 
-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 StandardPGPPrivateKeyServiceTest {
@@ -61,7 +61,7 @@ public class StandardPGPPrivateKeyServiceTest {
 
     private TestRunner runner;
 
-    @BeforeClass
+    @BeforeAll
     public static void setKey() throws Exception {
         rsaSecretKey = PGPSecretKeyGenerator.generateRsaSecretKey(KEY_ENCRYPTION_PASSWORD.toCharArray());
 
@@ -75,7 +75,7 @@ public class StandardPGPPrivateKeyServiceTest {
         elGamalKeyringAscii = PGPFileUtils.getArmored(elGamalKeyring.getEncoded());
     }
 
-    @Before
+    @BeforeEach
     public void setService() {
         service = new StandardPGPPrivateKeyService();
         final Processor processor = mock(Processor.class);
diff --git a/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-service/src/test/java/org/apche/nifi/pgp/service/standard/StandardPGPPublicKeyServiceTest.java b/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-service/src/test/java/org/apche/nifi/pgp/service/standard/StandardPGPPublicKeyServiceTest.java
index 0709353..a0a6f76 100644
--- a/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-service/src/test/java/org/apche/nifi/pgp/service/standard/StandardPGPPublicKeyServiceTest.java
+++ b/nifi-nar-bundles/nifi-pgp-bundle/nifi-pgp-service/src/test/java/org/apche/nifi/pgp/service/standard/StandardPGPPublicKeyServiceTest.java
@@ -25,18 +25,17 @@ import org.apache.nifi.util.TestRunners;
 
 import org.bouncycastle.openpgp.PGPPublicKey;
 import org.bouncycastle.openpgp.PGPSecretKey;
-
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.File;
 import java.nio.charset.StandardCharsets;
 import java.util.Optional;
 import java.util.UUID;
 
-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 StandardPGPPublicKeyServiceTest {
@@ -56,7 +55,7 @@ public class StandardPGPPublicKeyServiceTest {
 
     private TestRunner runner;
 
-    @BeforeClass
+    @BeforeAll
     public static void setKey() throws Exception {
         rsaSecretKey = PGPSecretKeyGenerator.generateRsaSecretKey(KEY_ENCRYPTION_PASSWORD.toCharArray());
         final PGPPublicKey publicKey = rsaSecretKey.getPublicKey();
@@ -67,7 +66,7 @@ public class StandardPGPPublicKeyServiceTest {
         keyringFileBinary = PGPFileUtils.getKeyFile(publicKeyEncoded);
     }
 
-    @Before
+    @BeforeEach
     public void setService() {
         service = new StandardPGPPublicKeyService();
         final Processor processor = mock(Processor.class);
diff --git a/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/test/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessorTest.java b/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/test/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessorTest.java
index a96b87d..be4c58a 100644
--- a/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/test/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessorTest.java
+++ b/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/test/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessorTest.java
@@ -16,10 +16,9 @@
  */
 package org.apache.nifi.processors.poi;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
 import java.io.File;
+import java.io.IOException;
+import java.net.URL;
 import java.text.DecimalFormatSymbols;
 import java.time.LocalDateTime;
 import java.time.format.DateTimeFormatter;
@@ -27,40 +26,38 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang3.SystemUtils;
 import org.apache.nifi.csv.CSVUtils;
 import org.apache.nifi.flowfile.attributes.CoreAttributes;
 import org.apache.nifi.util.LogMessage;
 import org.apache.nifi.util.MockFlowFile;
 import org.apache.nifi.util.TestRunner;
 import org.apache.nifi.util.TestRunners;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.Assume;
-import org.junit.BeforeClass;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class ConvertExcelToCSVProcessorTest {
 
     private TestRunner testRunner;
 
-    @BeforeClass
-    public static void setupClass() {
-        Assume.assumeTrue("Test only runs on *nix", !SystemUtils.IS_OS_WINDOWS);
-    }
-
-    @Before
+    @BeforeEach
     public void init() {
         testRunner = TestRunners.newTestRunner(ConvertExcelToCSVProcessor.class);
     }
 
     @Test
-    public void testMultipleSheetsGeneratesMultipleFlowFiles() throws Exception {
+    public void testMultipleSheetsGeneratesMultipleFlowFiles() throws IOException {
 
-        Map<String, String> attributes = new HashMap<String, String>();
+        Map<String, String> attributes = new HashMap<>();
         attributes.put("test", "attribute");
 
-        testRunner.enqueue(new File("src/test/resources/TwoSheets.xlsx").toPath(), attributes);
+        final URL resourceUrl = getClass().getResource("/TwoSheets.xlsx");
+        assertNotNull(resourceUrl);
+
+        testRunner.enqueue(new File(resourceUrl.getPath()).toPath(), attributes);
         testRunner.run();
 
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.SUCCESS, 2);
@@ -68,30 +65,30 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ffSheetA = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheetA = new Long(ffSheetA.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheetA == 4l);
+        long rowsSheetA = Long.parseLong(ffSheetA.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(4, rowsSheetA);
         assertTrue(ffSheetA.getAttribute(ConvertExcelToCSVProcessor.SHEET_NAME).equalsIgnoreCase("TestSheetA"));
-        assertTrue(ffSheetA.getAttribute(ConvertExcelToCSVProcessor.SOURCE_FILE_NAME).equals("TwoSheets.xlsx"));
+        assertEquals("TwoSheets.xlsx", ffSheetA.getAttribute(ConvertExcelToCSVProcessor.SOURCE_FILE_NAME));
 
         //Since TestRunner.run() will create a random filename even if the attribute is set in enqueue manually we just check that "_{SHEETNAME}.csv is present
         assertTrue(ffSheetA.getAttribute(CoreAttributes.FILENAME.key()).endsWith("_TestSheetA.csv"));
-        assertTrue(ffSheetA.getAttribute("test").equals("attribute"));
+        assertEquals("attribute", ffSheetA.getAttribute("test"));
 
         MockFlowFile ffSheetB = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(1);
-        Long rowsSheetB = new Long(ffSheetB.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheetB == 3l);
+        long rowsSheetB = Long.parseLong(ffSheetB.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(3, rowsSheetB);
         assertTrue(ffSheetB.getAttribute(ConvertExcelToCSVProcessor.SHEET_NAME).equalsIgnoreCase("TestSheetB"));
-        assertTrue(ffSheetB.getAttribute(ConvertExcelToCSVProcessor.SOURCE_FILE_NAME).equals("TwoSheets.xlsx"));
+        assertEquals("TwoSheets.xlsx", ffSheetB.getAttribute(ConvertExcelToCSVProcessor.SOURCE_FILE_NAME));
 
         //Since TestRunner.run() will create a random filename even if the attribute is set in enqueue manually we just check that "_{SHEETNAME}.csv is present
         assertTrue(ffSheetB.getAttribute(CoreAttributes.FILENAME.key()).endsWith("_TestSheetB.csv"));
-        assertTrue(ffSheetB.getAttribute("test").equals("attribute"));
+        assertEquals("attribute", ffSheetB.getAttribute("test"));
 
     }
 
     @Test
-    public void testDataFormatting() throws Exception {
-        testRunner.enqueue(new File("src/test/resources/dataformatting.xlsx").toPath());
+    public void testDataFormatting() {
+        testRunner.enqueue(getClass().getResourceAsStream("/dataformatting.xlsx"));
 
         testRunner.setProperty(ConvertExcelToCSVProcessor.FORMAT_VALUES, "false");
 
@@ -102,8 +99,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheet == 9);
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(9, rowsSheet);
 
         ff.assertContentEquals("Numbers,Timestamps,Money\n" +
                 "1234.4559999999999,42736.5,123.45\n" +
@@ -117,8 +114,8 @@ public class ConvertExcelToCSVProcessorTest {
     }
 
     @Test
-    public void testQuoting() throws Exception {
-        testRunner.enqueue(new File("src/test/resources/dataformatting.xlsx").toPath());
+    public void testQuoting() {
+        testRunner.enqueue(getClass().getResourceAsStream("/dataformatting.xlsx"));
 
         testRunner.setProperty(CSVUtils.QUOTE_MODE, CSVUtils.QUOTE_MINIMAL);
         testRunner.setProperty(ConvertExcelToCSVProcessor.FORMAT_VALUES, "true");
@@ -130,8 +127,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheet == 9);
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(9, rowsSheet);
 
         LocalDateTime localDt = LocalDateTime.of(2017, 1, 1, 12, 0, 0);
         DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
@@ -163,8 +160,8 @@ public class ConvertExcelToCSVProcessorTest {
     }
 
     @Test
-    public void testSkipRows() throws Exception {
-        testRunner.enqueue(new File("src/test/resources/dataformatting.xlsx").toPath());
+    public void testSkipRows() {
+        testRunner.enqueue(getClass().getResourceAsStream("/dataformatting.xlsx"));
 
         testRunner.setProperty(ConvertExcelToCSVProcessor.ROWS_TO_SKIP, "2");
         testRunner.setProperty(ConvertExcelToCSVProcessor.FORMAT_VALUES, "true");
@@ -176,8 +173,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertEquals("Row count does match expected value.", "7", rowsSheet.toString());
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(7, rowsSheet, "Row count does match expected value.");
 
         LocalDateTime localDt = LocalDateTime.of(2017, 1, 1, 12, 0, 0);
         DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
@@ -193,10 +190,10 @@ public class ConvertExcelToCSVProcessorTest {
     }
 
     @Test
-    public void testSkipRowsWithEL() throws Exception {
-        Map<String, String> attributes = new HashMap<String, String>();
+    public void testSkipRowsWithEL() {
+        Map<String, String> attributes = new HashMap<>();
         attributes.put("rowsToSkip", "2");
-        testRunner.enqueue(new File("src/test/resources/dataformatting.xlsx").toPath(), attributes);
+        testRunner.enqueue(getClass().getResourceAsStream("/dataformatting.xlsx"), attributes);
 
         testRunner.setProperty(ConvertExcelToCSVProcessor.ROWS_TO_SKIP, "${rowsToSkip}");
         testRunner.setProperty(ConvertExcelToCSVProcessor.FORMAT_VALUES, "true");
@@ -208,8 +205,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertEquals("Row count does match expected value.", "7", rowsSheet.toString());
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(7, rowsSheet, "Row count does match expected value.");
 
         LocalDateTime localDt = LocalDateTime.of(2017, 1, 1, 12, 0, 0);
         DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
@@ -238,8 +235,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheet == 9);
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(9, rowsSheet);
 
         DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
         String decimalSeparator = decimalFormatSymbols.getDecimalSeparator() == ',' ? "\\,"  : String.valueOf(decimalFormatSymbols.getDecimalSeparator());
@@ -257,7 +254,7 @@ public class ConvertExcelToCSVProcessorTest {
 
     @Test
     public void testSkipColumnsWithEL() throws Exception {
-        Map<String, String> attributes = new HashMap<String, String>();
+        Map<String, String> attributes = new HashMap<>();
         attributes.put("columnsToSkip", "2");
         testRunner.enqueue(new File("src/test/resources/dataformatting.xlsx").toPath(), attributes);
 
@@ -271,8 +268,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheet == 9);
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(9, rowsSheet);
 
         DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
         String decimalSeparator = decimalFormatSymbols.getDecimalSeparator() == ',' ? "\\,"  : String.valueOf(decimalFormatSymbols.getDecimalSeparator());
@@ -303,8 +300,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheet == 9);
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(9, rowsSheet);
 
         LocalDateTime localDt = LocalDateTime.of(2017, 1, 1, 12, 0, 0);
         DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
@@ -326,7 +323,7 @@ public class ConvertExcelToCSVProcessorTest {
 
     @Test
     public void testCustomValueSeparatorWithEL() throws Exception {
-        Map<String, String> attributes = new HashMap<String, String>();
+        Map<String, String> attributes = new HashMap<>();
         attributes.put("csv.delimiter", "|");
         testRunner.enqueue(new File("src/test/resources/dataformatting.xlsx").toPath(), attributes);
 
@@ -340,8 +337,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheet == 9);
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(9, rowsSheet);
 
         LocalDateTime localDt = LocalDateTime.of(2017, 1, 1, 12, 0, 0);
         DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
@@ -363,7 +360,7 @@ public class ConvertExcelToCSVProcessorTest {
 
     @Test
     public void testCustomQuoteCharWithEL() throws Exception {
-        Map<String, String> attributes = new HashMap<String, String>();
+        Map<String, String> attributes = new HashMap<>();
         attributes.put("csv.quote", "'");
         testRunner.enqueue(new File("src/test/resources/dataformatting.xlsx").toPath(), attributes);
 
@@ -378,8 +375,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheet == 9);
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(9, rowsSheet);
 
         LocalDateTime localDt = LocalDateTime.of(2017, 1, 1, 12, 0, 0);
         String quoteCharValue = testRunner.getProcessContext().getProperty(CSVUtils.QUOTE_CHAR).evaluateAttributeExpressions(ff).getValue();
@@ -387,31 +384,31 @@ public class ConvertExcelToCSVProcessorTest {
         char decimalSeparator = decimalFormatSymbols.getDecimalSeparator();
         char groupingSeparator = decimalFormatSymbols.getGroupingSeparator();
         ff.assertContentEquals(("'Numbers','Timestamps','Money'\n" +
-                addQuotingIfNeeded(String.format("1234%1$s456", decimalSeparator), ",", quoteCharValue, true) + "," + quoteCharValue +
+                addQuotingIfNeeded(String.format("1234%1$s456", decimalSeparator), quoteCharValue, true) + "," + quoteCharValue +
                     DateTimeFormatter.ofPattern("d/M/yy").format(localDt) + quoteCharValue + "," +
-                    addQuotingIfNeeded(String.format("$   123%1$s45", decimalSeparator), ",", quoteCharValue, true) + "\n" +
-                addQuotingIfNeeded(String.format("1234%1$s46", decimalSeparator), ",", quoteCharValue, true) + "," + quoteCharValue +
+                    addQuotingIfNeeded(String.format("$   123%1$s45", decimalSeparator), quoteCharValue, true) + "\n" +
+                addQuotingIfNeeded(String.format("1234%1$s46", decimalSeparator), quoteCharValue, true) + "," + quoteCharValue +
                     DateTimeFormatter.ofPattern("hh:mm:ss a").format(localDt) + quoteCharValue + "," +
-                    addQuotingIfNeeded(String.format("£   123%1$s45", decimalSeparator), ",", quoteCharValue, true) + "\n" +
-                addQuotingIfNeeded(String.format("1234%1$s5", decimalSeparator), ",", quoteCharValue, true) + "," + quoteCharValue +
+                    addQuotingIfNeeded(String.format("£   123%1$s45", decimalSeparator), quoteCharValue, true) + "\n" +
+                addQuotingIfNeeded(String.format("1234%1$s5", decimalSeparator), quoteCharValue, true) + "," + quoteCharValue +
                     DateTimeFormatter.ofPattern("EEEE, MMMM dd, yyyy").format(localDt) + quoteCharValue + "," +
-                    addQuotingIfNeeded(String.format("¥   123%1$s45", decimalSeparator), ",", quoteCharValue, true) + "\n" +
-                addQuotingIfNeeded(String.format("1%2$s234%1$s46", decimalSeparator, groupingSeparator), ",", quoteCharValue, true) + "," + quoteCharValue +
+                    addQuotingIfNeeded(String.format("¥   123%1$s45", decimalSeparator), quoteCharValue, true) + "\n" +
+                addQuotingIfNeeded(String.format("1%2$s234%1$s46", decimalSeparator, groupingSeparator), quoteCharValue, true) + "," + quoteCharValue +
                     DateTimeFormatter.ofPattern("d/M/yy HH:mm").format(localDt) + quoteCharValue + "," +
-                    addQuotingIfNeeded(String.format("$   1%2$s023%1$s45", decimalSeparator, groupingSeparator), ",", quoteCharValue, true) + "\n" +
-                addQuotingIfNeeded(String.format("1%2$s234%1$s4560", decimalSeparator, groupingSeparator), ",", quoteCharValue, true) + "," + quoteCharValue +
+                    addQuotingIfNeeded(String.format("$   1%2$s023%1$s45", decimalSeparator, groupingSeparator), quoteCharValue, true) + "\n" +
+                addQuotingIfNeeded(String.format("1%2$s234%1$s4560", decimalSeparator, groupingSeparator), quoteCharValue, true) + "," + quoteCharValue +
                     DateTimeFormatter.ofPattern("hh:mm a").format(localDt) + quoteCharValue + "," +
-                    addQuotingIfNeeded(String.format("£   1%2$s023%1$s45", decimalSeparator, groupingSeparator), ",", quoteCharValue, true) + "\n" +
-                addQuotingIfNeeded(String.format("9%1$s88E+08", decimalSeparator), ",", quoteCharValue, true) + "," + quoteCharValue +
+                    addQuotingIfNeeded(String.format("£   1%2$s023%1$s45", decimalSeparator, groupingSeparator), quoteCharValue, true) + "\n" +
+                addQuotingIfNeeded(String.format("9%1$s88E+08", decimalSeparator), quoteCharValue, true) + "," + quoteCharValue +
                     DateTimeFormatter.ofPattern("yyyy/MM/dd/ HH:mm").format(localDt) + quoteCharValue + "," +
-                    addQuotingIfNeeded(String.format("¥   1%2$s023%1$s45", decimalSeparator, groupingSeparator), ",", quoteCharValue, true) + "\n" +
-                addQuotingIfNeeded(String.format("9%1$s877E+08", decimalSeparator), ",", quoteCharValue, true) + ",,\n" +
-                addQuotingIfNeeded(String.format("9%1$s8765E+08", decimalSeparator), ",", quoteCharValue, true) + ",,\n").replace("E+", getExponentSeparator(decimalFormatSymbols)));
+                    addQuotingIfNeeded(String.format("¥   1%2$s023%1$s45", decimalSeparator, groupingSeparator), quoteCharValue, true) + "\n" +
+                addQuotingIfNeeded(String.format("9%1$s877E+08", decimalSeparator), quoteCharValue, true) + ",,\n" +
+                addQuotingIfNeeded(String.format("9%1$s8765E+08", decimalSeparator), quoteCharValue, true) + ",,\n").replace("E+", getExponentSeparator(decimalFormatSymbols)));
     }
 
     @Test
     public void testCustomEscapeCharWithEL() throws Exception {
-        Map<String, String> attributes = new HashMap<String, String>();
+        Map<String, String> attributes = new HashMap<>();
         attributes.put("csv.escape", "^");
         testRunner.enqueue(new File("src/test/resources/dataformatting.xlsx").toPath(), attributes);
 
@@ -425,8 +422,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long rowsSheet = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(rowsSheet == 9);
+        long rowsSheet = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(9, rowsSheet);
 
         LocalDateTime localDt = LocalDateTime.of(2017, 1, 1, 12, 0, 0);
         DecimalFormatSymbols decimalFormatSymbols = DecimalFormatSymbols.getInstance();
@@ -463,8 +460,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long l = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(l == 10l);
+        long l = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(10, l);
 
         testRunner.clearProvenanceEvents();
         testRunner.clearTransferState();
@@ -477,12 +474,12 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        l = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(l == 4l);
+        l = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(4, l);
 
         ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(1);
-        l = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(l == 3l);
+        l = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(3, l);
     }
 
     /**
@@ -503,8 +500,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long l = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(l == 10l);
+        long l = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(10, l);
     }
 
     /**
@@ -544,8 +541,8 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
 
         MockFlowFile ff = testRunner.getFlowFilesForRelationship(ConvertExcelToCSVProcessor.SUCCESS).get(0);
-        Long l = new Long(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
-        assertTrue(l == 8l);
+        long l = Long.parseLong(ff.getAttribute(ConvertExcelToCSVProcessor.ROW_NUM));
+        assertEquals(8, l);
 
         ff.assertContentEquals(new File("src/test/resources/with-blank-cells.csv"));
     }
@@ -564,24 +561,16 @@ public class ConvertExcelToCSVProcessorTest {
         testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 1);
 
         List<LogMessage> errorMessages = testRunner.getLogger().getErrorMessages();
-        Assert.assertEquals(1, errorMessages.size());
+        assertEquals(1, errorMessages.size());
         String messageText = errorMessages.get(0).getMsg();
-        Assert.assertTrue(messageText.contains("Excel") && messageText.contains("OLE2"));
+        assertTrue(messageText.contains("Excel") && messageText.contains("OLE2"));
     }
 
     private String addQuotingIfNeeded(String csvField) {
-        return addQuotingIfNeeded(csvField, ",");
-    }
-
-    private String addQuotingIfNeeded(String csvField, String csvSeparator) {
-        return addQuotingIfNeeded(csvField, csvSeparator, "\"");
-    }
-
-    private String addQuotingIfNeeded(String csvField, String csvSeparator, String csvQuote) {
-        return addQuotingIfNeeded(csvField, csvSeparator, csvQuote, false);
+        return addQuotingIfNeeded(csvField, "\"", false);
     }
 
-    private String addQuotingIfNeeded(String csvField, String csvSeparator, String csvQuote, boolean force) {
-        return csvField.contains(csvSeparator) || force ? String.format("%2$s%1$s%2$s", csvField, csvQuote) : csvField;
+    private String addQuotingIfNeeded(String csvField, String csvQuote, boolean force) {
+        return csvField.contains(",") || force ? String.format("%2$s%1$s%2$s", csvField, csvQuote) : csvField;
     }
 }
\ No newline at end of file
diff --git a/nifi-nar-bundles/nifi-prometheus-bundle/nifi-prometheus-reporting-task/src/test/java/org/apache/nifi/reporting/prometheus/PrometheusReportingTaskIT.java b/nifi-nar-bundles/nifi-prometheus-bundle/nifi-prometheus-reporting-task/src/test/java/org/apache/nifi/reporting/prometheus/PrometheusReportingTaskIT.java
index a23bd30c..80cc934 100644
--- a/nifi-nar-bundles/nifi-prometheus-bundle/nifi-prometheus-reporting-task/src/test/java/org/apache/nifi/reporting/prometheus/PrometheusReportingTaskIT.java
+++ b/nifi-nar-bundles/nifi-prometheus-bundle/nifi-prometheus-reporting-task/src/test/java/org/apache/nifi/reporting/prometheus/PrometheusReportingTaskIT.java
@@ -34,9 +34,8 @@ import org.apache.nifi.util.MockConfigurationContext;
 import org.apache.nifi.util.MockReportingContext;
 import org.apache.nifi.util.MockReportingInitializationContext;
 import org.apache.nifi.util.MockVariableRegistry;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.net.HttpURLConnection;
@@ -45,7 +44,10 @@ import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertTrue;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.fail;
 
 public class PrometheusReportingTaskIT {
     private static final String TEST_INIT_CONTEXT_ID = "test-init-context-id";
@@ -57,7 +59,7 @@ public class PrometheusReportingTaskIT {
     private PrometheusReportingTask testedReportingTask;
     private ProcessGroupStatus rootGroupStatus;
 
-    @Before
+    @BeforeEach
     public void setup() {
         testedReportingTask = new PrometheusReportingTask();
         rootGroupStatus = new ProcessGroupStatus();
@@ -123,30 +125,30 @@ public class PrometheusReportingTaskIT {
     }
 
     @Test
-    public void testOnTrigger() throws IOException, InterruptedException, InitializationException {
+    public void testOnTrigger() throws IOException, InitializationException {
         testedReportingTask.initialize(reportingInitContextStub);
         testedReportingTask.onScheduled(configurationContextStub);
         reportingContextStub.getEventAccess().setProcessGroupStatus(rootGroupStatus);
         testedReportingTask.onTrigger(reportingContextStub);
 
         String content = getMetrics();
-        Assert.assertTrue(content.contains(
+        assertTrue(content.contains(
                 "nifi_amount_flowfiles_received{instance=\"localhost\",component_type=\"RootProcessGroup\",component_name=\"root\",component_id=\"1234\",parent_id=\"\",} 5.0"));
-        Assert.assertTrue(content.contains(
+        assertTrue(content.contains(
                 "nifi_amount_threads_active{instance=\"localhost\",component_type=\"RootProcessGroup\",component_name=\"root\",component_id=\"1234\",parent_id=\"\",} 5.0"));
-        Assert.assertTrue(content.contains(
+        assertTrue(content.contains(
                 "nifi_amount_threads_active{instance=\"localhost\",component_type=\"ProcessGroup\",component_name=\"nestedPG\",component_id=\"3378\",parent_id=\"1234\",} 2.0"));
 
         // Rename the component
         rootGroupStatus.setName("rootroot");
         content = getMetrics();
-        Assert.assertFalse(content.contains(
+        assertFalse(content.contains(
                 "nifi_amount_flowfiles_received{instance=\"localhost\",component_type=\"RootProcessGroup\",component_name=\"root\",component_id=\"1234\",parent_id=\"\",} 5.0"));
-        Assert.assertFalse(content.contains(
+        assertFalse(content.contains(
                 "nifi_amount_threads_active{instance=\"localhost\",component_type=\"RootProcessGroup\",component_name=\"root\",component_id=\"1234\",parent_id=\"\",} 5.0"));
-        Assert.assertTrue(content.contains(
+        assertTrue(content.contains(
                 "nifi_amount_flowfiles_received{instance=\"localhost\",component_type=\"RootProcessGroup\",component_name=\"rootroot\",component_id=\"1234\",parent_id=\"\",} 5.0"));
-        Assert.assertTrue(content.contains(
+        assertTrue(content.contains(
                 "nifi_amount_threads_active{instance=\"localhost\",component_type=\"RootProcessGroup\",component_name=\"rootroot\",component_id=\"1234\",parent_id=\"\",} 5.0"));
         try {
             testedReportingTask.OnStopped();
@@ -160,7 +162,7 @@ public class PrometheusReportingTaskIT {
         HttpURLConnection con = (HttpURLConnection) url.openConnection();
         con.setRequestMethod("GET");
         int status = con.getResponseCode();
-        Assert.assertEquals(HttpURLConnection.HTTP_OK, status);
+        assertEquals(HttpURLConnection.HTTP_OK, status);
 
         HttpClient client = HttpClientBuilder.create().build();
         HttpGet request = new HttpGet("http://localhost:9092/metrics");
@@ -178,7 +180,7 @@ public class PrometheusReportingTaskIT {
         testedReportingTask.onTrigger(reportingContextStub);
 
         String content = getMetrics();
-        Assert.assertTrue(content.contains("parent_id=\"\""));
+        assertTrue(content.contains("parent_id=\"\""));
 
         try {
             testedReportingTask.OnStopped();
@@ -188,7 +190,7 @@ public class PrometheusReportingTaskIT {
     }
 
     @Test
-    public void testTwoInstances() throws IOException, InterruptedException, InitializationException {
+    public void testTwoInstances() throws InitializationException {
         testedReportingTask.initialize(reportingInitContextStub);
         testedReportingTask.onScheduled(configurationContextStub);
         PrometheusReportingTask testedReportingTask2 = new PrometheusReportingTask();
diff --git a/nifi-nar-bundles/nifi-prometheus-bundle/nifi-prometheus-reporting-task/src/test/java/org/apache/nifi/reporting/prometheus/TestPrometheusRecordSink.java b/nifi-nar-bundles/nifi-prometheus-bundle/nifi-prometheus-reporting-task/src/test/java/org/apache/nifi/reporting/prometheus/TestPrometheusRecordSink.java
index ca7fdc4..d2db516 100644
--- a/nifi-nar-bundles/nifi-prometheus-bundle/nifi-prometheus-reporting-task/src/test/java/org/apache/nifi/reporting/prometheus/TestPrometheusRecordSink.java
+++ b/nifi-nar-bundles/nifi-prometheus-bundle/nifi-prometheus-reporting-task/src/test/java/org/apache/nifi/reporting/prometheus/TestPrometheusRecordSink.java
@@ -46,8 +46,7 @@ import org.apache.nifi.state.MockStateManager;
 import org.apache.nifi.util.MockControllerServiceInitializationContext;
 import org.apache.nifi.util.MockPropertyValue;
 import org.apache.nifi.util.MockVariableRegistry;
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.math.BigDecimal;
@@ -59,10 +58,10 @@ import java.util.List;
 import java.util.Map;
 import java.util.UUID;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -116,19 +115,10 @@ public class TestPrometheusRecordSink {
     }
 
     @Test
-    public void testTwoInstances() throws InitializationException {
+    public void testTwoInstances() throws Exception {
         PrometheusRecordSink sink1 = initTask();
-        try {
-            PrometheusRecordSink sink2 = initTask();
-            fail("Should have reported Address In Use");
-        } catch (ProcessException pe) {
-            // Do nothing, this is the expected behavior
-        }
-        try {
-            sink1.onStopped();
-        } catch (Exception e) {
-            // Do nothing, just need to shut down the server before the next run
-        }
+        assertThrows(ProcessException.class, this::initTask);
+        sink1.onStopped();
     }
 
     private String getMetrics() throws IOException {
@@ -136,7 +126,7 @@ public class TestPrometheusRecordSink {
         HttpURLConnection con = (HttpURLConnection) url.openConnection();
         con.setRequestMethod("GET");
         int status = con.getResponseCode();
-        Assert.assertEquals(HttpURLConnection.HTTP_OK, status);
+        assertEquals(HttpURLConnection.HTTP_OK, status);
 
         HttpClient client = HttpClientBuilder.create().build();
         HttpGet request = new HttpGet("http://localhost:" + portString + "/metrics");
diff --git a/pom.xml b/pom.xml
index 17dc60e..236bd74 100644
--- a/pom.xml
+++ b/pom.xml
@@ -286,6 +286,11 @@
                 <version>2.28.2</version>
             </dependency>
             <dependency>
+                <groupId>org.mockito</groupId>
+                <artifactId>mockito-junit-jupiter</artifactId>
+                <version>2.28.2</version>
+            </dependency>
+            <dependency>
                 <groupId>org.codehaus.groovy</groupId>
                 <artifactId>groovy-all</artifactId>
                 <version>${nifi.groovy.version}</version>
@@ -483,6 +488,11 @@
             <scope>test</scope>
         </dependency>
         <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-junit-jupiter</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
             <groupId>org.slf4j</groupId>
             <artifactId>slf4j-simple</artifactId>
             <scope>test</scope>