From f9be7e62860a56593d25767da010ecb584380049 Mon Sep 17 00:00:00 2001 From: Robin Stocker Date: Wed, 4 Jun 2025 21:52:15 +1000 Subject: [PATCH] Migrate from JUnit 4 to 5 --- pom.xml | 6 +- .../org/nibor/autolink/AutolinkEmailTest.java | 38 +++++----- .../org/nibor/autolink/AutolinkTestCase.java | 3 +- .../org/nibor/autolink/AutolinkUrlTest.java | 75 +++++++++---------- .../org/nibor/autolink/AutolinkWwwTest.java | 39 +++++----- .../org/nibor/autolink/LinkIterableTest.java | 12 +-- .../org/nibor/autolink/SpanIterableTest.java | 12 +-- .../org/nibor/autolink/UsageExampleTest.java | 5 +- 8 files changed, 95 insertions(+), 95 deletions(-) diff --git a/pom.xml b/pom.xml index 6c569a0..3341293 100644 --- a/pom.xml +++ b/pom.xml @@ -20,9 +20,9 @@ - junit - junit - 4.13.1 + org.junit.jupiter + junit-jupiter + 5.13.0 test diff --git a/src/test/java/org/nibor/autolink/AutolinkEmailTest.java b/src/test/java/org/nibor/autolink/AutolinkEmailTest.java index a5a93c5..9004cab 100644 --- a/src/test/java/org/nibor/autolink/AutolinkEmailTest.java +++ b/src/test/java/org/nibor/autolink/AutolinkEmailTest.java @@ -1,35 +1,35 @@ package org.nibor.autolink; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameter; -import org.junit.runners.Parameterized.Parameters; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.Parameter; +import org.junit.jupiter.params.ParameterizedClass; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; -import java.util.Arrays; import java.util.EnumSet; +import java.util.Set; +import java.util.stream.Stream; -@RunWith(Parameterized.class) +import static org.junit.jupiter.params.provider.Arguments.arguments; + +@ParameterizedClass +@MethodSource("data") public class AutolinkEmailTest extends AutolinkTestCase { - @Parameters(name = "{2}") - public static Iterable data() { - return Arrays.asList(new Object[][]{ - {LinkExtractor.builder().linkTypes(EnumSet.of(LinkType.EMAIL)).build(), true, "email"}, - {LinkExtractor.builder().linkTypes(EnumSet.allOf(LinkType.class)).build(), true, "all"}, - {LinkExtractor.builder().emailDomainMustHaveDot(false).build(), false, "all, single part domain"} - }); + public static Stream data() { + return Stream.of( + arguments(EnumSet.of(LinkType.EMAIL), true), + arguments(EnumSet.allOf(LinkType.class), true), + arguments(EnumSet.allOf(LinkType.class), false) + ); } @Parameter(0) - public LinkExtractor linkExtractor; + public Set linkTypes; @Parameter(1) public boolean domainMustHaveDot; - @Parameter(2) - public String description; - @Test public void notLinked() { assertNotLinked(""); @@ -136,7 +136,7 @@ public void replyLevel() { @Override protected LinkExtractor getLinkExtractor() { - return linkExtractor; + return LinkExtractor.builder().linkTypes(linkTypes).emailDomainMustHaveDot(domainMustHaveDot).build(); } private void assertLinked(String input, String expected) { diff --git a/src/test/java/org/nibor/autolink/AutolinkTestCase.java b/src/test/java/org/nibor/autolink/AutolinkTestCase.java index ace5367..ecae3ab 100644 --- a/src/test/java/org/nibor/autolink/AutolinkTestCase.java +++ b/src/test/java/org/nibor/autolink/AutolinkTestCase.java @@ -1,6 +1,7 @@ package org.nibor.autolink; -import static org.junit.Assert.assertEquals; + +import static org.junit.jupiter.api.Assertions.assertEquals; public abstract class AutolinkTestCase { diff --git a/src/test/java/org/nibor/autolink/AutolinkUrlTest.java b/src/test/java/org/nibor/autolink/AutolinkUrlTest.java index ec40c4c..4f20dbc 100644 --- a/src/test/java/org/nibor/autolink/AutolinkUrlTest.java +++ b/src/test/java/org/nibor/autolink/AutolinkUrlTest.java @@ -1,32 +1,31 @@ package org.nibor.autolink; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameter; -import org.junit.runners.Parameterized.Parameters; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.Parameter; +import org.junit.jupiter.params.ParameterizedClass; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; -import java.util.Arrays; import java.util.EnumSet; +import java.util.Set; +import java.util.stream.Stream; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.params.provider.Arguments.arguments; -@RunWith(Parameterized.class) +@ParameterizedClass +@MethodSource("data") public class AutolinkUrlTest extends AutolinkTestCase { - @Parameters(name = "{1}") - public static Iterable data() { - return Arrays.asList(new Object[][]{ - {LinkExtractor.builder().linkTypes(EnumSet.of(LinkType.URL)).build(), "URL"}, - {LinkExtractor.builder().linkTypes(EnumSet.allOf(LinkType.class)).build(), "all"} - }); + public static Stream data() { + return Stream.of( + arguments(EnumSet.of(LinkType.URL)), + arguments(EnumSet.allOf(LinkType.class)) + ); } - @Parameter(0) - public LinkExtractor linkExtractor; - - @Parameter(1) - public String description; + @Parameter + public Set linkTypes; @Test public void notLinked() { @@ -197,24 +196,24 @@ public void international() { @Test public void unicodeWhitespace() { - char[] whitespace = new char[] { - '\u00A0', // no-break space - '\u2000', // en quad - '\u2001', // em quad - '\u2002', // en space - '\u2003', // em space - '\u2004', // three-per-em space - '\u2005', // four-per-em space - '\u2006', // six-per-em space - '\u2007', // figure space - '\u2008', // punctuation space - '\u2009', // thin space - '\u200A', // hair space - '\u2028', // line separator - '\u2029', // paragraph separator - '\u202F', // narrow no-break space - '\u205F', // medium mathematical space - '\u3000', // ideographic space + char[] whitespace = new char[]{ + '\u00A0', // no-break space + '\u2000', // en quad + '\u2001', // em quad + '\u2002', // en space + '\u2003', // em space + '\u2004', // three-per-em space + '\u2005', // four-per-em space + '\u2006', // six-per-em space + '\u2007', // figure space + '\u2008', // punctuation space + '\u2009', // thin space + '\u200A', // hair space + '\u2028', // line separator + '\u2029', // paragraph separator + '\u202F', // narrow no-break space + '\u205F', // medium mathematical space + '\u3000', // ideographic space }; for (char c : whitespace) { @@ -242,7 +241,7 @@ public void linkToString() { @Override protected LinkExtractor getLinkExtractor() { - return linkExtractor; + return LinkExtractor.builder().linkTypes(linkTypes).build(); } protected void assertLinked(String input, String expected) { diff --git a/src/test/java/org/nibor/autolink/AutolinkWwwTest.java b/src/test/java/org/nibor/autolink/AutolinkWwwTest.java index 8453f22..f85a916 100644 --- a/src/test/java/org/nibor/autolink/AutolinkWwwTest.java +++ b/src/test/java/org/nibor/autolink/AutolinkWwwTest.java @@ -1,30 +1,31 @@ package org.nibor.autolink; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameter; -import org.junit.runners.Parameterized.Parameters; -import java.util.Arrays; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.Parameter; +import org.junit.jupiter.params.ParameterizedClass; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + import java.util.EnumSet; +import java.util.Set; +import java.util.stream.Stream; + +import static org.junit.jupiter.params.provider.Arguments.arguments; -@RunWith(Parameterized.class) +@ParameterizedClass +@MethodSource("data") public class AutolinkWwwTest extends AutolinkTestCase { - @Parameters(name = "{1}") - public static Iterable data() { - return Arrays.asList(new Object[][]{ - {LinkExtractor.builder().linkTypes(EnumSet.of(LinkType.WWW)).build(), "WWW"}, - {LinkExtractor.builder().linkTypes(EnumSet.allOf(LinkType.class)).build(), "all"} - }); + public static Stream data() { + return Stream.of( + arguments(EnumSet.of(LinkType.WWW)), + arguments(EnumSet.allOf(LinkType.class)) + ); } - @Parameter(0) - public LinkExtractor linkExtractor; - - @Parameter(1) - public String description; + @Parameter + public Set linkTypes; @Test public void notLinked() { @@ -82,7 +83,7 @@ public void replyLevel() { @Override protected LinkExtractor getLinkExtractor() { - return linkExtractor; + return LinkExtractor.builder().linkTypes(linkTypes).build(); } private void assertLinked(String input, String expected) { diff --git a/src/test/java/org/nibor/autolink/LinkIterableTest.java b/src/test/java/org/nibor/autolink/LinkIterableTest.java index 45fded3..3b3b207 100644 --- a/src/test/java/org/nibor/autolink/LinkIterableTest.java +++ b/src/test/java/org/nibor/autolink/LinkIterableTest.java @@ -1,11 +1,11 @@ package org.nibor.autolink; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.Iterator; import java.util.NoSuchElementException; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; public class LinkIterableTest { @@ -27,18 +27,18 @@ public void hasNextOnlyAdvancesOnce() { assertFalse(iterator.hasNext()); } - @Test(expected = NoSuchElementException.class) + @Test public void nextThrowsNoSuchElementException() { Iterable iterable = getSingleLinkIterable(); Iterator iterator = iterable.iterator(); assertNotNull(iterator.next()); - iterator.next(); + assertThrows(NoSuchElementException.class, iterator::next); } - @Test(expected = UnsupportedOperationException.class) + @Test public void removeUnsupported() { Iterable iterable = getSingleLinkIterable(); - iterable.iterator().remove(); + assertThrows(UnsupportedOperationException.class, () -> iterable.iterator().remove()); } private Iterable getSingleLinkIterable() { diff --git a/src/test/java/org/nibor/autolink/SpanIterableTest.java b/src/test/java/org/nibor/autolink/SpanIterableTest.java index dc00b1d..c9ffd09 100644 --- a/src/test/java/org/nibor/autolink/SpanIterableTest.java +++ b/src/test/java/org/nibor/autolink/SpanIterableTest.java @@ -1,10 +1,10 @@ package org.nibor.autolink; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.*; -import static org.junit.Assert.*; +import static org.junit.jupiter.api.Assertions.*; public class SpanIterableTest { @@ -40,18 +40,18 @@ public void spanAndLinkSequences() { extractSpansAsText("http://example.org https://example.com")); } - @Test(expected = NoSuchElementException.class) + @Test public void nextThrowsNoSuchElementException() { Iterable iterable = extractSpans("test"); Iterator iterator = iterable.iterator(); assertNotNull(iterator.next()); - iterator.next(); + assertThrows(NoSuchElementException.class, iterator::next); } - @Test(expected = UnsupportedOperationException.class) + @Test public void removeUnsupported() { Iterable iterable = extractSpans("test"); - iterable.iterator().remove(); + assertThrows(UnsupportedOperationException.class, () -> iterable.iterator().remove()); } private Iterable extractSpans(String input) { diff --git a/src/test/java/org/nibor/autolink/UsageExampleTest.java b/src/test/java/org/nibor/autolink/UsageExampleTest.java index 933d1b1..aa983ac 100644 --- a/src/test/java/org/nibor/autolink/UsageExampleTest.java +++ b/src/test/java/org/nibor/autolink/UsageExampleTest.java @@ -1,13 +1,12 @@ package org.nibor.autolink; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.EnumSet; import java.util.List; -import java.util.stream.Stream; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; public class UsageExampleTest {