From a6fbc52726e7c41951314cbaf16f78c5c3ed7399 Mon Sep 17 00:00:00 2001 From: Nlstn Date: Sat, 8 Nov 2025 15:04:15 +0100 Subject: [PATCH] Switch tests to JUnit 5 --- pom.xml | 75 ++++++++++++------- .../jmediaOrganizer/HeadlessCliTest.java | 27 +++---- .../processing/FileProcessorTest.java | 48 +++++------- .../processing/PatternTest.java | 14 ++-- .../properties/ConfigurationHandlerTest.java | 45 ++++++----- .../jmediaOrganizer/test/ConverterTest.java | 12 +-- .../nlstn/jmediaOrganizer/test/MainTest.java | 56 +++++++------- 7 files changed, 142 insertions(+), 135 deletions(-) diff --git a/pom.xml b/pom.xml index c6e8298..d090edb 100644 --- a/pom.xml +++ b/pom.xml @@ -12,12 +12,24 @@ http://github.com/nlstn/JMediaOrganizer/tree/master HEAD - - UTF-8 - 21 - ${java.version} - ${java.version} - + + UTF-8 + 21 + ${java.version} + ${java.version} + + + + + + org.junit + junit-bom + 5.9.3 + pom + import + + + com.mpatric @@ -59,19 +71,24 @@ commons-io 2.20.0 - - junit - junit - 4.13.2 - test - + + org.junit.jupiter + junit-jupiter + test + org.apache.tika tika-core 3.2.3 - - + + + + central + https://repo1.maven.org/maven2 + + + src/main/resources @@ -87,10 +104,10 @@ ${java.version} - - org.apache.maven.plugins - maven-dependency-plugin - + + org.apache.maven.plugins + maven-dependency-plugin + copy-dependencies prepare-package @@ -103,10 +120,10 @@ - - org.apache.maven.plugins - maven-assembly-plugin - + + org.apache.maven.plugins + maven-assembly-plugin + package @@ -124,7 +141,15 @@ - - - + + + org.apache.maven.plugins + maven-surefire-plugin + 3.2.5 + + false + + + + \ No newline at end of file diff --git a/src/test/java/com/nlstn/jmediaOrganizer/HeadlessCliTest.java b/src/test/java/com/nlstn/jmediaOrganizer/HeadlessCliTest.java index 181b987..93f6647 100644 --- a/src/test/java/com/nlstn/jmediaOrganizer/HeadlessCliTest.java +++ b/src/test/java/com/nlstn/jmediaOrganizer/HeadlessCliTest.java @@ -1,25 +1,23 @@ package com.nlstn.jmediaOrganizer; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; -import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; import java.util.concurrent.atomic.AtomicBoolean; -import org.junit.After; -import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; -public class HeadlessCliTest { +class HeadlessCliTest { - @After - public void resetFactory() { + @AfterEach + void resetFactory() { JMediaOrganizer.resetHeadlessHandlerFactory(); } @Test - public void mainInvokesHeadlessHandlerWhenHeadlessFlagPresent() throws IOException { - Path tempDir = Files.createTempDirectory("jmediaOrganizerHeadlessTest"); + void mainInvokesHeadlessHandlerWhenHeadlessFlagPresent(@TempDir Path tempDir) { AtomicBoolean invoked = new AtomicBoolean(false); JMediaOrganizer.setHeadlessHandlerFactory(() -> new HeadlessHandler() { @@ -29,13 +27,8 @@ public void run() { } }); - try { - JMediaOrganizer.main(new String[] { "-h", "-i", tempDir.toString() }); - } - finally { - Files.deleteIfExists(tempDir); - } + JMediaOrganizer.main(new String[] { "-h", "-i", tempDir.toString() }); - assertTrue("Headless handler should be invoked when -h flag is used", invoked.get()); + assertTrue(invoked.get(), "Headless handler should be invoked when -h flag is used"); } } diff --git a/src/test/java/com/nlstn/jmediaOrganizer/processing/FileProcessorTest.java b/src/test/java/com/nlstn/jmediaOrganizer/processing/FileProcessorTest.java index be07de0..c2cade0 100644 --- a/src/test/java/com/nlstn/jmediaOrganizer/processing/FileProcessorTest.java +++ b/src/test/java/com/nlstn/jmediaOrganizer/processing/FileProcessorTest.java @@ -1,59 +1,51 @@ package com.nlstn.jmediaOrganizer.processing; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertTrue; -import java.io.File; -import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; -import java.util.Comparator; -import org.junit.After; -import org.junit.Before; -import org.junit.BeforeClass; -import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; import com.nlstn.jmediaOrganizer.JMediaOrganizer; import com.nlstn.jmediaOrganizer.properties.Settings; -public class FileProcessorTest { +class FileProcessorTest { - private Path inputDirectory; + @TempDir + static Path settingsDirectory; - @BeforeClass - public static void setupSettings() throws IOException { - Path settingsDirectory = Files.createTempDirectory("jmedia-settings"); + @TempDir + Path inputDirectory; + + @BeforeAll + static void setupSettings() { System.setProperty("jmediaOrganizer.home", settingsDirectory.toString()); Settings.loadSettings(); Settings.setThreadCount(2); } - @Before - public void setup() throws IOException { - inputDirectory = Files.createTempDirectory("jmedia-empty-input"); + @BeforeEach + void setup() { JMediaOrganizer.setInputFolder(inputDirectory.toFile()); FileProcessor.loadAllFiles(); } - @After - public void tearDown() throws IOException { + @AfterEach + void tearDown() { JMediaOrganizer.setInputFolder(null); - if (inputDirectory != null) { - try (var paths = Files.walk(inputDirectory)) { - paths.sorted(Comparator.reverseOrder()) - .map(Path::toFile) - .forEach(File::delete); - } - } } @Test - public void getConversionPreviewReturnsEmptyListWhenNoFilesPresent() { + void getConversionPreviewReturnsEmptyListWhenNoFilesPresent() { assertTrue(FileProcessor.getConversionPreview().isEmpty()); } @Test - public void convertFilesSucceedsWhenNoFilesPresent() { + void convertFilesSucceedsWhenNoFilesPresent() { assertTrue(FileProcessor.convertFiles()); } } diff --git a/src/test/java/com/nlstn/jmediaOrganizer/processing/PatternTest.java b/src/test/java/com/nlstn/jmediaOrganizer/processing/PatternTest.java index 16b10b3..9d0c764 100644 --- a/src/test/java/com/nlstn/jmediaOrganizer/processing/PatternTest.java +++ b/src/test/java/com/nlstn/jmediaOrganizer/processing/PatternTest.java @@ -1,18 +1,18 @@ package com.nlstn.jmediaOrganizer.processing; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertSame; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertSame; import java.util.List; import java.util.stream.Collectors; -import org.junit.Test; +import org.junit.jupiter.api.Test; -public class PatternTest { +class PatternTest { @Test - public void getUsedVariablesFiltersUnknownPlaceholder() { + void getUsedVariablesFiltersUnknownPlaceholder() { Pattern pattern = new Pattern("%artist%-%unknown%-%title%"); List usedVariables = pattern.getUsedVariables(); @@ -26,7 +26,7 @@ public void getUsedVariablesFiltersUnknownPlaceholder() { } @Test - public void getUsedVariablesCachesAfterFirstAccess() { + void getUsedVariablesCachesAfterFirstAccess() { Pattern pattern = new Pattern("%artist%"); List firstCall = pattern.getUsedVariables(); diff --git a/src/test/java/com/nlstn/jmediaOrganizer/properties/ConfigurationHandlerTest.java b/src/test/java/com/nlstn/jmediaOrganizer/properties/ConfigurationHandlerTest.java index 9ddb033..b080aab 100644 --- a/src/test/java/com/nlstn/jmediaOrganizer/properties/ConfigurationHandlerTest.java +++ b/src/test/java/com/nlstn/jmediaOrganizer/properties/ConfigurationHandlerTest.java @@ -1,49 +1,46 @@ package com.nlstn.jmediaOrganizer.properties; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; -import java.io.File; -import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import org.junit.After; -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; -public class ConfigurationHandlerTest { +class ConfigurationHandlerTest { - @Rule - public TemporaryFolder temporaryFolder = new TemporaryFolder(); + @TempDir + Path temporaryFolder; private String previousHome; - @Before - public void rememberHomeProperty() { + @BeforeEach + void rememberHomeProperty() { previousHome = System.getProperty("jmediaOrganizer.home"); } - @After - public void restoreHomeProperty() { - if (previousHome != null) + @AfterEach + void restoreHomeProperty() { + if (previousHome != null) { System.setProperty("jmediaOrganizer.home", previousHome); - else + } else { System.clearProperty("jmediaOrganizer.home"); + } } @Test - public void loadsConfigurationWhenHomeUsesUnixSeparators() throws IOException { - File root = temporaryFolder.getRoot(); - Path customHome = root.toPath().resolve("config-root/nested"); + void loadsConfigurationWhenHomeUsesUnixSeparators() { + Path customHome = temporaryFolder.resolve("config-root").resolve("nested"); System.setProperty("jmediaOrganizer.home", customHome.toString()); ConfigurationHandler handler = new ConfigurationHandler("settings.config"); - assertNotNull("Configuration should be available", handler.getConfig()); - assertTrue("Configuration directory should be created", Files.isDirectory(customHome)); - assertTrue("Configuration file should be copied", Files.exists(customHome.resolve("settings.config"))); + assertNotNull(handler.getConfig(), "Configuration should be available"); + assertTrue(Files.isDirectory(customHome), "Configuration directory should be created"); + assertTrue(Files.exists(customHome.resolve("settings.config")), "Configuration file should be copied"); } } diff --git a/src/test/java/com/nlstn/jmediaOrganizer/test/ConverterTest.java b/src/test/java/com/nlstn/jmediaOrganizer/test/ConverterTest.java index 30860f5..2cea7ad 100644 --- a/src/test/java/com/nlstn/jmediaOrganizer/test/ConverterTest.java +++ b/src/test/java/com/nlstn/jmediaOrganizer/test/ConverterTest.java @@ -1,18 +1,18 @@ package com.nlstn.jmediaOrganizer.test; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; -import org.junit.Test; +import org.junit.jupiter.api.Test; import com.nlstn.jmediaOrganizer.files.MP3File; import com.nlstn.jmediaOrganizer.processing.Converter; import com.nlstn.jmediaOrganizer.processing.Pattern; -public class ConverterTest { +class ConverterTest { @Test - public void patternPlaceholdersAreReplaced() { + void patternPlaceholdersAreReplaced() { MP3File file = new MP3File(); file.setArtist("ArtistName"); file.setAlbum("AlbumName"); @@ -24,6 +24,6 @@ public void patternPlaceholdersAreReplaced() { String result = Converter.getNewPath(file, pattern); assertEquals("ArtistName/AlbumName/01 - SongName (ArtistName)", result); - assertFalse("Result should not contain unresolved placeholders", result.contains("%")); + assertFalse(result.contains("%"), "Result should not contain unresolved placeholders"); } } diff --git a/src/test/java/com/nlstn/jmediaOrganizer/test/MainTest.java b/src/test/java/com/nlstn/jmediaOrganizer/test/MainTest.java index a6501dd..f44f4ad 100644 --- a/src/test/java/com/nlstn/jmediaOrganizer/test/MainTest.java +++ b/src/test/java/com/nlstn/jmediaOrganizer/test/MainTest.java @@ -1,45 +1,45 @@ package com.nlstn.jmediaOrganizer.test; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import java.io.File; import java.util.List; +import org.junit.jupiter.api.Test; + import com.nlstn.jmediaOrganizer.JMediaOrganizer; import com.nlstn.jmediaOrganizer.processing.FileProcessor; import com.nlstn.jmediaOrganizer.properties.Settings; -import org.junit.Test; - /** * Creation: 7 Jan 2018 * * @author Niklas Lahnstein */ -public class MainTest { - - @Test - public void conversionPreviewSyntaxTest() { - // JMediaOrganizer.setInputFolder(new File("./src/test/resources/ConversionPreviewSyntaxTest")); - // Settings.loadSettings(); - // Settings.setID3ToNameEnabled(true); - // Settings.setOutputFolder("D:/TestOutput"); - // Settings.setID3ToNamePattern(new Pattern("%output%/%albumArtist% (%artist%) - %album% (%year%)/%track% - %title% (%bpm%)%extension%")); - // FileProcessor.loadAllFiles(); - // List result = FileProcessor.getConversionPreview(); - // assertEquals("Conversion Preview result should be D:/TestOutput/A Day to Remember (A Day to Remember) - And Their Name Was Treason (2005)/9 - 1958 (-1).mp3!", "D:/TestOutput/A Day to Remember (A Day to Remember) - And Their Name Was Treason (2005)/9 - 1958 (-1).mp3", result.get(0)); - // FileProcessor.clearCurrentFiles(); - } - - @Test - public void conversionPreviewCountTest() { - JMediaOrganizer.setInputFolder(new File("./src/test/resources/ConversionPreviewCountTest")); - Settings.loadSettings(); - Settings.setID3ToNameEnabled(true); - FileProcessor.loadAllFiles(); - List result = FileProcessor.getConversionPreview(); - assertEquals("Conversion Preview count should be 14", 14, result.size()); - FileProcessor.clearCurrentFiles(); - } +class MainTest { + + @Test + void conversionPreviewSyntaxTest() { + // JMediaOrganizer.setInputFolder(new File("./src/test/resources/ConversionPreviewSyntaxTest")); + // Settings.loadSettings(); + // Settings.setID3ToNameEnabled(true); + // Settings.setOutputFolder("D:/TestOutput"); + // Settings.setID3ToNamePattern(new Pattern("%output%/%albumArtist% (%artist%) - %album% (%year%)/%track% - %title% (%bpm%)%extension%")); + // FileProcessor.loadAllFiles(); + // List result = FileProcessor.getConversionPreview(); + // assertEquals("Conversion Preview result should be D:/TestOutput/A Day to Remember (A Day to Remember) - And Their Name Was Treason (2005)/9 - 1958 (-1).mp3!", "D:/TestOutput/A Day to Remember (A Day to Remember) - And Their Name Was Treason (2005)/9 - 1958 (-1).mp3", result.get(0)); + // FileProcessor.clearCurrentFiles(); + } + + @Test + void conversionPreviewCountTest() { + JMediaOrganizer.setInputFolder(new File("./src/test/resources/ConversionPreviewCountTest")); + Settings.loadSettings(); + Settings.setID3ToNameEnabled(true); + FileProcessor.loadAllFiles(); + List result = FileProcessor.getConversionPreview(); + assertEquals("Conversion Preview count should be 14", 14, result.size()); + FileProcessor.clearCurrentFiles(); + } }