You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by mi...@apache.org on 2022/02/04 19:59:27 UTC

[maven-doxia] branch master updated (8013887 -> 9e998a5)

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

michaelo pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git.


    from 8013887  Fix missing dependencies
     new adefec1  [DOXIA-643] Upgrade to Java 8
     new 9e998a5  [DOXIA-644] Replace Plexus Annotations with Java Inject along with JUnit 5

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 doxia-core/pom.xml                                 |  13 +-
 .../java/org/apache/maven/doxia/DefaultDoxia.java  |  10 +-
 .../org/apache/maven/doxia/macro/EchoMacro.java    |   5 +-
 .../doxia/macro/manager/DefaultMacroManager.java   |   9 +-
 .../maven/doxia/macro/snippet/SnippetMacro.java    |   6 +-
 .../org/apache/maven/doxia/macro/toc/TocMacro.java |   6 +-
 .../apache/maven/doxia/parser/AbstractParser.java  |   9 +-
 .../doxia/parser/manager/DefaultParserManager.java |   9 +-
 .../parser/module/DefaultParserModuleManager.java  |  10 +-
 .../org/apache/maven/doxia/AbstractModuleTest.java |  10 +-
 .../org/apache/maven/doxia/DefaultDoxiaTest.java   |  31 +--
 .../apache/maven/doxia/index/IndexEntryTest.java   |   6 +-
 .../apache/maven/doxia/macro/EchoMacroTest.java    |   4 +-
 .../doxia/macro/manager/MacroManagerTest.java      |  27 +--
 .../doxia/macro/snippet/SnippetMacroTest.java      |  21 +-
 .../doxia/macro/snippet/SnippetReaderTest.java     |   7 +-
 .../apache/maven/doxia/macro/toc/TocMacroTest.java |   4 +-
 .../maven/doxia/module/AbstractIdentityTest.java   |  10 +-
 .../maven/doxia/parser/AbstractParserTest.java     |  31 +--
 .../maven/doxia/parser/AbstractParserTestCase.java |   8 +-
 .../maven/doxia/parser/Xhtml5BaseParserTest.java   |  38 +++-
 .../maven/doxia/parser/XhtmlBaseParserTest.java    |  38 +++-
 .../maven/doxia/sink/impl/AbstractSinkTest.java    | 142 ++++++++-----
 .../doxia/sink/impl/AbstractSinkTestCase.java      |   8 +-
 .../maven/doxia/sink/impl/AbstractXmlSinkTest.java |   4 +-
 .../doxia/sink/impl/RandomAccessSinkTest.java      |   4 +-
 .../maven/doxia/sink/impl/SinkAdapterTest.java     |   2 +-
 .../doxia/sink/impl/SinkEventAttributeSetTest.java |   8 +-
 .../maven/doxia/sink/impl/SinkUtilsTest.java       |   8 +-
 .../maven/doxia/sink/impl/TestAbstractSink.java    |   4 +-
 .../maven/doxia/sink/impl/Xhtml5BaseSinkTest.java  |   9 +-
 .../maven/doxia/sink/impl/XhtmlBaseSinkTest.java   |  11 +-
 .../maven/doxia/util/ByLineReaderSourceTest.java   |   4 +-
 .../apache/maven/doxia/util/DoxiaUtilsTest.java    |  79 +++----
 .../org/apache/maven/doxia/util/HtmlToolsTest.java |  17 +-
 .../apache/maven/doxia/util/XmlValidatorTest.java  |   8 +-
 .../maven/doxia/xsd/AbstractXmlValidator.java      |  34 ++--
 doxia-modules/doxia-module-apt/pom.xml             |   9 +
 .../apache/maven/doxia/module/apt/AptParser.java   |   6 +-
 .../maven/doxia/module/apt/AptParserModule.java    |   6 +-
 .../maven/doxia/module/apt/AptSinkFactory.java     |   6 +-
 .../maven/doxia/module/apt/AptParserTest.java      | 226 +++++++++++----------
 .../apache/maven/doxia/module/apt/AptSinkTest.java |   9 +-
 .../maven/doxia/module/apt/AptUtilsTest.java       |  52 ++---
 doxia-modules/doxia-module-fml/pom.xml             |   9 +
 .../apache/maven/doxia/module/fml/FmlParser.java   |   5 +-
 .../maven/doxia/module/fml/FmlParserModule.java    |   6 +-
 .../maven/doxia/module/fml/FmlParserTest.java      |  24 ++-
 .../maven/doxia/module/fml/FmlValidatorTest.java   |   4 +
 doxia-modules/doxia-module-markdown/pom.xml        |   9 +
 .../doxia/module/markdown/MarkdownParser.java      |  12 +-
 .../module/markdown/MarkdownParserModule.java      |   6 +-
 .../markdown/FlexmarkDoxiaLinkResolverTest.java    |   5 +-
 .../module/markdown/MarkdownParserModuleTest.java  |  23 +--
 .../doxia/module/markdown/MarkdownParserTest.java  |  84 ++++----
 doxia-modules/doxia-module-xdoc/pom.xml            |   9 +
 .../apache/maven/doxia/module/xdoc/XdocParser.java |   5 +-
 .../maven/doxia/module/xdoc/XdocParserModule.java  |   6 +-
 .../maven/doxia/module/xdoc/XdocSinkFactory.java   |   6 +-
 .../maven/doxia/module/xdoc/XdocIdentityTest.java  |   3 +-
 .../maven/doxia/module/xdoc/XdocParserTest.java    | 105 ++++++----
 .../maven/doxia/module/xdoc/XdocSinkTest.java      |   4 +
 .../maven/doxia/module/xdoc/XdocValidatorTest.java |   2 +
 doxia-modules/doxia-module-xhtml/pom.xml           |   9 +
 .../maven/doxia/module/xhtml/XhtmlParser.java      |   6 +-
 .../doxia/module/xhtml/XhtmlParserModule.java      |   6 +-
 .../maven/doxia/module/xhtml/XhtmlSinkFactory.java |   6 +-
 .../doxia/module/xhtml/XhtmlIdentityTest.java      |   3 +-
 .../maven/doxia/module/xhtml/XhtmlParserTest.java  |  19 +-
 .../maven/doxia/module/xhtml/XhtmlSinkTest.java    |  11 +-
 doxia-modules/doxia-module-xhtml5/pom.xml          |   9 +
 .../maven/doxia/module/xhtml5/Xhtml5Parser.java    |   6 +-
 .../doxia/module/xhtml5/Xhtml5ParserModule.java    |   6 +-
 .../doxia/module/xhtml5/Xhtml5SinkFactory.java     |   6 +-
 .../doxia/module/xhtml5/Xhtml5IdentityTest.java    |   4 +-
 .../doxia/module/xhtml5/Xhtml5ParserTest.java      |  19 +-
 .../maven/doxia/module/xhtml5/Xhtml5SinkTest.java  |  11 +-
 doxia-modules/pom.xml                              |   4 -
 pom.xml                                            |  32 ++-
 79 files changed, 869 insertions(+), 583 deletions(-)

[maven-doxia] 02/02: [DOXIA-644] Replace Plexus Annotations with Java Inject along with JUnit 5

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit 9e998a51e60724ed396fb207d4987ea3d04f4b07
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Feb 3 11:45:40 2022 +0100

    [DOXIA-644] Replace Plexus Annotations with Java Inject along with JUnit 5
    
    This closes #92
---
 doxia-core/pom.xml                                 |  13 +-
 .../java/org/apache/maven/doxia/DefaultDoxia.java  |  10 +-
 .../org/apache/maven/doxia/macro/EchoMacro.java    |   5 +-
 .../doxia/macro/manager/DefaultMacroManager.java   |   9 +-
 .../maven/doxia/macro/snippet/SnippetMacro.java    |   6 +-
 .../org/apache/maven/doxia/macro/toc/TocMacro.java |   6 +-
 .../apache/maven/doxia/parser/AbstractParser.java  |   9 +-
 .../doxia/parser/manager/DefaultParserManager.java |   9 +-
 .../parser/module/DefaultParserModuleManager.java  |  10 +-
 .../org/apache/maven/doxia/AbstractModuleTest.java |  10 +-
 .../org/apache/maven/doxia/DefaultDoxiaTest.java   |  31 +--
 .../apache/maven/doxia/index/IndexEntryTest.java   |   6 +-
 .../apache/maven/doxia/macro/EchoMacroTest.java    |   4 +-
 .../doxia/macro/manager/MacroManagerTest.java      |  27 +--
 .../doxia/macro/snippet/SnippetMacroTest.java      |  21 +-
 .../doxia/macro/snippet/SnippetReaderTest.java     |   7 +-
 .../apache/maven/doxia/macro/toc/TocMacroTest.java |   4 +-
 .../maven/doxia/module/AbstractIdentityTest.java   |  10 +-
 .../maven/doxia/parser/AbstractParserTest.java     |  31 +--
 .../maven/doxia/parser/AbstractParserTestCase.java |   8 +-
 .../maven/doxia/parser/Xhtml5BaseParserTest.java   |  38 +++-
 .../maven/doxia/parser/XhtmlBaseParserTest.java    |  38 +++-
 .../maven/doxia/sink/impl/AbstractSinkTest.java    | 142 ++++++++-----
 .../doxia/sink/impl/AbstractSinkTestCase.java      |   8 +-
 .../maven/doxia/sink/impl/AbstractXmlSinkTest.java |   4 +-
 .../doxia/sink/impl/RandomAccessSinkTest.java      |   4 +-
 .../maven/doxia/sink/impl/SinkAdapterTest.java     |   2 +-
 .../doxia/sink/impl/SinkEventAttributeSetTest.java |   8 +-
 .../maven/doxia/sink/impl/SinkUtilsTest.java       |   8 +-
 .../maven/doxia/sink/impl/TestAbstractSink.java    |   4 +-
 .../maven/doxia/sink/impl/Xhtml5BaseSinkTest.java  |   9 +-
 .../maven/doxia/sink/impl/XhtmlBaseSinkTest.java   |  11 +-
 .../maven/doxia/util/ByLineReaderSourceTest.java   |   4 +-
 .../apache/maven/doxia/util/DoxiaUtilsTest.java    |  79 +++----
 .../org/apache/maven/doxia/util/HtmlToolsTest.java |  17 +-
 .../apache/maven/doxia/util/XmlValidatorTest.java  |   8 +-
 .../maven/doxia/xsd/AbstractXmlValidator.java      |  34 ++--
 doxia-modules/doxia-module-apt/pom.xml             |   9 +
 .../apache/maven/doxia/module/apt/AptParser.java   |   6 +-
 .../maven/doxia/module/apt/AptParserModule.java    |   6 +-
 .../maven/doxia/module/apt/AptSinkFactory.java     |   6 +-
 .../maven/doxia/module/apt/AptParserTest.java      | 226 +++++++++++----------
 .../apache/maven/doxia/module/apt/AptSinkTest.java |   9 +-
 .../maven/doxia/module/apt/AptUtilsTest.java       |  52 ++---
 doxia-modules/doxia-module-fml/pom.xml             |   9 +
 .../apache/maven/doxia/module/fml/FmlParser.java   |   5 +-
 .../maven/doxia/module/fml/FmlParserModule.java    |   6 +-
 .../maven/doxia/module/fml/FmlParserTest.java      |  24 ++-
 .../maven/doxia/module/fml/FmlValidatorTest.java   |   4 +
 doxia-modules/doxia-module-markdown/pom.xml        |   9 +
 .../doxia/module/markdown/MarkdownParser.java      |  12 +-
 .../module/markdown/MarkdownParserModule.java      |   6 +-
 .../markdown/FlexmarkDoxiaLinkResolverTest.java    |   5 +-
 .../module/markdown/MarkdownParserModuleTest.java  |  23 +--
 .../doxia/module/markdown/MarkdownParserTest.java  |  84 ++++----
 doxia-modules/doxia-module-xdoc/pom.xml            |   9 +
 .../apache/maven/doxia/module/xdoc/XdocParser.java |   5 +-
 .../maven/doxia/module/xdoc/XdocParserModule.java  |   6 +-
 .../maven/doxia/module/xdoc/XdocSinkFactory.java   |   6 +-
 .../maven/doxia/module/xdoc/XdocIdentityTest.java  |   3 +-
 .../maven/doxia/module/xdoc/XdocParserTest.java    | 105 ++++++----
 .../maven/doxia/module/xdoc/XdocSinkTest.java      |   4 +
 .../maven/doxia/module/xdoc/XdocValidatorTest.java |   2 +
 doxia-modules/doxia-module-xhtml/pom.xml           |   9 +
 .../maven/doxia/module/xhtml/XhtmlParser.java      |   6 +-
 .../doxia/module/xhtml/XhtmlParserModule.java      |   6 +-
 .../maven/doxia/module/xhtml/XhtmlSinkFactory.java |   6 +-
 .../doxia/module/xhtml/XhtmlIdentityTest.java      |   3 +-
 .../maven/doxia/module/xhtml/XhtmlParserTest.java  |  19 +-
 .../maven/doxia/module/xhtml/XhtmlSinkTest.java    |  11 +-
 doxia-modules/doxia-module-xhtml5/pom.xml          |   9 +
 .../maven/doxia/module/xhtml5/Xhtml5Parser.java    |   6 +-
 .../doxia/module/xhtml5/Xhtml5ParserModule.java    |   6 +-
 .../doxia/module/xhtml5/Xhtml5SinkFactory.java     |   6 +-
 .../doxia/module/xhtml5/Xhtml5IdentityTest.java    |   4 +-
 .../doxia/module/xhtml5/Xhtml5ParserTest.java      |  19 +-
 .../maven/doxia/module/xhtml5/Xhtml5SinkTest.java  |  11 +-
 doxia-modules/pom.xml                              |   4 -
 pom.xml                                            |  30 ++-
 79 files changed, 868 insertions(+), 582 deletions(-)

diff --git a/doxia-core/pom.xml b/doxia-core/pom.xml
index 1064864..0a7d4c4 100644
--- a/doxia-core/pom.xml
+++ b/doxia-core/pom.xml
@@ -43,6 +43,10 @@ under the License.
       <artifactId>slf4j-api</artifactId>
     </dependency>
     <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+    <dependency>
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
@@ -51,10 +55,6 @@ under the License.
       <artifactId>org.eclipse.sisu.plexus</artifactId>
     </dependency>
     <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-component-annotations</artifactId>
-    </dependency>
-    <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-text</artifactId>
       <version>1.3</version>
@@ -62,6 +62,11 @@ under the License.
 
     <!-- test -->
     <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-testing</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>com.google.inject</groupId>
       <artifactId>guice</artifactId>
       <classifier>no_aop</classifier>
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java b/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
index 90fd183..a4b1d17 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/DefaultDoxia.java
@@ -19,15 +19,15 @@ package org.apache.maven.doxia;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.parser.manager.ParserManager;
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
 import org.apache.maven.doxia.sink.Sink;
 
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-
 import java.io.Reader;
 
 /**
@@ -37,11 +37,11 @@ import java.io.Reader;
  * @author Jason van Zyl
  * @since 1.0
  */
-@Component( role = Doxia.class )
+@Named
 public class DefaultDoxia
     implements Doxia
 {
-    @Requirement
+    @Inject
     private ParserManager parserManager;
 
     // ----------------------------------------------------------------------
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/EchoMacro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/EchoMacro.java
index 5791805..5b34b0a 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/EchoMacro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/EchoMacro.java
@@ -19,14 +19,15 @@ package org.apache.maven.doxia.macro;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * A simple macro that prints out the key and value of some supplied parameters.
  */
-@Component( role = Macro.class, hint = "echo" )
+@Named( "echo" )
 public class EchoMacro
     extends AbstractMacro
 {
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/manager/DefaultMacroManager.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/manager/DefaultMacroManager.java
index e240d5a..50b8234 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/manager/DefaultMacroManager.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/manager/DefaultMacroManager.java
@@ -19,9 +19,10 @@ package org.apache.maven.doxia.macro.manager;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+
 import org.apache.maven.doxia.macro.Macro;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 
 import java.util.Map;
 
@@ -31,12 +32,12 @@ import java.util.Map;
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
  * @since 1.0
  */
-@Component( role = MacroManager.class )
+@Named
 public class DefaultMacroManager
     implements MacroManager
 {
     @SuppressWarnings( "MismatchedQueryAndUpdateOfCollection" )
-    @Requirement( role = Macro.class )
+    @Inject
     private Map<String, Macro> macros;
 
     /** {@inheritDoc} */
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
index b3007a2..e69744f 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/snippet/SnippetMacro.java
@@ -19,13 +19,13 @@ package org.apache.maven.doxia.macro.snippet;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import org.apache.maven.doxia.macro.AbstractMacro;
-import org.apache.maven.doxia.macro.Macro;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -40,7 +40,7 @@ import java.util.Map;
 /**
  * A macro that prints out the content of a file or a URL.
  */
-@Component( role = Macro.class, hint = "snippet" )
+@Named( "snippet" )
 public class SnippetMacro
     extends AbstractMacro
 {
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java b/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
index c96a84e..2b94937 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/macro/toc/TocMacro.java
@@ -19,12 +19,13 @@ package org.apache.maven.doxia.macro.toc;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import java.io.StringReader;
 
 import org.apache.maven.doxia.index.IndexEntry;
 import org.apache.maven.doxia.index.IndexingSink;
 import org.apache.maven.doxia.macro.AbstractMacro;
-import org.apache.maven.doxia.macro.Macro;
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.util.HtmlTools;
@@ -32,7 +33,6 @@ import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
 
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.StringUtils;
 
 /**
@@ -76,7 +76,7 @@ import org.codehaus.plexus.util.StringUtils;
  *
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  */
-@Component( role = Macro.class, hint = "toc" )
+@Named( "toc" )
 public class TocMacro
     extends AbstractMacro
 {
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
index ee032e7..776ab2f 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/AbstractParser.java
@@ -19,6 +19,8 @@ package org.apache.maven.doxia.parser;
  * under the License.
  */
 
+import javax.inject.Inject;
+
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
@@ -33,7 +35,6 @@ import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.macro.manager.MacroManager;
 import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
 import org.apache.maven.doxia.sink.Sink;
-import org.codehaus.plexus.component.annotations.Requirement;
 
 /**
  * An abstract base class that defines some convenience methods for parsers.
@@ -48,7 +49,7 @@ public abstract class AbstractParser
     /** Indicates that a second parsing is required. */
     private boolean secondParsing = false;
 
-    @Requirement
+    @Inject
     private MacroManager macroManager;
 
     /**
@@ -160,8 +161,6 @@ public abstract class AbstractParser
     }
 
     /**
-     * {@inheritDoc}
-     *
      * Convenience method to parse an arbitrary string and emit events into the given sink.
      *
      * @param string a string that provides the source input
@@ -176,8 +175,6 @@ public abstract class AbstractParser
     }
 
     /**
-     * {@inheritDoc}
-     *
      * Convenience method to parse an arbitrary string and emit events into the given sink.
      *
      * @param string a string that provides the source input
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/manager/DefaultParserManager.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/manager/DefaultParserManager.java
index ac602f7..90c938e 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/manager/DefaultParserManager.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/manager/DefaultParserManager.java
@@ -19,9 +19,10 @@ package org.apache.maven.doxia.parser.manager;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+
 import org.apache.maven.doxia.parser.Parser;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 
 import java.util.Map;
 
@@ -31,12 +32,12 @@ import java.util.Map;
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
  * @since 1.0
  */
-@Component( role = ParserManager.class )
+@Named
 public class DefaultParserManager
     implements ParserManager
 {
     @SuppressWarnings( "MismatchedQueryAndUpdateOfCollection" )
-    @Requirement( role = Parser.class )
+    @Inject
     private Map<String, Parser> parsers;
 
     /** {@inheritDoc} */
diff --git a/doxia-core/src/main/java/org/apache/maven/doxia/parser/module/DefaultParserModuleManager.java b/doxia-core/src/main/java/org/apache/maven/doxia/parser/module/DefaultParserModuleManager.java
index 3aac039..665bee3 100644
--- a/doxia-core/src/main/java/org/apache/maven/doxia/parser/module/DefaultParserModuleManager.java
+++ b/doxia-core/src/main/java/org/apache/maven/doxia/parser/module/DefaultParserModuleManager.java
@@ -19,24 +19,24 @@ package org.apache.maven.doxia.parser.module;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+
 import java.util.Collection;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
-
 /**
  * Simple implementation of the ParserModuleManager interface.
  *
  * @since 1.6
  */
-@Component( role = ParserModuleManager.class )
+@Named
 public class DefaultParserModuleManager
     implements ParserModuleManager
 {
     @SuppressWarnings( "MismatchedQueryAndUpdateOfCollection" )
-    @Requirement( role = ParserModule.class )
+    @Inject
     private Map<String, ParserModule> parserModules;
 
     private Collection<ParserModule> parserModulesValues;
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/AbstractModuleTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/AbstractModuleTest.java
index 79249a5..d7d7774 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/AbstractModuleTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/AbstractModuleTest.java
@@ -21,7 +21,7 @@ package org.apache.maven.doxia;
 
 import org.apache.maven.doxia.markup.Markup;
 
-import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.testing.PlexusTest;
 import org.codehaus.plexus.util.WriterFactory;
 
 import java.io.File;
@@ -32,15 +32,19 @@ import java.io.Reader;
 import java.io.Writer;
 import java.nio.charset.StandardCharsets;
 
+import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+
 /**
  * Provide some common convenience methods to test Doxia modules (parsers and sinks).
  *
  * @since 1.0
  */
+@PlexusTest
 public abstract class AbstractModuleTest
-    extends PlexusTestCase
     implements Markup
 {
+
     /*
      * Set the system properties:
      * <ul>
@@ -171,7 +175,7 @@ public abstract class AbstractModuleTest
             Thread.currentThread().getContextClassLoader().getResourceAsStream(
                 baseName + "." + extension );
 
-        assertNotNull( "Could not find resource: " + baseName + "." + extension, is );
+        assertNotNull( is, "Could not find resource: " + baseName + "." + extension );
 
         return new InputStreamReader( is, StandardCharsets.UTF_8 );
     }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/DefaultDoxiaTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/DefaultDoxiaTest.java
index 2075b7f..7bc2222 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/DefaultDoxiaTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/DefaultDoxiaTest.java
@@ -19,13 +19,24 @@ package org.apache.maven.doxia;
  * under the License.
  */
 
+import javax.inject.Inject;
+
 import org.apache.maven.doxia.parser.manager.ParserNotFoundException;
-import org.codehaus.plexus.PlexusTestCase;
-import org.junit.Test;
+import org.codehaus.plexus.testing.PlexusTest;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
-public class DefaultDoxiaTest extends PlexusTestCase
+
+@PlexusTest
+public class DefaultDoxiaTest
 {
 
+    @Inject
+    private Doxia doxia;
+
     @Test
     public void testCreatesDefaultDoxia()
     {
@@ -38,17 +49,9 @@ public class DefaultDoxiaTest extends PlexusTestCase
     public void testFailsWhenParserIdDoesNotExist() throws Exception
     {
         final String parserId = "a-parser";
-        final Doxia doxia = lookup( Doxia.class );
-
-        try
-        {
-            doxia.getParser( parserId );
-            fail( "Call should fail with ParserNotFoundException" );
-        }
-        catch ( ParserNotFoundException e )
-        {
-            assertEquals( "Cannot find parser with id = a-parser", e.getMessage() );
-        }
+        ParserNotFoundException e = assertThrows( ParserNotFoundException.class,
+                () -> doxia.getParser( parserId ) );
+        assertEquals( "Cannot find parser with id = " + parserId, e.getMessage() );
     }
 
 }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/index/IndexEntryTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/index/IndexEntryTest.java
index d8913f7..6f48f42 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/index/IndexEntryTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/index/IndexEntryTest.java
@@ -19,10 +19,10 @@ package org.apache.maven.doxia.index;
  * under the License.
  */
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-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;
 
 /**
  * @author <a href="mailto:trygve.laugstol@objectware.no">Trygve Laugst&oslash;l</a>
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
index 5098069..639a241 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/EchoMacroTest.java
@@ -29,9 +29,9 @@ import org.apache.maven.doxia.parser.XhtmlBaseParser;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Test echo macro.
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/manager/MacroManagerTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/manager/MacroManagerTest.java
index 6331d9a..ad357c3 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/manager/MacroManagerTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/manager/MacroManagerTest.java
@@ -19,37 +19,38 @@ package org.apache.maven.doxia.macro.manager;
  * under the License.
  */
 
+import javax.inject.Inject;
+
 import org.apache.maven.doxia.macro.Macro;
 
-import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.testing.PlexusTest;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 
 /** @author Jason van Zyl */
+@PlexusTest
 public class MacroManagerTest
-    extends PlexusTestCase
 {
+
+    @Inject
+    private MacroManager mm;
+
     /**
      * Test MacroManager.
      *
      * @throws java.lang.Exception if any.
      */
+    @Test
     public void testMacroManager()
         throws Exception
     {
-        MacroManager mm = lookup( MacroManager.class );
-
         assertNotNull( mm );
 
         Macro macro = mm.getMacro( "snippet" );
         assertNotNull( macro );
 
-        try
-        {
-            mm.getMacro( "weirdId" );
-            fail( "should not exist!" );
-        }
-        catch ( MacroNotFoundException macroNotFoundException )
-        {
-            assertNotNull( macroNotFoundException );
-        }
+        assertThrows( MacroNotFoundException.class, () -> mm.getMacro( "weirdId" ) );
     }
 }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetMacroTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetMacroTest.java
index d1f8926..7987817 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetMacroTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetMacroTest.java
@@ -30,23 +30,31 @@ import org.apache.maven.doxia.parser.XhtmlBaseParser;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
 import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.testing.PlexusTest;
 import org.hamcrest.CoreMatchers;
+import org.junit.jupiter.api.Test;
 
+import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Test snippet macro.
  *
  * @author ltheussl
  */
+@PlexusTest
 public class SnippetMacroTest
-    extends PlexusTestCase
 {
     /**
      * Test of execute method, of class SnippetMacro.
      *
      * @throws MacroExecutionException if a macro fails during testing.
      */
+    @Test
     public void testExecute()
         throws MacroExecutionException
     {
@@ -128,17 +136,10 @@ public class SnippetMacroTest
         macroParameters.put( "id", "first" );
         macroParameters.put( "verbatim", "" );
         macroParameters.put( "ignoreDownloadError", "false" );
-        try
-        {
-            executeSnippetMacro( macroParameters );
-            fail();
-        }
-        catch ( Exception e )
-        {
-            // good
-        }
+        assertThrows( Exception.class, () -> executeSnippetMacro( macroParameters ) );
     }
 
+    @Test
     public void testIgnoreDownloadError()
         throws Exception
     {
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetReaderTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetReaderTest.java
index 0282ab4..3cb486c 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetReaderTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/snippet/SnippetReaderTest.java
@@ -18,10 +18,11 @@ package org.apache.maven.doxia.macro.snippet;
  * specific language governing permissions and limitations
  * under the License.
  */
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class SnippetReaderTest
 {
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
index 2cb1d9a..51accbe 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/macro/toc/TocMacroTest.java
@@ -33,9 +33,9 @@ import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
 import org.apache.maven.doxia.sink.impl.XhtmlBaseSink;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Test toc macro.
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java
index a3713d6..6a78a16 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/module/AbstractIdentityTest.java
@@ -32,7 +32,9 @@ import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkTestDocument;
 import org.apache.maven.doxia.sink.impl.TextSink;
-import org.codehaus.plexus.DefaultPlexusContainer;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * If a module provides both Parser and Sink, this class
@@ -79,6 +81,7 @@ public abstract class AbstractIdentityTest
      * @throws IOException if there's a problem reading/writing a test file.
      * @throws ParseException if a model cannot be parsed.
      */
+    @Test
     public void testIdentity()
         throws IOException, ParseException
     {
@@ -120,8 +123,9 @@ public abstract class AbstractIdentityTest
         if ( assertIdentity )
         {
             // TODO: make this work for at least apt and xdoc modules?
-            assertEquals( "Identity test failed! See results in " + getTestWriterFile( "actual" ).getParent(),
-                          getExpected(), actual );
+            assertEquals( getExpected(), actual,
+                          "Identity test failed! See results in "
+                                  + getTestWriterFile( "actual" ).getParent() );
         }
     }
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTest.java
index 78d29d5..625ed68 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTest.java
@@ -25,13 +25,16 @@ import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.TextSink;
 import org.apache.maven.doxia.sink.impl.WellformednessCheckingSink;
 import org.apache.maven.doxia.sink.Sink;
-import org.junit.Assert;
+import org.junit.jupiter.api.Assertions;
+import org.junit.jupiter.api.Test;
 
 import java.io.IOException;
 import java.io.Reader;
 import java.io.Writer;
 import java.util.Iterator;
 
+import static org.junit.jupiter.api.Assertions.assertTrue;
+
 /**
  * Test the parsing of sample input files.
  * <br>
@@ -67,6 +70,7 @@ public abstract class AbstractParserTest
      * @throws IOException if the test document cannot be read.
      * @throws ParseException if the test document cannot be parsed.
      */
+    @Test
     public final void testParser()
         throws IOException, ParseException
     {
@@ -76,8 +80,8 @@ public abstract class AbstractParserTest
         {
             createParser().parse( reader, sink );
 
-            assertTrue( "Parser output not well-formed, last offending element: " + sink.getOffender(),
-                    sink.isWellformed() );
+            assertTrue( sink.isWellformed(),
+                        "Parser output not well-formed, last offending element: " + sink.getOffender() );
         }
     }
 
@@ -89,6 +93,7 @@ public abstract class AbstractParserTest
      * @throws IOException if the test document cannot be read.
      * @throws ParseException if the test document cannot be parsed.
      */
+    @Test
     public final void testDocument()
         throws IOException, ParseException
     {
@@ -100,20 +105,20 @@ public abstract class AbstractParserTest
         }
     }
 
-    protected void assertEquals( SinkEventElement element, String name, Object... args )
+    protected static void assertSinkEquals( SinkEventElement element, String name, Object... args )
     {
-        assertEquals( "Name of element doesn't match", name, element.getName() );
-        Assert.assertArrayEquals( "Arguments don't match",  args, element.getArgs() );
+        Assertions.assertEquals( name, element.getName(), "Name of element doesn't match" );
+        Assertions.assertArrayEquals( args, element.getArgs(), "Arguments don't match" );
     }
 
-    protected void assertAttributeEquals( SinkEventElement element, String name, String attr, String value )
+    protected static void assertSinkAttributeEquals( SinkEventElement element, String name, String attr, String value )
     {
-        assertEquals( name, element.getName() );
+        Assertions.assertEquals( name, element.getName() );
         SinkEventAttributeSet atts = (SinkEventAttributeSet) element.getArgs()[0];
-        assertEquals( value, atts.getAttribute( attr ) );
+        Assertions.assertEquals( value, atts.getAttribute( attr ) );
     }
 
-    protected void assertEquals( Iterator<SinkEventElement> it, String... names )
+    protected static void assertSinkEquals( Iterator<SinkEventElement> it, String... names )
     {
         StringBuilder expected = new StringBuilder();
         StringBuilder actual = new StringBuilder();
@@ -128,10 +133,10 @@ public abstract class AbstractParserTest
             actual.append( it.next().getName() ).append( '\n' );
         }
 
-        assertEquals( expected.toString(), actual.toString() );
+        Assertions.assertEquals( expected.toString(), actual.toString() );
     }
 
-    protected void assertStartsWith( Iterator<SinkEventElement> it, String... names )
+    protected static void assertSinkStartsWith( Iterator<SinkEventElement> it, String... names )
     {
         StringBuilder expected = new StringBuilder();
         StringBuilder actual = new StringBuilder();
@@ -144,6 +149,6 @@ public abstract class AbstractParserTest
                 actual.append( it.next().getName() ).append( '\n' );
             }
         }
-        assertEquals( expected.toString(), actual.toString() );
+        Assertions.assertEquals( expected.toString(), actual.toString() );
     }
 }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTestCase.java b/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTestCase.java
index 3097bad..acfdcd4 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTestCase.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/parser/AbstractParserTestCase.java
@@ -22,10 +22,15 @@ package org.apache.maven.doxia.parser;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkAdapter;
 import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.testing.PlexusTest;
+import org.junit.jupiter.api.Test;
 
 import java.io.FileReader;
 import java.io.Reader;
 
+import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
+import static org.codehaus.plexus.testing.PlexusExtension.getTestFile;
+
 /**
  * Test the parsing of sample input files
  *
@@ -33,8 +38,8 @@ import java.io.Reader;
  * @author <a href="mailto:evenisse@codehaus.org">Emmanuel Venisse</a>
  * @since 1.0
  */
+@PlexusTest
 public abstract class AbstractParserTestCase
-    extends PlexusTestCase
 {
     /**
      * Parser to use to convert input to sink events
@@ -66,6 +71,7 @@ public abstract class AbstractParserTestCase
      *
      * @throws Exception if any.
      */
+    @Test
     public void testParser()
         throws Exception
     {
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java
index 950c627..7f54ce8 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/parser/Xhtml5BaseParserTest.java
@@ -24,8 +24,10 @@ import java.util.Iterator;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Test for XhtmlBaseParser.
@@ -50,22 +52,22 @@ public class Xhtml5BaseParserTest
         return "xhtml";
     }
 
-    @Override
+    @BeforeEach
     protected void setUp() throws Exception
     {
-        super.setUp();
-
         parser = new Xhtml5BaseParser();
         sink.reset();
     }
 
     /** Test Doxia version. */
+    @Test
     public void testDoxiaVersion()
     {
         assertNotNull( XhtmlBaseParser.doxiaVersion() );
         assertNotEquals( "unknown", XhtmlBaseParser.doxiaVersion() );
     }
 
+    @Test
     public void testHeadingEventsList()
         throws Exception
     {
@@ -106,6 +108,7 @@ public class Xhtml5BaseParserTest
         assertFalse( it.hasNext() );
     }
 
+    @Test
     public void testNestedHeadingEventsList()
         throws Exception
     {
@@ -145,6 +148,7 @@ public class Xhtml5BaseParserTest
         assertFalse( it.hasNext() );
     }
 
+    @Test
     public void testFigureEventsList()
         throws Exception
     {
@@ -158,6 +162,7 @@ public class Xhtml5BaseParserTest
         assertFalse( it.hasNext() );
     }
 
+    @Test
     public void testTableEventsList()
         throws Exception
     {
@@ -187,6 +192,7 @@ public class Xhtml5BaseParserTest
         assertFalse( it.hasNext() );
     }
 
+    @Test
     public void testSignificantWhiteSpace()
         throws Exception
     {
@@ -259,6 +265,7 @@ public class Xhtml5BaseParserTest
         assertFalse( it.hasNext() );
     }
 
+    @Test
     public void testPreFormattedText()
         throws Exception
     {
@@ -295,6 +302,7 @@ public class Xhtml5BaseParserTest
         assertFalse( it.hasNext() );
     }
 
+    @Test
     public void testPreEOL()
         throws Exception
     {
@@ -317,6 +325,7 @@ public class Xhtml5BaseParserTest
         assertEquals( "verbatim_", it.next().getName() );
     }
 
+    @Test
     public void testDoxia250()
         throws Exception
     {
@@ -357,6 +366,7 @@ public class Xhtml5BaseParserTest
         assertEquals( "paragraph_", event.getName() );
     }
 
+    @Test
     public void testEntities()
         throws Exception
     {
@@ -425,6 +435,7 @@ public class Xhtml5BaseParserTest
         assertFalse( it.hasNext() );
     }
 
+    @Test
     public void testXhtmlEntities()
         throws Exception
     {
@@ -465,6 +476,7 @@ public class Xhtml5BaseParserTest
         assertFalse( it.hasNext() );
     }
 
+    @Test
     public void testLists()
         throws Exception
     {
@@ -494,6 +506,7 @@ public class Xhtml5BaseParserTest
         assertEquals( "division_", it.next().getName() );
     }
 
+    @Test
     public void testSimpleTags()
         throws Exception
     {
@@ -509,6 +522,7 @@ public class Xhtml5BaseParserTest
         assertEquals( "division_", it.next().getName() );
     }
 
+    @Test
     public void testSemanticTags()
         throws Exception
     {
@@ -664,6 +678,7 @@ public class Xhtml5BaseParserTest
 
     }
 
+    @Test
     public void testSpecial()
         throws Exception
     {
@@ -680,6 +695,7 @@ public class Xhtml5BaseParserTest
         assertEquals( "paragraph_", it.next().getName() );
     }
 
+    @Test
     public void testTable()
         throws Exception
     {
@@ -708,6 +724,7 @@ public class Xhtml5BaseParserTest
         assertEquals( "table_", it.next().getName() );
     }
 
+    @Test
     public void testFigure()
         throws Exception
     {
@@ -722,6 +739,7 @@ public class Xhtml5BaseParserTest
         assertEquals( "figure_", it.next().getName() );
     }
 
+    @Test
     public void testAnchorLink()
         throws Exception
     {
@@ -783,6 +801,7 @@ public class Xhtml5BaseParserTest
      *
      * @throws java.lang.Exception if any.
      */
+    @Test
     public void testAttributeEntities()
         throws Exception
     {
@@ -814,6 +833,7 @@ public class Xhtml5BaseParserTest
         assertEquals( "http://ex.com/ex.jpg?v=l&l=e", attribs.getAttribute( "src" ) );
     }
 
+    @Test
     public void testUnbalancedDefinitionListItem() throws Exception
     {
         String text = "<body><dl><dt>key</dt><dd>value</dd></dl>" +
@@ -825,14 +845,14 @@ public class Xhtml5BaseParserTest
         parser.parse( text, sink );
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
-        assertStartsWith( it, "definitionList", "definitionListItem", "definedTerm", "text", "definedTerm_",
+        assertSinkStartsWith( it, "definitionList", "definitionListItem", "definedTerm", "text", "definedTerm_",
                           "definition", "text", "definition_", "definitionListItem_", "definitionList_" );
-        assertStartsWith( it, "definitionList", "definitionListItem", "definition", "text", "definition_",
+        assertSinkStartsWith( it, "definitionList", "definitionListItem", "definition", "text", "definition_",
                           "definitionListItem_", "definitionList_" );
-        assertStartsWith( it, "definitionList", "definitionListItem", "definedTerm", "text", "definedTerm_",
+        assertSinkStartsWith( it, "definitionList", "definitionListItem", "definedTerm", "text", "definedTerm_",
                           "definitionListItem_", "definitionList_" );
-        assertStartsWith( it, "definitionList", "definitionList_" );
-        assertEquals( it, "definitionList", "definitionListItem", "definition", "text", "definition_",
+        assertSinkStartsWith( it, "definitionList", "definitionList_" );
+        assertSinkEquals( it, "definitionList", "definitionListItem", "definition", "text", "definition_",
                           "definitionListItem_", "definitionListItem", "definedTerm", "text", "definedTerm_",
                           "definitionListItem_", "definitionList_" );
     }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
index 1175974..34eb8e8 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/parser/XhtmlBaseParserTest.java
@@ -24,8 +24,10 @@ import java.util.Iterator;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Test for XhtmlBaseParser.
@@ -53,16 +55,15 @@ public class XhtmlBaseParserTest
         return "xhtml";
     }
 
-    @Override
+    @BeforeEach
     protected void setUp() throws Exception
     {
-        super.setUp();
-
         parser = new XhtmlBaseParser();
         sink.reset();
     }
 
     /** Test Doxia version. */
+    @Test
     public void testDoxiaVersion()
     {
         assertNotNull( XhtmlBaseParser.doxiaVersion() );
@@ -70,6 +71,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testHeadingEventsList()
         throws Exception
     {
@@ -111,6 +113,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testNestedHeadingEventsList()
         throws Exception
     {
@@ -151,6 +154,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testFigureEventsList()
         throws Exception
     {
@@ -165,6 +169,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testTableEventsList()
         throws Exception
     {
@@ -195,6 +200,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testSignificantWhiteSpace()
         throws Exception
     {
@@ -268,6 +274,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testPreFormattedText()
         throws Exception
     {
@@ -305,6 +312,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testPreEOL()
         throws Exception
     {
@@ -328,6 +336,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testDoxia250()
         throws Exception
     {
@@ -369,6 +378,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testEntities()
         throws Exception
     {
@@ -436,6 +446,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testXhtmlEntities()
         throws Exception
     {
@@ -490,6 +501,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testLists()
         throws Exception
     {
@@ -518,6 +530,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testSimpleTags()
         throws Exception
     {
@@ -531,6 +544,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testSemanticTags()
         throws Exception
     {
@@ -587,6 +601,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testSpecial()
         throws Exception
     {
@@ -604,6 +619,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testTable()
         throws Exception
     {
@@ -633,6 +649,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testFigure()
         throws Exception
     {
@@ -648,6 +665,7 @@ public class XhtmlBaseParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testAnchorLink()
         throws Exception
     {
@@ -703,6 +721,7 @@ public class XhtmlBaseParserTest
      *
      * @throws java.lang.Exception if any.
      */
+    @Test
     public void testAttributeEntities()
         throws Exception
     {
@@ -734,6 +753,7 @@ public class XhtmlBaseParserTest
         assertEquals( "http://ex.com/ex.jpg?v=l&l=e", attribs.getAttribute( "src" ) );
     }
 
+    @Test
     public void testUnbalancedDefinitionListItem() throws Exception
     {
         String text = "<body><dl><dt>key</dt><dd>value</dd></dl>" +
@@ -745,14 +765,14 @@ public class XhtmlBaseParserTest
         parser.parse( text, sink );
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
-        assertStartsWith( it, "definitionList", "definitionListItem", "definedTerm", "text", "definedTerm_",
+        assertSinkStartsWith( it, "definitionList", "definitionListItem", "definedTerm", "text", "definedTerm_",
                           "definition", "text", "definition_", "definitionListItem_", "definitionList_" );
-        assertStartsWith( it, "definitionList", "definitionListItem", "definition", "text", "definition_",
+        assertSinkStartsWith( it, "definitionList", "definitionListItem", "definition", "text", "definition_",
                           "definitionListItem_", "definitionList_" );
-        assertStartsWith( it, "definitionList", "definitionListItem", "definedTerm", "text", "definedTerm_",
+        assertSinkStartsWith( it, "definitionList", "definitionListItem", "definedTerm", "text", "definedTerm_",
                           "definitionListItem_", "definitionList_" );
-        assertStartsWith( it, "definitionList", "definitionList_" );
-        assertEquals( it, "definitionList", "definitionListItem", "definition", "text", "definition_",
+        assertSinkStartsWith( it, "definitionList", "definitionList_" );
+        assertSinkEquals( it, "definitionList", "definitionListItem", "definition", "text", "definition_",
                           "definitionListItem_", "definitionListItem", "definedTerm", "text", "definedTerm_",
                           "definitionListItem_", "definitionList_" );
     }
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java
index ff6d4dc..e642459 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTest.java
@@ -27,8 +27,11 @@ import org.apache.maven.doxia.AbstractModuleTest;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.codehaus.plexus.util.IOUtil;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.xmlunit.matchers.CompareMatcher.isIdenticalTo;
 
 /**
@@ -42,17 +45,10 @@ public abstract class AbstractSinkTest
 
     /**
      * Resets the writer and creates a new sink with it.
-     *
-     * {@inheritDoc}
-     *
-     * @throws java.lang.Exception if something goes wrong.
      */
-    @Override
+    @BeforeEach
     protected void setUp()
-        throws Exception
     {
-        super.setUp();
-
         testWriter.reset();
         sink = createSink( testWriter );
     }
@@ -114,6 +110,7 @@ public abstract class AbstractSinkTest
      * @see #getTestWriter(String)
      * @see #getXmlTestWriter(String)
      */
+    @Test
     public final void testTestDocument() throws IOException
     {
         Writer writer = ( isXmlSink() ? getXmlTestWriter( "testDocument" ) : getTestWriter( "testDocument" ) );
@@ -135,6 +132,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getTitleBlock getTitleBlock}( title ).
      */
+    @Test
     public void testTitle()
     {
         String title = "Grodek";
@@ -147,7 +145,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getTitleBlock( title );
 
-        assertEquals( "Wrong title!", expected, actual );
+        assertEquals( expected, actual, "Wrong title!" );
     }
 
     /**
@@ -155,6 +153,7 @@ public abstract class AbstractSinkTest
      * </code>, invoked on the current sink, produces the same result as
      * {@link #getAuthorBlock getAuthorBlock}( author ).
      */
+    @Test
     public void testAuthor()
     {
         String author = "Georg_Trakl";
@@ -167,7 +166,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getAuthorBlock( author );
 
-        assertEquals( "Wrong author!", expected, actual );
+        assertEquals( expected, actual, "Wrong author!" );
     }
 
     /**
@@ -175,6 +174,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getDateBlock getDateBlock}( date ).
      */
+    @Test
     public void testDate()
     {
         String date = "1914";
@@ -187,7 +187,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getDateBlock( date );
 
-        assertEquals( "Wrong date!", expected, actual );
+        assertEquals( expected, actual, "Wrong date!" );
     }
 
     /**
@@ -195,6 +195,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getHeadBlock getHeadBlock()}.
      */
+    @Test
     public void testHead()
     {
         sink.head();
@@ -205,7 +206,7 @@ public abstract class AbstractSinkTest
         String actual = normalizeLineEnds( testWriter.toString() );
         String expected = normalizeLineEnds( getHeadBlock() );
 
-        assertEquals( "Wrong head!", expected, actual );
+        assertEquals( expected, actual, "Wrong head!" );
     }
 
     /**
@@ -213,6 +214,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getBodyBlock getBodyBlock()}.
      */
+    @Test
     public void testBody()
     {
         sink.body();
@@ -223,7 +225,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getBodyBlock();
 
-        assertEquals( "Wrong body!", expected, actual );
+        assertEquals( expected, actual, "Wrong body!" );
     }
 
     /**
@@ -231,6 +233,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getArticleBlock getArticleBlock()}.
      */
+    @Test
     public void testArticle()
     {
         sink.article();
@@ -241,7 +244,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getArticleBlock();
 
-        assertEquals( "Wrong article!", expected, actual );
+        assertEquals( expected, actual, "Wrong article!" );
     }
 
     /**
@@ -249,6 +252,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getNavigationBlock getNavigationBlock()}.
      */
+    @Test
     public void testNavigation()
     {
         sink.navigation();
@@ -259,7 +263,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getNavigationBlock();
 
-        assertEquals( "Wrong navigation!", expected, actual );
+        assertEquals( expected, actual, "Wrong navigation!" );
     }
 
     /**
@@ -267,6 +271,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getSidebarBlock getSidebarBlock()}.
      */
+    @Test
     public void testSidebar()
     {
         sink.sidebar();
@@ -277,7 +282,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getSidebarBlock();
 
-        assertEquals( "Wrong sidebar!", expected, actual );
+        assertEquals( expected, actual, "Wrong sidebar!" );
     }
 
     /**
@@ -286,6 +291,7 @@ public abstract class AbstractSinkTest
      * the same result as
      * {@link #getSectionTitleBlock getSectionTitleBlock}( title ).
      */
+    @Test
     public void testSectionTitle()
     {
         String title = "Title";
@@ -298,7 +304,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getSectionTitleBlock( title );
 
-        assertEquals( "Wrong sectionTitle!", expected, actual );
+        assertEquals( expected, actual, "Wrong sectionTitle!" );
     }
 
     /**
@@ -307,6 +313,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getSection1Block getSection1Block}( title ).
      */
+    @Test
     public void testSection1()
     {
         String title = "Title1";
@@ -323,7 +330,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getSection1Block( title );
 
-        assertEquals( "Wrong section1 block!", expected, actual );
+        assertEquals( expected, actual, "Wrong section1 block!" );
     }
 
     /**
@@ -332,6 +339,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getSection2Block getSection2Block}( title ).
      */
+    @Test
     public void testSection2()
     {
         String title = "Title2";
@@ -348,7 +356,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getSection2Block( title );
 
-        assertEquals( "Wrong section2 block!", expected, actual );
+        assertEquals( expected, actual, "Wrong section2 block!" );
     }
 
     /**
@@ -357,6 +365,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getSection3Block getSection3Block}( title ).
      */
+    @Test
     public void testSection3()
     {
         String title = "Title3";
@@ -373,7 +382,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getSection3Block( title );
 
-        assertEquals( "Wrong section3 block!", expected, actual );
+        assertEquals( expected, actual, "Wrong section3 block!" );
     }
 
     /**
@@ -383,6 +392,7 @@ public abstract class AbstractSinkTest
      * {@link #getSection4Block getSection4Block}( title ).
      *
      */
+    @Test
     public void testSection4()
     {
         String title = "Title4";
@@ -399,7 +409,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getSection4Block( title );
 
-        assertEquals( "Wrong section4 block!", expected, actual );
+        assertEquals( expected, actual, "Wrong section4 block!" );
     }
 
     /**
@@ -408,6 +418,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getSection5Block getSection5Block}( title ).
      */
+    @Test
     public void testSection5()
     {
         String title = "Title5";
@@ -424,7 +435,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getSection5Block( title );
 
-        assertEquals( "Wrong section5 block!", expected, actual );
+        assertEquals( expected, actual, "Wrong section5 block!" );
     }
 
     /**
@@ -432,6 +443,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getHeaderBlock getHeaderBlock()}.
      */
+    @Test
     public void testHeader()
     {
         sink.header();
@@ -442,7 +454,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getHeaderBlock();
 
-        assertEquals( "Wrong header!", expected, actual );
+        assertEquals( expected, actual, "Wrong header!" );
     }
 
     /**
@@ -450,6 +462,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getContentBlock getContentBlock()}.
      */
+    @Test
     public void testContent()
     {
         sink.content();
@@ -462,7 +475,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getContentBlock();
 
-        assertEquals( "Wrong content!", expected, actual );
+        assertEquals( expected, actual, "Wrong content!" );
     }
 
     /**
@@ -470,6 +483,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getHeaderBlock getHeaderBlock()}.
      */
+    @Test
     public void testFooter()
     {
         sink.footer();
@@ -480,7 +494,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getFooterBlock();
 
-        assertEquals( "Wrong footer!", expected, actual );
+        assertEquals( expected, actual, "Wrong footer!" );
     }
 
     /**
@@ -489,6 +503,7 @@ public abstract class AbstractSinkTest
      * the same result as {@link #getListBlock getListBlock}( item ).
      *
      */
+    @Test
     public void testList()
     {
         String item = "list_item";
@@ -503,7 +518,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getListBlock( item );
 
-        assertEquals( "Wrong list!", expected, actual );
+        assertEquals( expected, actual, "Wrong list!" );
     }
 
     /**
@@ -513,6 +528,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getNumberedListBlock getNumberedListBlock}( item ).
      */
+    @Test
     public void testNumberedList()
     {
         String item = "numbered_list_item";
@@ -527,7 +543,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getNumberedListBlock( item );
 
-        assertEquals( "Wrong numbered list!", expected, actual );
+        assertEquals( expected, actual, "Wrong numbered list!" );
     }
 
     /**
@@ -538,6 +554,7 @@ public abstract class AbstractSinkTest
      * result as {@link #getDefinitionListBlock getDefinitionListBlock}
      * ( definum, definition ).
      */
+    @Test
     public void testDefinitionList()
     {
         String definum = "definum";
@@ -558,7 +575,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getDefinitionListBlock( definum, definition );
 
-        assertEquals( "Wrong definition list!", expected, actual );
+        assertEquals( expected, actual, "Wrong definition list!" );
     }
 
     /**
@@ -567,6 +584,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getFigureBlock getFigureBlock}( source, caption ).
      */
+    @Test
     public void testFigure()
     {
         String source = "figure.jpg";
@@ -594,6 +612,7 @@ public abstract class AbstractSinkTest
     }
 
 
+    @Test
     public void testFigureWithoutCaption()
     {
         String source = "figure.jpg";
@@ -615,6 +634,7 @@ public abstract class AbstractSinkTest
             assertEquals( actual, expected );
         }
     }
+    @Test
     public void testFigureFromUrl()
     {
         String source = "http://www.gravatar.com/avatar/cdbe99fe3d6af6a18dd8c35b0687a50b?d=mm&s=60";
@@ -645,6 +665,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getTableBlock getTableBlock}( cell, caption ).
      */
+    @Test
     public void testTable()
     {
         String cell = "cell";
@@ -683,6 +704,7 @@ public abstract class AbstractSinkTest
      * paragraph_()]</code>, invoked on the current sink, produces
      * the same result as {@link #getParagraphBlock getParagraphBlock}( text ).
      */
+    @Test
     public void testParagraph()
     {
         String text = "Text";
@@ -695,7 +717,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getParagraphBlock( text );
 
-        assertEquals( "Wrong paragraph!", expected, actual );
+        assertEquals( expected, actual, "Wrong paragraph!" );
     }
 
     /**
@@ -703,6 +725,7 @@ public abstract class AbstractSinkTest
      * data_()]</code>, invoked on the current sink, produces
      * the same result as {@link #getDataBlock getDataBlock}( text ).
      */
+    @Test
     public void testData()
     {
         String value = "Value";
@@ -716,7 +739,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getDataBlock( value, text );
 
-        assertEquals( "Wrong data!", expected, actual );
+        assertEquals( expected, actual, "Wrong data!" );
     }
 
     /**
@@ -724,6 +747,7 @@ public abstract class AbstractSinkTest
      * time_()]</code>, invoked on the current sink, produces
      * the same result as {@link #getTimeBlock getTimeBlock}( text ).
      */
+    @Test
     public void testTime()
     {
         String datetime = "DateTime";
@@ -737,7 +761,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getTimeBlock( datetime, text );
 
-        assertEquals( "Wrong time!", expected, actual );
+        assertEquals( expected, actual, "Wrong time!" );
     }
 
     /**
@@ -745,6 +769,7 @@ public abstract class AbstractSinkTest
      * address_()]</code>, invoked on the current sink, produces
      * the same result as {@link #getAddressBlock getAddressBlock}( text ).
      */
+    @Test
     public void testAddress()
     {
         String text = "Text";
@@ -757,7 +782,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getAddressBlock( text );
 
-        assertEquals( "Wrong address!", expected, actual );
+        assertEquals( expected, actual, "Wrong address!" );
     }
 
     /**
@@ -765,6 +790,7 @@ public abstract class AbstractSinkTest
      * blockquote_()]</code>, invoked on the current sink, produces
      * the same result as {@link #getBlockquoteBlock}( text ).
      */
+    @Test
     public void testBlockquote()
     {
         String text = "Text";
@@ -777,7 +803,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getBlockquoteBlock( text );
 
-        assertEquals( "Wrong blockquote!", expected, actual );
+        assertEquals( expected, actual, "Wrong blockquote!" );
     }
 
     /**
@@ -785,6 +811,7 @@ public abstract class AbstractSinkTest
      * division_()]</code>, invoked on the current sink, produces
      * the same result as {@link #getDivisionBlock getDivisionBlock}( text ).
      */
+    @Test
     public void testDivider()
     {
         String text = "Text";
@@ -797,7 +824,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getDivisionBlock( text );
 
-        assertEquals( "Wrong division!", expected, actual );
+        assertEquals( expected, actual, "Wrong division!" );
     }
 
     /**
@@ -805,6 +832,7 @@ public abstract class AbstractSinkTest
      * verbatim_()]</code>, invoked on the current sink, produces the
      * same result as {@link #getVerbatimBlock getVerbatimBlock}( text ).
      */
+    @Test
     public void testVerbatim()
     {
         String text = "Text";
@@ -817,7 +845,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getVerbatimBlock( text );
 
-        assertEquals( "Wrong verbatim!", expected, actual );
+        assertEquals( expected, actual, "Wrong verbatim!" );
     }
 
     /**
@@ -825,6 +853,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getHorizontalRuleBlock getHorizontalRuleBlock()}.
      */
+    @Test
     public void testHorizontalRule()
     {
         sink.horizontalRule();
@@ -834,7 +863,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getHorizontalRuleBlock();
 
-        assertEquals( "Wrong horizontal rule!", expected, actual );
+        assertEquals( expected, actual, "Wrong horizontal rule!" );
     }
 
     /**
@@ -842,6 +871,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getPageBreakBlock getPageBreakBlock()}.
      */
+    @Test
     public void testPageBreak()
     {
         sink.pageBreak();
@@ -851,7 +881,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getPageBreakBlock();
 
-        assertEquals( "Wrong pageBreak!", expected, actual );
+        assertEquals( expected, actual, "Wrong pageBreak!" );
     }
 
     /**
@@ -859,6 +889,7 @@ public abstract class AbstractSinkTest
      * anchor_()]</code>, invoked on the current sink, produces the same
      * result as {@link #getAnchorBlock getAnchorBlock}( anchor ).
      */
+    @Test
     public void testAnchor()
     {
         String anchor = "Anchor";
@@ -871,7 +902,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getAnchorBlock( anchor );
 
-        assertEquals( "Wrong anchor!", expected, actual );
+        assertEquals( expected, actual, "Wrong anchor!" );
     }
 
     /**
@@ -879,6 +910,7 @@ public abstract class AbstractSinkTest
      * link_()]</code>, invoked on the current sink, produces the same
      * result as {@link #getLinkBlock getLinkBlock}( link, text ).
      */
+    @Test
     public void testLink()
     {
         String link = "#Link";
@@ -892,7 +924,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getLinkBlock( link, text );
 
-        assertEquals( "Wrong link!", expected, actual );
+        assertEquals( expected, actual, "Wrong link!" );
     }
 
     /**
@@ -900,6 +932,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getInlineBlock getInlineBlock}( text ).
      */
+    @Test
     public void testInline()
     {
         String text = "Inline";
@@ -912,7 +945,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getInlineBlock( text );
 
-        assertEquals( "Wrong inline!", expected, actual );
+        assertEquals( expected, actual, "Wrong inline!" );
     }
 
     /**
@@ -920,6 +953,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getInlineBoldBlock getInlineBoldBlock}( text ).
      */
+    @Test
     public void testInlineBold()
     {
         String text = "InlineBold";
@@ -932,7 +966,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getInlineBoldBlock( text );
 
-        assertEquals( "Wrong inline bold!", expected, actual );
+        assertEquals( expected, actual, "Wrong inline bold!" );
     }
 
     /**
@@ -940,6 +974,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getInlineBoldBlock getInlineBoldBlock}( text ).
      */
+    @Test
     public void testInlineItalic()
     {
         String text = "InlineItalic";
@@ -952,7 +987,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getInlineItalicBlock( text );
 
-        assertEquals( "Wrong inline italic!", expected, actual );
+        assertEquals( expected, actual, "Wrong inline italic!" );
     }
 
     /**
@@ -960,6 +995,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getInlineBoldBlock getInlineBoldBlock}( text ).
      */
+    @Test
     public void testInlineCode()
     {
         String text = "InlineCode";
@@ -972,7 +1008,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getInlineCodeBlock( text );
 
-        assertEquals( "Wrong inline code!", expected, actual );
+        assertEquals( expected, actual, "Wrong inline code!" );
     }
 
     /**
@@ -980,6 +1016,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getLineBreakBlock getLineBreakBlock()}.
      */
+    @Test
     public void testLineBreak()
     {
         sink.lineBreak();
@@ -989,7 +1026,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getLineBreakBlock();
 
-        assertEquals( "Wrong lineBreak!", expected, actual );
+        assertEquals( expected, actual, "Wrong lineBreak!" );
     }
 
     /**
@@ -997,6 +1034,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getLineBreakOpportunityBlock getLineBreakOpportunityBlock()}.
      */
+    @Test
     public void testLineBreakOpportunity()
     {
         sink.lineBreakOpportunity();
@@ -1006,7 +1044,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getLineBreakOpportunityBlock();
 
-        assertEquals( "Wrong lineBreakOpportunity!", expected, actual );
+        assertEquals( expected, actual, "Wrong lineBreakOpportunity!" );
     }
 
     /**
@@ -1014,6 +1052,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getNonBreakingSpaceBlock getNonBreakingSpaceBlock()}.
      */
+    @Test
     public void testNonBreakingSpace()
     {
         sink.nonBreakingSpace();
@@ -1023,7 +1062,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getNonBreakingSpaceBlock();
 
-        assertEquals( "Wrong nonBreakingSpace!", expected, actual );
+        assertEquals( expected, actual, "Wrong nonBreakingSpace!" );
     }
 
     /**
@@ -1031,6 +1070,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getTextBlock getTextBlock()}.
      */
+    @Test
     public void testText()
     {
         String text = "~,_=,_-,_+,_*,_[,_],_<,_>,_{,_},_\\";
@@ -1041,7 +1081,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getTextBlock( text );
 
-        assertEquals( "Wrong text!", expected, actual );
+        assertEquals( expected, actual, "Wrong text!" );
     }
 
     /**
@@ -1049,6 +1089,7 @@ public abstract class AbstractSinkTest
      * invoked on the current sink, produces the same result as
      * {@link #getRawTextBlock getRawTextBlock}( text ).
      */
+    @Test
     public void testRawText()
     {
         String text = "~,_=,_-,_+,_*,_[,_],_<,_>,_{,_},_\\";
@@ -1059,7 +1100,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getRawTextBlock( text );
 
-        assertEquals( "Wrong rawText!", expected, actual );
+        assertEquals( expected, actual, "Wrong rawText!" );
     }
 
     /**
@@ -1068,6 +1109,7 @@ public abstract class AbstractSinkTest
      * {@link #getCommentBlock getCommentBlock}( comment ).
      * @since 1.1.1
      */
+    @Test
     public void testComment()
     {
         String comment = "Simple comment with ----";
@@ -1078,7 +1120,7 @@ public abstract class AbstractSinkTest
         String actual = testWriter.toString();
         String expected = getCommentBlock( comment );
 
-        assertEquals( "Wrong comment!", expected, actual );
+        assertEquals( expected, actual, "Wrong comment!" );
 
         testWriter.reset();
         sink = createSink( testWriter );
@@ -1091,7 +1133,7 @@ public abstract class AbstractSinkTest
         actual = testWriter.toString();
         expected = getCommentBlock( comment );
 
-        assertEquals( "Wrong comment!", expected, actual );
+        assertEquals( expected, actual, "Wrong comment!" );
     }
 
     // ----------------------------------------------------------------------
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTestCase.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTestCase.java
index 1ffd78c..cc07079 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTestCase.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractSinkTestCase.java
@@ -29,14 +29,17 @@ import java.util.Objects;
 
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
-import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.testing.PlexusTest;
+import org.junit.jupiter.api.Test;
+
+import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
  * @since 1.0
  */
+@PlexusTest
 public abstract class AbstractSinkTestCase
-    extends PlexusTestCase
 {
     private Writer testWriter;
 
@@ -50,6 +53,7 @@ public abstract class AbstractSinkTestCase
      *
      * @throws java.lang.Exception if anything goes wrong.
      */
+    @Test
     public void testApt()
         throws Exception
     {
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractXmlSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractXmlSinkTest.java
index 07c6cc9..7752110 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractXmlSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/AbstractXmlSinkTest.java
@@ -24,9 +24,9 @@ import javax.swing.text.html.HTML.Tag;
 import org.apache.maven.doxia.markup.Markup;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  *
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/RandomAccessSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/RandomAccessSinkTest.java
index dce1f54..43e164b 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/RandomAccessSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/RandomAccessSinkTest.java
@@ -28,9 +28,9 @@ import java.io.Writer;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkFactory;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class RandomAccessSinkTest
 {
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkAdapterTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkAdapterTest.java
index 9f28fa7..e29bcc8 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkAdapterTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkAdapterTest.java
@@ -22,7 +22,7 @@ import org.apache.maven.doxia.sink.impl.SinkAdapter;
  * under the License.
  */
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
 /**
  *
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventAttributeSetTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventAttributeSetTest.java
index e628d5f..99cedd7 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventAttributeSetTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkEventAttributeSetTest.java
@@ -25,10 +25,10 @@ import javax.swing.text.AttributeSet;
 
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Test SinkEventAttributeSet.
@@ -39,7 +39,7 @@ public class SinkEventAttributeSetTest
 {
     private SinkEventAttributeSet sinkEventAttributeSet;
 
-    @Before
+    @BeforeEach
     public void setUp()
     {
         this.sinkEventAttributeSet = new SinkEventAttributeSet();
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkUtilsTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkUtilsTest.java
index e990c27..3eb8a7c 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkUtilsTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/SinkUtilsTest.java
@@ -24,10 +24,10 @@ import javax.swing.text.MutableAttributeSet;
 
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 
-import org.junit.Assert;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 /**
  *
@@ -69,7 +69,7 @@ public class SinkUtilsTest
     @Test
     public void testFilterAttributes()
     {
-        Assert.assertNull( SinkUtils.filterAttributes( null, null ) );
+        assertNull( SinkUtils.filterAttributes( null, null ) );
 
         AttributeSet attributes = new SinkEventAttributeSet( 1 );
         String[] valids = null;
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TestAbstractSink.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TestAbstractSink.java
index cec63b0..f32f87e 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TestAbstractSink.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/TestAbstractSink.java
@@ -18,9 +18,9 @@ package org.apache.maven.doxia.sink.impl;
  * under the License.
  */
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 public class TestAbstractSink
 {
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java
index 3913825..d854e82 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/Xhtml5BaseSinkTest.java
@@ -27,11 +27,10 @@ import javax.swing.text.html.HTML.Attribute;
 import org.apache.maven.doxia.markup.Markup;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Test for Xhtml5BaseSink.
@@ -45,7 +44,7 @@ public class Xhtml5BaseSinkTest
 
     String EOL = System.lineSeparator();
 
-    @Before
+    @BeforeEach
     public void setUp()
     {
         writer =  new StringWriter();
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java
index 838ea0d..e02da96 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/sink/impl/XhtmlBaseSinkTest.java
@@ -27,11 +27,12 @@ import javax.swing.text.html.HTML.Attribute;
 import org.apache.maven.doxia.markup.Markup;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeAll;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
 
-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;
 
 /**
  * Test for XhtmlBaseSink.
@@ -46,7 +47,7 @@ public class XhtmlBaseSinkTest
     private XhtmlBaseSink sink;
     private Writer writer;
 
-    @Before
+    @BeforeEach
     public void setUp()
     {
         writer =  new StringWriter();
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/util/ByLineReaderSourceTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/util/ByLineReaderSourceTest.java
index ca4b8df..8d3a9dd 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/util/ByLineReaderSourceTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/util/ByLineReaderSourceTest.java
@@ -23,9 +23,9 @@ import java.io.StringReader;
 
 import org.apache.maven.doxia.parser.ParseException;
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Unit test for {@link org.apache.maven.doxia.util.ByLineReaderSource}.
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/util/DoxiaUtilsTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/util/DoxiaUtilsTest.java
index 1666b37..126bd7e 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/util/DoxiaUtilsTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/util/DoxiaUtilsTest.java
@@ -25,128 +25,113 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.GregorianCalendar;
 
-import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.testing.PlexusTest;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Test case for <code>DoxiaUtils</code>.
  *
  * @author ltheussl
  */
+@PlexusTest
 public class DoxiaUtilsTest
-    extends PlexusTestCase
 {
     /**
      * Verify the expected results.
      */
+    @Test
     public void testIsInternalLink()
     {
         String link = "#anchor";
-        assertTrue( "Should be an internal link: " + link,
-            DoxiaUtils.isInternalLink( link ) );
+        assertTrue( DoxiaUtils.isInternalLink( link ), "Should be an internal link: " + link );
 
         link = "http://maven.apache.org/index.html#anchor";
-        assertFalse( "Should NOT be an internal link: " + link,
-            DoxiaUtils.isInternalLink( link ) );
+        assertFalse( DoxiaUtils.isInternalLink( link ), "Should NOT be an internal link: " + link );
 
         link = "./index.html";
-        assertFalse( "Should NOT be an internal link: " + link,
-            DoxiaUtils.isInternalLink( link ) );
+        assertFalse( DoxiaUtils.isInternalLink( link ), "Should NOT be an internal link: " + link );
     }
 
     /**
      * Verify the expected results.
      */
+    @Test
     public void testIsExternalLink()
     {
         String link = "http://maven.apache.org/";
-        assertTrue( "Should be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertTrue( DoxiaUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "https://maven.apache.org/";
-        assertTrue( "Should be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertTrue( DoxiaUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "HTTPS://MAVEN.APACHE.ORG/";
-        assertTrue( "Should be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertTrue( DoxiaUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "ftp:/maven.apache.org/";
-        assertTrue( "Should be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertTrue( DoxiaUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "mailto:maven@apache.org";
-        assertTrue( "Should be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertTrue( DoxiaUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "file:/index.html";
-        assertTrue( "Should be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertTrue( DoxiaUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "resource_type://domain:port/filepathname?query_string#anchor";
-        assertTrue( "Should be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertTrue( DoxiaUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "index.html";
-        assertFalse( "Should NOT be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertFalse( DoxiaUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = "example.pdf";
-        assertFalse( "Should NOT be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertFalse( DoxiaUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = "./index.html";
-        assertFalse( "Should NOT be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertFalse( DoxiaUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = "../index.html";
-        assertFalse( "Should NOT be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertFalse( DoxiaUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         // Windows style separators "\" are not allowed
 
         link = "file:\\index.html";
-        assertFalse( "Should NOT be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertFalse( DoxiaUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = ".\\index.html";
-        assertFalse( "Should NOT be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertFalse( DoxiaUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = "..\\index.html";
-        assertFalse( "Should NOT be an external link: " + link,
-            DoxiaUtils.isExternalLink( link ) );
+        assertFalse( DoxiaUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
     }
 
     /**
      * Verify the expected results.
      */
+    @Test
     public void testIsLocalLink()
     {
         String link = "index.html";
-        assertTrue( "Should be a local link: " + link,
-            DoxiaUtils.isLocalLink( link ) );
+        assertTrue( DoxiaUtils.isLocalLink( link ), "Should be a local link: " + link );
 
         link = "./index.html";
-        assertTrue( "Should be a local link: " + link,
-            DoxiaUtils.isLocalLink( link ) );
+        assertTrue( DoxiaUtils.isLocalLink( link ), "Should be a local link: " + link );
 
         link = "../index.html";
-        assertTrue( "Should be a local link: " + link,
-            DoxiaUtils.isLocalLink( link ) );
+        assertTrue( DoxiaUtils.isLocalLink( link ), "Should be a local link: " + link );
 
         link = "#anchor";
-        assertFalse( "Should NOT be a local link: " + link,
-            DoxiaUtils.isLocalLink( link ) );
+        assertFalse( DoxiaUtils.isLocalLink( link ), "Should NOT be a local link: " + link );
 
         link = "http://maven.apache.org/";
-        assertFalse( "Should NOT be a local link: " + link,
-            DoxiaUtils.isLocalLink( link ) );
+        assertFalse( DoxiaUtils.isLocalLink( link ), "Should NOT be a local link: " + link );
 
     }
 
     /**
      * Verify the expected results.
      */
+    @Test
     public void testEncodeId()
     {
         assertNull( DoxiaUtils.encodeId( null ) );
@@ -169,6 +154,7 @@ public class DoxiaUtilsTest
     /**
      * Verify the expected results.
      */
+    @Test
     public void testIsValidId()
     {
         assertFalse( DoxiaUtils.isValidId( null ) );
@@ -195,6 +181,7 @@ public class DoxiaUtilsTest
     /**
      * Verify the expected results.
      */
+    @Test
     public void testParseDate()
     {
         final int year = 1973;
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/util/HtmlToolsTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/util/HtmlToolsTest.java
index f592abb..b2e4924 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/util/HtmlToolsTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/util/HtmlToolsTest.java
@@ -21,19 +21,27 @@ package org.apache.maven.doxia.util;
 
 import java.net.URLEncoder;
 
-import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.testing.PlexusTest;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Test case for <code>HtmlTools</code>.
  *
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  */
+@PlexusTest
 public class HtmlToolsTest
-    extends PlexusTestCase
 {
     /**
      * Verify the expected results.
      */
+    @Test
     public void testEscapeHTML()
     {
         assertEquals( HtmlTools.escapeHTML( null ), "" );
@@ -60,6 +68,7 @@ public class HtmlToolsTest
     /**
      * Verify the expected results.
      */
+    @Test
     public void testUnescapeHTML()
     {
         assertNull( HtmlTools.unescapeHTML( null ) );
@@ -89,6 +98,7 @@ public class HtmlToolsTest
     /**
      * Verify the expected results.
      */
+    @Test
     public void testEncodeId()
     {
         assertNull( HtmlTools.encodeId( null ) );
@@ -110,6 +120,7 @@ public class HtmlToolsTest
      *
      * @throws Exception should not happen.
      */
+    @Test
     public void testEncodeURL()
         throws Exception
     {
@@ -128,6 +139,7 @@ public class HtmlToolsTest
     /**
      * Verify the expected results.
      */
+    @Test
     public void testIsId()
     {
         assertFalse( HtmlTools.isId( null ) );
@@ -150,6 +162,7 @@ public class HtmlToolsTest
     /**
      * Verify the expected results.
      */
+    @Test
     public void testGetHtmlTag()
     {
         assertNull( HtmlTools.getHtmlTag( null ) );
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java b/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
index 4c1f700..a08e653 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/util/XmlValidatorTest.java
@@ -19,20 +19,22 @@ package org.apache.maven.doxia.util;
  * under the License.
  */
 
-import org.codehaus.plexus.PlexusTestCase;
+import org.codehaus.plexus.testing.PlexusTest;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.xml.XmlStreamReader;
+import org.junit.jupiter.api.Test;
 
 /**
  * Test case for <code>XmlValidator</code>.
  *
  * @author Hervé Boutemy
  */
+@PlexusTest
 public class XmlValidatorTest
-extends PlexusTestCase
 {
+    @Test
     public void testValidate()
-    throws Exception
+        throws Exception
     {
         String xml = IOUtil.toString( new XmlStreamReader( this.getClass().getResourceAsStream( "/test.xhtml" ) ) );
 
diff --git a/doxia-core/src/test/java/org/apache/maven/doxia/xsd/AbstractXmlValidator.java b/doxia-core/src/test/java/org/apache/maven/doxia/xsd/AbstractXmlValidator.java
index 7290559..4ac46a5 100644
--- a/doxia-core/src/test/java/org/apache/maven/doxia/xsd/AbstractXmlValidator.java
+++ b/doxia-core/src/test/java/org/apache/maven/doxia/xsd/AbstractXmlValidator.java
@@ -26,14 +26,12 @@ import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
-import junit.framework.AssertionFailedError;
-
-import org.apache.maven.doxia.parser.Parser;
-
-import org.codehaus.plexus.DefaultPlexusContainer;
-import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.logging.Logger;
 
+import org.codehaus.plexus.testing.PlexusTest;
+import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.xml.sax.EntityResolver;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
@@ -44,6 +42,8 @@ import org.xml.sax.XMLReader;
 import org.xml.sax.helpers.DefaultHandler;
 import org.xml.sax.helpers.XMLReaderFactory;
 
+import static org.junit.jupiter.api.Assertions.fail;
+
 /**
  * Abstract class to validate XML files.
  *
@@ -51,11 +51,14 @@ import org.xml.sax.helpers.XMLReaderFactory;
  *
  * @since 1.2
  */
+@PlexusTest
 public abstract class AbstractXmlValidator
-        extends PlexusTestCase
 {
+
     protected static final String EOL = System.getProperty( "line.separator" );
 
+    protected final Logger logger = LoggerFactory.getLogger( getClass() );
+
     /** XMLReader to validate xml file */
     private XMLReader xmlReader;
 
@@ -79,12 +82,9 @@ public abstract class AbstractXmlValidator
             || message.contains( "cvc-attribute.3:" ) ); // Doxia allow space
     }
 
-    @Override
+    @AfterEach
     protected void tearDown()
-            throws Exception
     {
-        super.tearDown();
-
         xmlReader = null;
     }
 
@@ -96,12 +96,10 @@ public abstract class AbstractXmlValidator
      * @see #addNamespaces(String)
      * @see #getTestDocuments()
      */
+    @Test
     public void testValidateFiles()
         throws Exception
     {
-        final Logger logger =
-            ( (DefaultPlexusContainer) getContainer() ).getLoggerManager().getLoggerForComponent( Parser.ROLE );
-
         for ( Map.Entry<String, String> entry : getTestDocuments().entrySet() )
         {
             if ( logger.isDebugEnabled() )
@@ -182,15 +180,15 @@ public abstract class AbstractXmlValidator
             }
             catch ( SAXNotRecognizedException e )
             {
-                throw new AssertionFailedError( "SAXNotRecognizedException: " + e.getMessage() );
+                fail( "SAXNotRecognizedException: " + e.getMessage() );
             }
             catch ( SAXNotSupportedException e )
             {
-                throw new AssertionFailedError( "SAXNotSupportedException: " + e.getMessage() );
+                fail( "SAXNotSupportedException: " + e.getMessage() );
             }
             catch ( SAXException e )
             {
-                throw new AssertionFailedError( "SAXException: " + e.getMessage() );
+                fail( "SAXException: " + e.getMessage() );
             }
         }
 
diff --git a/doxia-modules/doxia-module-apt/pom.xml b/doxia-modules/doxia-module-apt/pom.xml
index 296246c..ff0e96d 100644
--- a/doxia-modules/doxia-module-apt/pom.xml
+++ b/doxia-modules/doxia-module-apt/pom.xml
@@ -51,6 +51,10 @@ under the License.
       <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.google.inject</groupId>
       <artifactId>guice</artifactId>
       <classifier>no_aop</classifier>
@@ -71,5 +75,10 @@ under the License.
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-testing</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
index f36b8cd..63786e3 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParser.java
@@ -19,19 +19,19 @@ package org.apache.maven.doxia.module.apt;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
 import org.apache.maven.doxia.parser.AbstractTextParser;
 import org.apache.maven.doxia.parser.ParseException;
-import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.SinkAdapter;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.util.DoxiaUtils;
 
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.slf4j.Logger;
@@ -52,7 +52,7 @@ import java.util.StringTokenizer;
  *
  * @since 1.0
  */
-@Component( role = Parser.class, hint = "apt" )
+@Named( "apt" )
 public class AptParser
     extends AbstractTextParser
     implements AptMarkup
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParserModule.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParserModule.java
index f8b4114..f433a0f 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParserModule.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptParserModule.java
@@ -19,16 +19,16 @@ package org.apache.maven.doxia.module.apt;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import org.apache.maven.doxia.parser.module.AbstractParserModule;
-import org.apache.maven.doxia.parser.module.ParserModule;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * <p>AptParserModule class.</p>
  *
  * @since 1.6
  */
-@Component( role = ParserModule.class, hint = "apt" )
+@Named( "apt" )
 public class AptParserModule
     extends AbstractParserModule
 {
diff --git a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSinkFactory.java b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSinkFactory.java
index 82847fc..300e230 100644
--- a/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSinkFactory.java
+++ b/doxia-modules/doxia-module-apt/src/main/java/org/apache/maven/doxia/module/apt/AptSinkFactory.java
@@ -19,12 +19,12 @@ package org.apache.maven.doxia.module.apt;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import java.io.Writer;
 
 import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.sink.SinkFactory;
 import org.apache.maven.doxia.sink.impl.AbstractTextSinkFactory;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * APT implementation of the Sink factory.
@@ -32,7 +32,7 @@ import org.codehaus.plexus.component.annotations.Component;
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  * @since 1.0
  */
-@Component( role = SinkFactory.class, hint = "apt" )
+@Named( "apt" )
 public class AptSinkFactory
     extends AbstractTextSinkFactory
 {
diff --git a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
index da243f8..00f1f99 100644
--- a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
+++ b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptParserTest.java
@@ -19,6 +19,8 @@ package org.apache.maven.doxia.module.apt;
  * under the License.
  */
 
+import javax.inject.Inject;
+
 import java.io.IOException;
 import java.io.Reader;
 import java.io.StringWriter;
@@ -33,6 +35,13 @@ import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
+import org.codehaus.plexus.testing.PlexusTest;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
@@ -41,17 +50,9 @@ public class AptParserTest
     extends AbstractParserTest
 {
 
+    @Inject
     private AptParser parser;
 
-    @Override
-    protected void setUp()
-        throws Exception
-    {
-        super.setUp();
-
-        parser = (AptParser) lookup( Parser.class, "apt" );
-    }
-
     protected Parser createParser()
     {
         return parser;
@@ -69,6 +70,7 @@ public class AptParserTest
         }
     }
 
+    @Test
     public void testLineBreak()
         throws Exception
     {
@@ -77,6 +79,7 @@ public class AptParserTest
         assertTrue( linebreak.contains( "Line\\" + EOL + "break." ) );
     }
 
+    @Test
     public void testSnippetMacro()
         throws Exception
     {
@@ -85,6 +88,7 @@ public class AptParserTest
         assertTrue( macro.contains( "<modelVersion\\>4.0.0\\</modelVersion\\>" ) );
     }
 
+    @Test
     public void testCommentsBeforeTitle()
         throws Exception
     {
@@ -94,6 +98,7 @@ public class AptParserTest
             + EOL + " -----" + EOL + " Test DOXIA-379" ) );
     }
 
+    @Test
     public void testSnippet()
         throws Exception
     {
@@ -107,11 +112,12 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "list", "listItem", "text", "verbatim", "text", "verbatim_",
+        assertSinkEquals( it, "head", "head_", "body", "list", "listItem", "text", "verbatim", "text", "verbatim_",
                       "paragraph", "text", "paragraph_", "listItem_", "listItem", "text", "verbatim", "text",
                       "verbatim_", "paragraph", "text", "paragraph_", "listItem_", "list_", "body_" );
     }
 
+    @Test
     public void testSnippetTrailingSpace()
         throws Exception
     {
@@ -124,9 +130,10 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "verbatim", "text", "verbatim_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "verbatim", "text", "verbatim_", "body_" );
     }
 
+    @Test
     public void testTocMacro()
         throws Exception
     {
@@ -144,6 +151,7 @@ public class AptParserTest
      * @throws IOException if the test file cannot be read.
      * @throws ParseException if the test file cannot be parsed.
      */
+    @Test
     public void testTestDocument()
         throws IOException, ParseException
     {
@@ -155,6 +163,7 @@ public class AptParserTest
         }
     }
 
+    @Test
     public void testBoxedVerbatim()
         throws Exception
     {
@@ -167,14 +176,15 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertStartsWith( it, "head", "head_", "body" );
-        assertEquals( it.next(), "verbatim", SinkEventAttributeSet.BOXED );
-        assertStartsWith( it, "text", "verbatim_" );
+        assertSinkStartsWith( it, "head", "head_", "body" );
+        assertSinkEquals( it.next(), "verbatim", SinkEventAttributeSet.BOXED );
+        assertSinkStartsWith( it, "text", "verbatim_" );
 
-        assertEquals( it.next(), "verbatim", new Object[] { null } );
-        assertEquals( it, "text", "verbatim_", "body_" );
+        assertSinkEquals( it.next(), "verbatim", new Object[] { null } );
+        assertSinkEquals( it, "text", "verbatim_", "body_" );
     }
 
+    @Test
     public void testMultiLinesInTableCells()
         throws Exception
     {
@@ -195,36 +205,37 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertStartsWith( it, "head", "head_", "body", "table", "tableRows", "tableRow", "tableCell" );
-        assertEquals( it.next(), "text", "cell 1, 1" );
+        assertSinkStartsWith( it, "head", "head_", "body", "table", "tableRows", "tableRow", "tableCell" );
+        assertSinkEquals( it.next(), "text", "cell 1, 1" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 1,2" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(), "text", "cell 1,2" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 1,3" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(), "text", "cell 1,3" );
 
-        assertStartsWith( it, "tableCell_", "tableRow_", "tableRow", "tableCell" );
-        assertEquals( it.next(), "text", "cell 2,1" );
+        assertSinkStartsWith( it, "tableCell_", "tableRow_", "tableRow", "tableCell" );
+        assertSinkEquals( it.next(), "text", "cell 2,1" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 2, 2" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(), "text", "cell 2, 2" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 2,3" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(), "text", "cell 2,3" );
         
-        assertStartsWith( it, "tableCell_", "tableRow_", "tableRow", "tableCell" );
-        assertEquals( it.next(), "text", "cell 3,1" );
+        assertSinkStartsWith( it, "tableCell_", "tableRow_", "tableRow", "tableCell" );
+        assertSinkEquals( it.next(), "text", "cell 3,1" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 3,2" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(), "text", "cell 3,2" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 3, 3" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(), "text", "cell 3, 3" );
 
-        assertEquals( it, "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
+        assertSinkEquals( it, "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
     }
 
+    @Test
     public void testLineBreakInTableCells()
         throws Exception
     {
@@ -245,45 +256,46 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertStartsWith( it, "head", "head_", "body", "table", "tableRows", "tableRow", "tableCell" );
-        assertEquals( it.next(), "text", "cell 1,\u00A0" );
+        assertSinkStartsWith( it, "head", "head_", "body", "table", "tableRows", "tableRow", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell 1,\u00A0" );
 
         assertEquals( it.next().getName(), "lineBreak" );
-        assertEquals( it.next(), "text", "1" );
+        assertSinkEquals( it.next(),"text", "1" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 1,2" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell 1,2" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 1,3" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell 1,3" );
 
-        assertStartsWith( it, "tableCell_", "tableRow_", "tableRow", "tableCell" );
-        assertEquals( it.next(), "text", "cell 2,1" );
+        assertSinkStartsWith( it, "tableCell_", "tableRow_", "tableRow", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell 2,1" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 2,\u00A0" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell 2,\u00A0" );
 
         assertEquals( it.next().getName(), "lineBreak" );
-        assertEquals( it.next(), "text", "2" );
+        assertSinkEquals( it.next(),"text", "2" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 2,3" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell 2,3" );
 
-        assertStartsWith( it, "tableCell_", "tableRow_", "tableRow", "tableCell" );
-        assertEquals( it.next(), "text", "cell 3,1" );
+        assertSinkStartsWith( it, "tableCell_", "tableRow_", "tableRow", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell 3,1" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 3,2" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell 3,2" );
 
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "cell 3,\u00A0" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell 3,\u00A0" );
 
         assertEquals( it.next().getName(), "lineBreak" );
-        assertEquals( it.next(), "text", "3" );
+        assertSinkEquals( it.next(),"text", "3" );
 
-        assertEquals( it, "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
+        assertSinkEquals( it, "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
     }
 
+    @Test
     public void testDOXIA38()
         throws Exception
     {
@@ -300,32 +312,33 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertStartsWith( it, "head", "head_", "body", "table", "tableRows", "tableRow" );
-        assertAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "center" );
-        assertEquals( it.next(), "text", "Centered" );
+        assertSinkStartsWith( it, "head", "head_", "body", "table", "tableRows", "tableRow" );
+        assertSinkAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "center" );
+        assertSinkEquals( it.next(),"text", "Centered" );
         assertEquals( it.next().getName(), "tableCell_" );
         
-        assertAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "center" );
-        assertEquals( it.next(), "text", "Centered" );
+        assertSinkAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "center" );
+        assertSinkEquals( it.next(),"text", "Centered" );
         assertEquals( it.next().getName(), "tableCell_" );
         
-        assertAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "center" );
-        assertEquals( it.next(), "text", "Centered" );
-        assertStartsWith( it, "tableCell_", "tableRow_", "tableRow" );
+        assertSinkAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "center" );
+        assertSinkEquals( it.next(),"text", "Centered" );
+        assertSinkStartsWith( it, "tableCell_", "tableRow_", "tableRow" );
         
-        assertAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "center" );
-        assertEquals( it.next(), "text", "Centered" );
+        assertSinkAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "center" );
+        assertSinkEquals( it.next(),"text", "Centered" );
         assertEquals( it.next().getName(), "tableCell_" );
         
-        assertAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "left" );
-        assertEquals( it.next(), "text", "Left-aligned" );
+        assertSinkAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "left" );
+        assertSinkEquals( it.next(),"text", "Left-aligned" );
         assertEquals( it.next().getName(), "tableCell_" );
         
-        assertAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "right" );
-        assertEquals( it.next(), "text", "Right-aligned" );
-        assertEquals( it, "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
+        assertSinkAttributeEquals( it.next(), "tableCell", SinkEventAttributeSet.ALIGN, "right" );
+        assertSinkEquals( it.next(),"text", "Right-aligned" );
+        assertSinkEquals( it, "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
     }
 
+    @Test
     public void testSpecialCharactersInTables()
         throws Exception
     {
@@ -342,15 +355,16 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertStartsWith( it, "head", "head_", "body", "paragraph" );
-        assertEquals( it.next(), "text", "~ = - + * [ ] < > { } \\ \u2713" );
+        assertSinkStartsWith( it, "head", "head_", "body", "paragraph" );
+        assertSinkEquals( it.next(),"text", "~ = - + * [ ] < > { } \\ \u2713" );
 
-        assertStartsWith( it, "paragraph_", "table", "tableRows", "tableRow", "tableCell" );
-        assertEquals( it.next(), "text", "~ = - + * [ ] < > { } \\ \u2713" );
+        assertSinkStartsWith( it, "paragraph_", "table", "tableRows", "tableRow", "tableCell" );
+        assertSinkEquals( it.next(),"text", "~ = - + * [ ] < > { } \\ \u2713" );
 
-        assertEquals( it, "tableCell_", "tableCell", "text", "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
+        assertSinkEquals( it, "tableCell_", "tableCell", "text", "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
     }
 
+    @Test
     public void testSpacesAndBracketsInAnchors()
         throws Exception
     {
@@ -364,24 +378,25 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertStartsWith( it, "head", "head_", "body", "paragraph" );
-        assertEquals( it.next(), "anchor", "Anchor_with_spaces_and_brackets" );
+        assertSinkStartsWith( it, "head", "head_", "body", "paragraph" );
+        assertSinkEquals( it.next(),"anchor", "Anchor_with_spaces_and_brackets" );
 
-        assertEquals( it.next(), "text", "Anchor with spaces (and brackets)" );
+        assertSinkEquals( it.next(),"text", "Anchor with spaces (and brackets)" );
 
-        assertStartsWith( it, "anchor_", "text" );
-        assertEquals( it.next(), "link", "#Anchor_with_spaces_and_brackets" );
+        assertSinkStartsWith( it, "anchor_", "text" );
+        assertSinkEquals( it.next(),"link", "#Anchor_with_spaces_and_brackets" );
 
-        assertEquals( it.next(), "text", "Anchor with spaces (and brackets)" );
+        assertSinkEquals( it.next(),"text", "Anchor with spaces (and brackets)" );
 
-        assertStartsWith( it, "link_", "text" );
-        assertEquals( it.next(), "link", "http://fake.api#method(with, args)" );
+        assertSinkStartsWith( it, "link_", "text" );
+        assertSinkEquals( it.next(),"link", "http://fake.api#method(with, args)" );
 
-        assertEquals( it.next(), "text", "method(with, args)" );
+        assertSinkEquals( it.next(),"text", "method(with, args)" );
 
-        assertEquals( it, "link_", "paragraph_", "body_" );
+        assertSinkEquals( it, "link_", "paragraph_", "body_" );
     }
 
+    @Test
     public void testSectionTitleAnchors()
         throws Exception
     {
@@ -395,10 +410,11 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "section1", "sectionTitle1", "text", "sectionTitle1_", "section1_",
+        assertSinkEquals( it, "head", "head_", "body", "section1", "sectionTitle1", "text", "sectionTitle1_", "section1_",
                       "section1", "sectionTitle1", "anchor", "text", "anchor_", "sectionTitle1_", "section1_", "body_" );
     }
-    
+
+    @Test
     public void testTableHeaders() throws Exception
     {
         // DOXIA-404
@@ -416,16 +432,17 @@ public class AptParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertStartsWith( it, "head", "head_", "body", "table", "tableRows" );
-        assertStartsWith( it, "tableRow", "tableHeaderCell", "text", "tableHeaderCell_", "tableHeaderCell", "text",
+        assertSinkStartsWith( it, "head", "head_", "body", "table", "tableRows" );
+        assertSinkStartsWith( it, "tableRow", "tableHeaderCell", "text", "tableHeaderCell_", "tableHeaderCell", "text",
                           "tableHeaderCell_", "tableRow_" );
-        assertStartsWith( it, "tableRow", "tableCell", "text", "tableCell_", "tableCell", "text", "tableCell_",
+        assertSinkStartsWith( it, "tableRow", "tableCell", "text", "tableCell_", "tableCell", "text", "tableCell_",
                           "tableRow_" );
-        assertStartsWith( it, "tableRow", "tableCell", "text", "tableCell_", "tableCell", "text", "tableCell_",
+        assertSinkStartsWith( it, "tableRow", "tableCell", "text", "tableCell_", "tableCell", "text", "tableCell_",
                           "tableRow_" );
-        assertEquals( it, "tableRows_", "table_", "body_" );
+        assertSinkEquals( it, "tableRows_", "table_", "body_" );
     }
-    
+
+    @Test
     public void testEscapedPipeInTableCell() throws Exception
     {
         // DOXIA-479
@@ -438,13 +455,14 @@ public class AptParserTest
         parser.parse( text, sink );
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
-        assertStartsWith( it, "head", "head_", "body", "table", "tableRows", "tableRow", "tableCell" );
-        assertEquals( it.next(), "text", "cell | pipe" );
-        assertStartsWith( it, "tableCell_", "tableCell" );
-        assertEquals( it.next(), "text", "next cell" );
-        assertEquals( it, "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
+        assertSinkStartsWith( it, "head", "head_", "body", "table", "tableRows", "tableRow", "tableCell" );
+        assertSinkEquals( it.next(),"text", "cell | pipe" );
+        assertSinkStartsWith( it, "tableCell_", "tableCell" );
+        assertSinkEquals( it.next(),"text", "next cell" );
+        assertSinkEquals( it, "tableCell_", "tableRow_", "tableRows_", "table_", "body_" );
     }
 
+    @Test
     public void testLiteralAnchor()
         throws Exception
     {
@@ -457,11 +475,11 @@ public class AptParserTest
         parser.parse( text, sink );
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
-        assertStartsWith( it, "head", "head_", "body", "section1", "sectionTitle1" );
-        assertEquals( it.next(), "link",
+        assertSinkStartsWith( it, "head", "head_", "body", "section1", "sectionTitle1" );
+        assertSinkEquals( it.next(),"link",
                       "../apidocs/groovyx/net/http/ParserRegistry.html#parseText(org.apache.http.HttpResponse)" );
-        assertEquals( it.next(), "text", "ParserRegistry" );
-        assertEquals( it, "link_", "sectionTitle1_", "section1_", "body_" );
+        assertSinkEquals( it.next(),"text", "ParserRegistry" );
+        assertSinkEquals( it, "link_", "sectionTitle1_", "section1_", "body_" );
     }
 
     protected String outputExtension()
diff --git a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
index de18ee8..108d369 100644
--- a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
+++ b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptSinkTest.java
@@ -25,6 +25,9 @@ import org.apache.maven.doxia.markup.Markup;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.AbstractSinkTest;
 import org.codehaus.plexus.util.StringUtils;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Test the <code>AptSink</code> class
@@ -372,6 +375,7 @@ public class AptSinkTest extends AbstractSinkTest
     /**
      * test for DOXIA-497.
      */
+    @Test
     public void testLinksAndParagraphsInTableCells()
     {
         final String linkTarget = "target";
@@ -420,9 +424,10 @@ public class AptSinkTest extends AbstractSinkTest
                 AptMarkup.STAR +
                 EOL;
 
-        assertEquals( "Wrong link or paragraph markup in table cell", expected, getSinkContent() );
+        assertEquals( expected, getSinkContent(), "Wrong link or paragraph markup in table cell" );
     }
 
+    @Test
     public void testTableCellsWithJustification()
     {
         final String linkTarget = "target";
@@ -467,6 +472,6 @@ public class AptSinkTest extends AbstractSinkTest
                 AptMarkup.TABLE_COL_LEFT_ALIGNED_MARKUP +
                 EOL;
 
-        assertEquals( "Wrong justification in table cells", expected, getSinkContent() );
+        assertEquals( expected, getSinkContent(), "Wrong justification in table cells" );
     }
 }
diff --git a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptUtilsTest.java b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptUtilsTest.java
index 4f6e330..bdb4f4c 100644
--- a/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptUtilsTest.java
+++ b/doxia-modules/doxia-module-apt/src/test/java/org/apache/maven/doxia/module/apt/AptUtilsTest.java
@@ -19,9 +19,9 @@ package org.apache.maven.doxia.module.apt;
  * under the License.
  */
 
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
 
-import static org.junit.Assert.*;
+import static org.junit.jupiter.api.Assertions.*;
 
 /**
  * Test AptUtils.
@@ -37,48 +37,48 @@ public class AptUtilsTest
     public void testIsExternalLink()
     {
         String link = "http://maven.apache.org/";
-        assertTrue( "Should be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertTrue( AptUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "https://maven.apache.org/";
-        assertTrue( "Should be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertTrue( AptUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "HTTPS://MAVEN.APACHE.ORG/";
-        assertTrue( "Should be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertTrue( AptUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "ftp:/maven.apache.org/";
-        assertTrue( "Should be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertTrue( AptUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "mailto:maven@apache.org";
-        assertTrue( "Should be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertTrue( AptUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "file:/index.html";
-        assertTrue( "Should be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertTrue( AptUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "resource_type://domain:port/filepathname?query_string#anchor";
-        assertTrue( "Should be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertTrue( AptUtils.isExternalLink( link ), "Should be an external link: " + link );
 
         link = "index.html";
-        assertFalse( "Should NOT be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertFalse( AptUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = "example.pdf";
-        assertFalse( "Should NOT be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertFalse( AptUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = "./index.html";
-        assertFalse( "Should NOT be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertFalse( AptUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = "../index.html";
-        assertFalse( "Should NOT be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertFalse( AptUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         // Windows style separators "\" are not allowed
 
         link = "file:\\index.html";
-        assertFalse( "Should NOT be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertFalse( AptUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = ".\\index.html";
-        assertFalse( "Should NOT be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertFalse( AptUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
 
         link = "..\\index.html";
-        assertFalse( "Should NOT be an external link: " + link, AptUtils.isExternalLink( link ) );
+        assertFalse( AptUtils.isExternalLink( link ), "Should NOT be an external link: " + link );
     }
 
     /**
@@ -88,11 +88,11 @@ public class AptUtilsTest
     public void testIsInternalLink()
     {
         String link = "index.html";
-        assertTrue( "Should be an internal link: " + link, AptUtils.isInternalLink( link ) );
+        assertTrue( AptUtils.isInternalLink( link ), "Should be an internal link: " + link );
         link = "file:/index.html";
-        assertFalse( "Should NOT be an internal link: " + link, AptUtils.isInternalLink( link ) );
+        assertFalse( AptUtils.isInternalLink( link ), "Should NOT be an internal link: " + link );
         link = "./index.html";
-        assertFalse( "Should NOT be an internal link: " + link, AptUtils.isInternalLink( link ) );
+        assertFalse( AptUtils.isInternalLink( link ), "Should NOT be an internal link: " + link );
     }
 
     /**
@@ -102,25 +102,25 @@ public class AptUtilsTest
     public void testIsLocalLink()
     {
         String link = "/index.html";
-        assertTrue( "Should be a local link: " + link, AptUtils.isLocalLink( link ) );
+        assertTrue( AptUtils.isLocalLink( link ), "Should be a local link: " + link );
 
         link = "./index.html";
-        assertTrue( "Should be a local link: " + link, AptUtils.isLocalLink( link ) );
+        assertTrue( AptUtils.isLocalLink( link ), "Should be a local link: " + link );
 
         link = "../index.html";
-        assertTrue( "Should be a local link: " + link, AptUtils.isLocalLink( link ) );
+        assertTrue( AptUtils.isLocalLink( link ), "Should be a local link: " + link );
 
         link = "index.html";
-        assertFalse( "Should NOT be a local link: " + link, AptUtils.isLocalLink( link ) );
+        assertFalse( AptUtils.isLocalLink( link ), "Should NOT be a local link: " + link );
 
         link = ".\\index.html";
-        assertFalse( "Should NOT be a local link: " + link, AptUtils.isLocalLink( link ) );
+        assertFalse( AptUtils.isLocalLink( link ), "Should NOT be a local link: " + link );
 
         link = "\\index.html";
-        assertFalse( "Should NOT be a local link: " + link, AptUtils.isLocalLink( link ) );
+        assertFalse( AptUtils.isLocalLink( link ), "Should NOT be a local link: " + link );
 
         link = "..\\index.html";
-        assertFalse( "Should NOT be a local link: " + link, AptUtils.isLocalLink( link ) );
+        assertFalse( AptUtils.isLocalLink( link ), "Should NOT be a local link: " + link );
     }
 
     /**
diff --git a/doxia-modules/doxia-module-fml/pom.xml b/doxia-modules/doxia-module-fml/pom.xml
index 156b306..7b445f6 100644
--- a/doxia-modules/doxia-module-fml/pom.xml
+++ b/doxia-modules/doxia-module-fml/pom.xml
@@ -46,6 +46,10 @@ under the License.
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
 
     <!-- test -->
     <dependency>
@@ -64,6 +68,11 @@ under the License.
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-testing</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
index 3068d96..a7a6223 100644
--- a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
+++ b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParser.java
@@ -27,6 +27,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
 
+import javax.inject.Named;
 import javax.swing.text.html.HTML.Attribute;
 
 import org.apache.maven.doxia.macro.MacroExecutionException;
@@ -37,13 +38,11 @@ import org.apache.maven.doxia.module.fml.model.Faqs;
 import org.apache.maven.doxia.module.fml.model.Part;
 import org.apache.maven.doxia.parser.AbstractXmlParser;
 import org.apache.maven.doxia.parser.ParseException;
-import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.XhtmlBaseSink;
 import org.apache.maven.doxia.util.DoxiaUtils;
 import org.apache.maven.doxia.util.HtmlTools;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
@@ -58,7 +57,7 @@ import org.slf4j.LoggerFactory;
  * @author ltheussl
  * @since 1.0
  */
-@Component( role = Parser.class, hint = "fml" )
+@Named( "fml" )
 public class FmlParser
     extends AbstractXmlParser
     implements FmlMarkup
diff --git a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParserModule.java b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParserModule.java
index 30e39f5..0801804 100644
--- a/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParserModule.java
+++ b/doxia-modules/doxia-module-fml/src/main/java/org/apache/maven/doxia/module/fml/FmlParserModule.java
@@ -19,16 +19,16 @@ package org.apache.maven.doxia.module.fml;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import org.apache.maven.doxia.parser.module.AbstractParserModule;
-import org.apache.maven.doxia.parser.module.ParserModule;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * <p>FmlParserModule class.</p>
  *
  * @since 1.6
  */
-@Component( role = ParserModule.class, hint = "fml" )
+@Named( "fml" )
 public class FmlParserModule
     extends AbstractParserModule
 {
diff --git a/doxia-modules/doxia-module-fml/src/test/java/org/apache/maven/doxia/module/fml/FmlParserTest.java b/doxia-modules/doxia-module-fml/src/test/java/org/apache/maven/doxia/module/fml/FmlParserTest.java
index c5a47db..bebb5bd 100644
--- a/doxia-modules/doxia-module-fml/src/test/java/org/apache/maven/doxia/module/fml/FmlParserTest.java
+++ b/doxia-modules/doxia-module-fml/src/test/java/org/apache/maven/doxia/module/fml/FmlParserTest.java
@@ -19,6 +19,8 @@ package org.apache.maven.doxia.module.fml;
  * under the License.
  */
 
+import javax.inject.Inject;
+
 import java.io.File;
 import java.io.FileFilter;
 import java.io.FileReader;
@@ -35,6 +37,14 @@ import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
 import org.apache.maven.doxia.sink.impl.XhtmlBaseSink;
 import org.codehaus.plexus.util.IOUtil;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
+import static org.codehaus.plexus.testing.PlexusExtension.getTestFile;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * @author <a href="mailto:evenisse@codehaus.org">Emmanuel Venisse</a>
@@ -42,16 +52,13 @@ import org.codehaus.plexus.util.IOUtil;
 public class FmlParserTest
     extends AbstractParserTest
 {
+    @Inject
     private FmlParser parser;
 
-    @Override
+    @BeforeEach
     protected void setUp()
         throws Exception
     {
-        super.setUp();
-
-        parser = (FmlParser) lookup( Parser.class, "fml" );
-
         // AbstractXmlParser.CachedFileEntityResolver downloads DTD/XSD files in ${java.io.tmpdir}
         // Be sure to delete them
         String tmpDir = System.getProperty( "java.io.tmpdir" );
@@ -59,7 +66,7 @@ public class FmlParserTest
         // Using FileFilter, because is it is much faster then FileUtils.listFiles 
         File[] tmpFiles = new File( tmpDir ).listFiles( new FileFilter()
         {
-            Pattern xsdPatterns = Pattern.compile( "(xml|fml\\-.+)\\.xsd" );
+            final Pattern xsdPatterns = Pattern.compile( "(xml|fml\\-.+)\\.xsd" );
             
             @Override
             public boolean accept( File pathname )
@@ -87,6 +94,7 @@ public class FmlParserTest
     }
 
     /** @throws Exception */
+    @Test
     public void testFaqEventsList()
         throws Exception
     {
@@ -152,6 +160,7 @@ public class FmlParserTest
     }
 
     /** @throws Exception */
+    @Test
     public void testEntities()
         throws Exception
     {
@@ -255,6 +264,7 @@ public class FmlParserTest
      * @throws Exception if any
      * @since 1.1.1
      */
+    @Test
     public void testFaqMacro()
         throws Exception
     {
@@ -267,7 +277,7 @@ public class FmlParserTest
         }
 
         File f = getTestFile( getBasedir(), outputBaseDir() + getOutputDir() + "macro.fml" );
-        assertTrue( "The file " + f.getAbsolutePath() + " was not created", f.exists() );
+        assertTrue( f.exists(), "The file " + f.getAbsolutePath() + " was not created" );
 
         String content;
         try ( Reader reader = new FileReader( f ) )
diff --git a/doxia-modules/doxia-module-fml/src/test/java/org/apache/maven/doxia/module/fml/FmlValidatorTest.java b/doxia-modules/doxia-module-fml/src/test/java/org/apache/maven/doxia/module/fml/FmlValidatorTest.java
index b301524..d1e3176 100644
--- a/doxia-modules/doxia-module-fml/src/test/java/org/apache/maven/doxia/module/fml/FmlValidatorTest.java
+++ b/doxia-modules/doxia-module-fml/src/test/java/org/apache/maven/doxia/module/fml/FmlValidatorTest.java
@@ -26,6 +26,9 @@ import java.util.regex.Pattern;
 import org.apache.maven.doxia.markup.XmlMarkup;
 import org.apache.maven.doxia.xsd.AbstractXmlValidatorTest;
 import org.codehaus.plexus.util.StringUtils;
+import org.junit.jupiter.api.Test;
+
+import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
 
 /**
  * Test FML files with namespace.
@@ -69,6 +72,7 @@ public class FmlValidatorTest
         return content;
     }
 
+    @Test
     public void testValidateFiles()
     {
         // TODO: super.testValidateFiles() only validates files from doxia-test-docs, what's the point?
diff --git a/doxia-modules/doxia-module-markdown/pom.xml b/doxia-modules/doxia-module-markdown/pom.xml
index 92cff9a..a221802 100644
--- a/doxia-modules/doxia-module-markdown/pom.xml
+++ b/doxia-modules/doxia-module-markdown/pom.xml
@@ -57,6 +57,10 @@ under the License.
       <artifactId>org.eclipse.sisu.plexus</artifactId>
     </dependency>
     <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.vladsch.flexmark</groupId>
       <artifactId>flexmark-all</artifactId>
       <version>0.42.14</version>
@@ -87,6 +91,11 @@ under the License.
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-testing</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
   <build>
 
diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
index 1ac7508..bba74f4 100644
--- a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
+++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParser.java
@@ -19,6 +19,9 @@ package org.apache.maven.doxia.module.markdown;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+
 import com.vladsch.flexmark.ast.Heading;
 import com.vladsch.flexmark.ast.HtmlCommentBlock;
 import com.vladsch.flexmark.util.ast.Node;
@@ -38,11 +41,8 @@ import org.apache.maven.doxia.markup.HtmlMarkup;
 import org.apache.maven.doxia.module.xhtml.XhtmlParser;
 import org.apache.maven.doxia.parser.AbstractParser;
 import org.apache.maven.doxia.parser.ParseException;
-import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.util.HtmlTools;
-import org.codehaus.plexus.component.annotations.Component;
-import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
 
@@ -66,7 +66,7 @@ import java.util.regex.Pattern;
  * @author Julien Nicoulaud
  * @since 1.3
  */
-@Component( role = Parser.class, hint = MarkdownParser.ROLE_HINT )
+@Named( MarkdownParser.ROLE_HINT )
 public class MarkdownParser
     extends AbstractParser
 {
@@ -112,7 +112,7 @@ public class MarkdownParser
      * The parser of the HTML produced by Flexmark, that we will
      * use to convert this HTML to Sink events
      */
-    @Requirement
+    @Inject
     private MarkdownHtmlParser parser;
 
     /**
@@ -279,7 +279,7 @@ public class MarkdownParser
      * which is how most Maven Skin (incl. Fluido) recognize a block of code, which
      * needs to be highlighted accordingly.
      */
-    @Component( role = MarkdownHtmlParser.class )
+    @Named
     public static class MarkdownHtmlParser
         extends XhtmlParser
     {
diff --git a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParserModule.java b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParserModule.java
index 0e1e9a1..465a6d5 100644
--- a/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParserModule.java
+++ b/doxia-modules/doxia-module-markdown/src/main/java/org/apache/maven/doxia/module/markdown/MarkdownParserModule.java
@@ -19,16 +19,16 @@ package org.apache.maven.doxia.module.markdown;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import org.apache.maven.doxia.parser.module.AbstractParserModule;
-import org.apache.maven.doxia.parser.module.ParserModule;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * {@link org.apache.maven.doxia.parser.module.ParserModule} for Markdown.
  *
  * @since 1.6
  */
-@Component( role = ParserModule.class, hint = "markdown" )
+@Named( "markdown" )
 public class MarkdownParserModule
     extends AbstractParserModule
 {
diff --git a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolverTest.java b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolverTest.java
index c02d5cf..079fdf6 100644
--- a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolverTest.java
+++ b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/FlexmarkDoxiaLinkResolverTest.java
@@ -22,9 +22,10 @@ package org.apache.maven.doxia.module.markdown;
 import com.vladsch.flexmark.html.renderer.LinkStatus;
 import com.vladsch.flexmark.html.renderer.LinkType;
 import com.vladsch.flexmark.html.renderer.ResolvedLink;
-import org.junit.Test;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
-import static org.junit.Assert.assertEquals;
 
 public class FlexmarkDoxiaLinkResolverTest
 {
diff --git a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserModuleTest.java b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserModuleTest.java
index 4895969..11dde47 100644
--- a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserModuleTest.java
+++ b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserModuleTest.java
@@ -19,31 +19,26 @@ package org.apache.maven.doxia.module.markdown;
  * under the License.
  */
 
-import org.apache.maven.doxia.parser.module.ParserModule;
-import org.codehaus.plexus.PlexusTestCase;
+import javax.inject.Inject;
+
+import org.codehaus.plexus.testing.PlexusTest;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * Test MarkdownParserModule.
  */
+@PlexusTest
 public class MarkdownParserModuleTest
-    extends PlexusTestCase
 {
     /**
      * The {@link MarkdownParser} used for the tests.
      */
+    @Inject
     protected MarkdownParserModule parserModule;
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected void setUp()
-        throws Exception
-    {
-        super.setUp();
-        parserModule = (MarkdownParserModule) lookup( ParserModule.class, MarkdownParser.ROLE_HINT );
-    }
-
+    @Test
     public void testExtensions()
     {
         assertEquals( 2, parserModule.getExtensions().length );
diff --git a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
index 11e4da5..eef74ad 100644
--- a/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
+++ b/doxia-modules/doxia-module-markdown/src/test/java/org/apache/maven/doxia/module/markdown/MarkdownParserTest.java
@@ -1,10 +1,5 @@
 package org.apache.maven.doxia.module.markdown;
 
-import java.io.IOException;
-import java.io.Reader;
-import java.util.Iterator;
-import java.util.List;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -24,6 +19,13 @@ import java.util.List;
  * under the License.
  */
 
+import javax.inject.Inject;
+
+import java.io.IOException;
+import java.io.Reader;
+import java.util.Iterator;
+import java.util.List;
+
 import org.apache.maven.doxia.parser.AbstractParserTest;
 import org.apache.maven.doxia.parser.ParseException;
 import org.apache.maven.doxia.parser.Parser;
@@ -31,6 +33,12 @@ import org.apache.maven.doxia.sink.SinkEventAttributes;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * Tests for {@link MarkdownParser}.
@@ -45,23 +53,13 @@ public class MarkdownParserTest
     /**
      * The {@link MarkdownParser} used for the tests.
      */
+    @Inject
     protected MarkdownParser parser;
 
     /**
      * {@inheritDoc}
      */
     @Override
-    protected void setUp()
-        throws Exception
-    {
-        super.setUp();
-        parser = (MarkdownParser) lookup( Parser.class, MarkdownParser.ROLE_HINT );
-    }
-
-    /**
-     * {@inheritDoc}
-     */
-    @Override
     protected Parser createParser()
     {
         return parser;
@@ -81,12 +79,13 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testParagraphSinkEvent()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "paragraph" ).getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
     }
@@ -96,6 +95,7 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testFontBoldSinkEvent()
         throws Exception
     {
@@ -103,7 +103,7 @@ public class MarkdownParserTest
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "font-bold" ).getEventList();
         Iterator<SinkEventElement> it = eventList.iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
 
@@ -118,6 +118,7 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testFontItalicSinkEvent()
         throws Exception
     {
@@ -125,7 +126,7 @@ public class MarkdownParserTest
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "font-italic" ).getEventList();
         Iterator<SinkEventElement> it = eventList.iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
         SinkEventElement inline = eventList.get( 4 );
@@ -139,6 +140,7 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testFontMonospacedSinkEvent()
         throws Exception
     {
@@ -146,7 +148,7 @@ public class MarkdownParserTest
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "font-monospaced" ).getEventList();
         Iterator<SinkEventElement> it = eventList.iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "inline", "text", "inline_", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
         SinkEventElement inline = eventList.get( 4 );
@@ -160,12 +162,13 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testCodeSinkEvent()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "code" ).getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
 
         assertFalse( it.hasNext() );
     }
@@ -175,13 +178,14 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testFencedCodeBlockSinkEvent()
         throws Exception
     {
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "fenced-code-block" ).getEventList();
         Iterator<SinkEventElement> it = eventList.iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "text", "paragraph_", "text", "verbatim", "inline", "text", "inline_", "verbatim_", "body_" );
 
         assertFalse( it.hasNext() );
 
@@ -206,12 +210,13 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testImageSinkEvent()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "image" ).getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "figureGraphics", "text", "paragraph_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "text", "figureGraphics", "text", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
     }
@@ -221,12 +226,13 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testLinkSinkEvent()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "link" ).getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "link", "text", "link_", "text", "paragraph_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "text", "link", "text", "link_", "text", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
     }
@@ -236,13 +242,14 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testLinkRewriteSinkEvent()
         throws Exception
     {
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "link_rewrite" ).getEventList();
 
         Iterator<SinkEventElement> it = eventList.iterator();
-        assertEquals( it, "head", "head_", "body", "paragraph", "text", "link", "text", "link_", "text", "link", "text",
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "text", "link", "text", "link_", "text", "link", "text",
                       "link_", "text", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
@@ -251,11 +258,12 @@ public class MarkdownParserTest
         assertEquals( "ftp://doc.md", eventList.get( 9 ).getArgs()[0] );
     }
 
+    @Test
     public void testLinkWithAnchorAndQuery() throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "link_anchor_query" ).getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "paragraph", "link", "text", "link_", "paragraph_", "body_" );
+        assertSinkEquals( it, "head", "head_", "body", "paragraph", "link", "text", "link_", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
     }
@@ -265,12 +273,13 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testListSinkEvent()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "list" ).getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "list", "text", "listItem", "text", "listItem_", "listItem", "text",
+        assertSinkEquals( it, "head", "head_", "body", "list", "text", "listItem", "text", "listItem_", "listItem", "text",
                       "listItem_", "text", "list_", "body_" );
 
         assertFalse( it.hasNext() );
@@ -281,12 +290,13 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testNumberedListSinkEvent()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "numbered-list" ).getEventList().iterator();
 
-        assertEquals( it, "head", "head_", "body", "numberedList", "text", "numberedListItem", "text", "numberedListItem_",
+        assertSinkEquals( it, "head", "head_", "body", "numberedList", "text", "numberedListItem", "text", "numberedListItem_",
                       "numberedListItem", "text", "numberedListItem_", "text", "numberedList_", "body_" );
 
         assertFalse( it.hasNext() );
@@ -297,13 +307,14 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testMetadataSinkEvent()
         throws Exception
     {
         List<SinkEventElement> eventList = parseFileToEventTestingSink( "metadata" ).getEventList();
         Iterator<SinkEventElement> it = eventList.iterator();
 
-        assertEquals( it, "head", "title", "text", "text", "text", "title_", "author", "text", "author_", "date", "text", "date_",
+        assertSinkEquals( it, "head", "title", "text", "text", "text", "title_", "author", "text", "author_", "date", "text", "date_",
                       "unknown", "head_", "body", "unknown", "text", "unknown", "paragraph", "text", "paragraph_", "section1",
                       "sectionTitle1", "text", "sectionTitle1_", "paragraph", "text", "paragraph_", "section1_",
                       "body_" );
@@ -337,13 +348,14 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testFirstHeadingSinkEvent()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "first-heading" ).getEventList().iterator();
 
         // NOTE: H1 is rendered as "unknown" and H2 is "section1" (see DOXIA-203)
-        assertEquals( it, "head", "title", "text", "title_", "head_", "body", "comment", "text",
+        assertSinkEquals( it, "head", "title", "text", "title_", "head_", "body", "comment", "text",
                 "section1", "sectionTitle1", "text", "sectionTitle1_", "paragraph", "text",
                 "paragraph_", "section1_", "body_" );
 
@@ -355,13 +367,14 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testCommentBeforeHeadingSinkEvent()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "comment-before-heading" ).getEventList().iterator();
 
         // NOTE: H1 is rendered as "unknown" and H2 is "section1" (see DOXIA-203)
-        assertEquals( it, "head", "title", "text", "title_", "head_", "body", "comment", "text", "unknown", "text",
+        assertSinkEquals( it, "head", "title", "text", "title_", "head_", "body", "comment", "text", "unknown", "text",
                       "unknown", "paragraph", "text", "link", "text", "link_", "text", "paragraph_", "body_" );
 
         assertFalse( it.hasNext() );
@@ -372,13 +385,14 @@ public class MarkdownParserTest
      *
      * @throws Exception if the event list is not correct when parsing the document
      */
+    @Test
     public void testHtmlContent()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "html-content" ).getEventList().iterator();
 
         // NOTE: H1 and DIV are rendered as "unknown" and H2 is "section1" (see DOXIA-203)
-        assertEquals( it, "head", "head_", "body", "unknown", "text", "paragraph", "inline", "text",
+        assertSinkEquals( it, "head", "head_", "body", "unknown", "text", "paragraph", "inline", "text",
                       "inline_", "text", "inline", "text", "inline_", "text", "paragraph_", "text", "unknown", "text", "horizontalRule", "unknown",
                 "text", "unknown", "paragraph", "text", "paragraph_", "text", "table", "tableRows", "text", "tableRow",
                 "tableHeaderCell", "text", "tableHeaderCell_", "tableRow_", "text", "tableRow",
@@ -416,12 +430,13 @@ public class MarkdownParserTest
         }
     }
 
+    @Test
     public void testTocMacro()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "macro-toc" ).getEventList().iterator();
 
-        assertEquals( it, "head", "title", "text", "title_", "head_",
+        assertSinkEquals( it, "head", "title", "text", "title_", "head_",
                       "body",
                       "list", // TOC start
                       "listItem", "link", "text", "link_", // emtpy section 2 TOC entry
@@ -440,12 +455,13 @@ public class MarkdownParserTest
     }
 
     // TOC macro fails with EmptyStackException when title 2 followed by title 4 then title 2
+    @Test
     public void testTocMacroDoxia559()
         throws Exception
     {
         Iterator<SinkEventElement> it = parseFileToEventTestingSink( "macro-toc-DOXIA-559" ).getEventList().iterator();
 
-        assertEquals( it, "head", "title", "text", "title_", "head_",
+        assertSinkEquals( it, "head", "title", "text", "title_", "head_",
                       "body",
                       "list", // TOC start
                       "listItem", "link", "text", "link_", // first section 2 TOC entry
diff --git a/doxia-modules/doxia-module-xdoc/pom.xml b/doxia-modules/doxia-module-xdoc/pom.xml
index a7535f4..cc53efa 100644
--- a/doxia-modules/doxia-module-xdoc/pom.xml
+++ b/doxia-modules/doxia-module-xdoc/pom.xml
@@ -46,6 +46,10 @@ under the License.
       <groupId>org.codehaus.plexus</groupId>
       <artifactId>plexus-utils</artifactId>
     </dependency>
+    <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
 
     <!-- test -->
     <dependency>
@@ -74,6 +78,11 @@ under the License.
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-testing</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 
   <build>
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
index 7eb2918..82edd20 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
+++ b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParser.java
@@ -26,18 +26,17 @@ import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Map;
 
+import javax.inject.Named;
 import javax.swing.text.html.HTML.Attribute;
 
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
 import org.apache.maven.doxia.parser.ParseException;
-import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.parser.XhtmlBaseParser;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.util.HtmlTools;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
@@ -51,7 +50,7 @@ import org.slf4j.LoggerFactory;
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
  * @since 1.0
  */
-@Component( role = Parser.class, hint = "xdoc" )
+@Named( "xdoc" )
 public class XdocParser
     extends XhtmlBaseParser
     implements XdocMarkup
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParserModule.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParserModule.java
index 0e48c08..32eacc8 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParserModule.java
+++ b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocParserModule.java
@@ -19,16 +19,16 @@ package org.apache.maven.doxia.module.xdoc;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import org.apache.maven.doxia.parser.module.AbstractParserModule;
-import org.apache.maven.doxia.parser.module.ParserModule;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * <p>XdocParserModule class.</p>
  *
  * @since 1.6
  */
-@Component( role = ParserModule.class, hint = "xdoc" )
+@Named( "xdoc" )
 public class XdocParserModule
     extends AbstractParserModule
 {
diff --git a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSinkFactory.java b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSinkFactory.java
index b9ffce7..bcbe7a8 100644
--- a/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSinkFactory.java
+++ b/doxia-modules/doxia-module-xdoc/src/main/java/org/apache/maven/doxia/module/xdoc/XdocSinkFactory.java
@@ -19,12 +19,12 @@ package org.apache.maven.doxia.module.xdoc;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import java.io.Writer;
 
 import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.sink.SinkFactory;
 import org.apache.maven.doxia.sink.impl.AbstractXmlSinkFactory;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * Xdoc implementation of the Sink factory.
@@ -32,7 +32,7 @@ import org.codehaus.plexus.component.annotations.Component;
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  * @since 1.0
  */
-@Component( role = SinkFactory.class, hint = "xdoc" )
+@Named( "xdoc" )
 public class XdocSinkFactory
     extends AbstractXmlSinkFactory
 {
diff --git a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocIdentityTest.java b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocIdentityTest.java
index b216b7a..abd4406 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocIdentityTest.java
+++ b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocIdentityTest.java
@@ -25,6 +25,7 @@ import org.apache.maven.doxia.module.AbstractIdentityTest;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
 import org.codehaus.plexus.util.StringUtils;
+import org.junit.jupiter.api.BeforeEach;
 
 /**
  * Check that piping a full model through an XdocParser and an XdocSink
@@ -34,10 +35,10 @@ public class XdocIdentityTest
     extends AbstractIdentityTest
 {
     /** {@inheritDoc} */
+    @BeforeEach
     protected void setUp()
         throws Exception
     {
-        super.setUp();
         assertIdentity( true );
     }
 
diff --git a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
index a7fd9b8..c1cbc57 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
+++ b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocParserTest.java
@@ -19,6 +19,8 @@ package org.apache.maven.doxia.module.xdoc;
  * under the License.
  */
 
+import javax.inject.Inject;
+
 import java.io.File;
 import java.io.FileFilter;
 import java.io.FileReader;
@@ -36,6 +38,16 @@ import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
 import org.codehaus.plexus.util.IOUtil;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
+import static org.codehaus.plexus.testing.PlexusExtension.getTestFile;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertNull;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -45,16 +57,13 @@ import org.codehaus.plexus.util.IOUtil;
 public class XdocParserTest
     extends AbstractParserTest
 {
+    @Inject
     private XdocParser parser;
 
-    @Override
+    @BeforeEach
     protected void setUp()
         throws Exception
     {
-        super.setUp();
-
-        parser = (XdocParser) lookup( Parser.class, "xdoc" );
-
         // AbstractXmlParser.CachedFileEntityResolver downloads DTD/XSD files in ${java.io.tmpdir}
         // Be sure to delete them
         String tmpDir = System.getProperty( "java.io.tmpdir" );
@@ -97,6 +106,7 @@ public class XdocParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testSnippetMacro()
         throws Exception
     {
@@ -109,7 +119,7 @@ public class XdocParserTest
         }
 
         File f = getTestFile( getBasedir(), outputBaseDir() + getOutputDir() + "macro.xml" );
-        assertTrue( "The file " + f.getAbsolutePath() + " was not created", f.exists() );
+        assertTrue( f.exists(), "The file " + f.getAbsolutePath() + " was not created" );
 
         String content;
         try( Reader reader = new FileReader( f ) )
@@ -120,6 +130,7 @@ public class XdocParserTest
         assertTrue( content.contains( "&lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;" ) );
     }
 
+    @Test
     public void testTocMacro()
         throws Exception
     {
@@ -132,7 +143,7 @@ public class XdocParserTest
         }
 
         File f = getTestFile( getBasedir(), outputBaseDir() + getOutputDir() + "toc.xml" );
-        assertTrue( "The file " + f.getAbsolutePath() + " was not created", f.exists() );
+        assertTrue( f.exists(), "The file " + f.getAbsolutePath() + " was not created" );
 
         String content;
         try ( Reader reader = new FileReader( f ) )
@@ -155,6 +166,7 @@ public class XdocParserTest
         return sink.getEventList().iterator();
     }
 
+    @Test
     public void testHeadEventsList()
         throws Exception
     {
@@ -170,7 +182,7 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = parseText( text );
 
-        assertStartsWith( it, "head", "title", "text", "title_", "comment", "author", "text", "author_" );
+        assertSinkStartsWith( it, "head", "title", "text", "title_", "comment", "author", "text", "author_" );
 
         SinkEventElement unknown = it.next();
         assertEquals( "unknown", unknown.getName() );
@@ -180,7 +192,7 @@ public class XdocParserTest
         assertEquals( "unknown", unknown.getName() );
         assertEquals( "base", unknown.getArgs()[0] );
 
-        assertEquals( it, "head_", "body", "body_" );
+        assertSinkEquals( it, "head_", "body", "body_" );
 
         // DOXIA-359
         text = "<document>"
@@ -190,15 +202,16 @@ public class XdocParserTest
 
         it = parseText( text );
 
-        assertStartsWith( it, "head", "title" );
+        assertSinkStartsWith( it, "head", "title" );
 
         SinkEventElement title = it.next();
         assertEquals( "text", title.getName() );
         assertEquals( "properties title", title.getArgs()[0] );
 
-        assertEquals( it, "title_", "head_", "body",  "body_" );
+        assertSinkEquals( it, "title_", "head_", "body",  "body_" );
     }
 
+    @Test
     public void testDocumentBodyEventsList()
         throws Exception
     {
@@ -206,9 +219,10 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = parseText( text );
 
-        assertEquals( it, "body", "body_" );
+        assertSinkEquals( it, "body", "body_" );
     }
 
+    @Test
     public void testSectionEventsList()
         throws Exception
     {
@@ -216,10 +230,11 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = parseText( text );
 
-        assertEquals( it, "section1", "sectionTitle1", "text", "sectionTitle1_", "section2", "sectionTitle2", "text",
+        assertSinkEquals( it, "section1", "sectionTitle1", "text", "sectionTitle1_", "section2", "sectionTitle2", "text",
                       "sectionTitle2_", "section2_", "section1_" );
     }
 
+    @Test
     public void testSectionAttributes()
         throws Exception
     {
@@ -228,7 +243,7 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = parseText( text );
 
-        assertStartsWith( it, "anchor", "anchor_" );
+        assertSinkStartsWith( it, "anchor", "anchor_" );
 
         SinkEventElement next = it.next();
         assertEquals( "section1", next.getName() );
@@ -242,9 +257,10 @@ public class XdocParserTest
         assertEquals( "sectionTitle1", next.getName() );
         assertNull( next.getArgs()[0] );
 
-        assertEquals( it, "text", "sectionTitle1_", "section1_" );
+        assertSinkEquals( it, "text", "sectionTitle1_", "section1_" );
     }
 
+    @Test
     public void testNestedSectionsEventsList()
         throws Exception
     {
@@ -253,11 +269,12 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = parseText( text );
 
-        assertEquals( it, "section1", "sectionTitle1", "text", "sectionTitle1_", "section2", "section3", "section4",
+        assertSinkEquals( it, "section1", "sectionTitle1", "text", "sectionTitle1_", "section2", "section3", "section4",
                       "section5", "sectionTitle5", "text", "sectionTitle5_", "section5_", "section4_", "section3_",
                       "section2_", "section2", "sectionTitle2", "text", "sectionTitle2_", "section2_", "section1_" );
     }
 
+    @Test
     public void testSourceEventsList()
         throws Exception
     {
@@ -265,19 +282,20 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = parseText( text );
 
-        assertEquals( it, "verbatim", "link", "text", "link_", "verbatim_" );
+        assertSinkEquals( it, "verbatim", "link", "text", "link_", "verbatim_" );
 
         text = "<source><![CDATA[<a href=\"what.html\">what</a>]]></source>";
         it = parseText( text );
 
-        assertEquals( it, "verbatim", "text", "verbatim_" );
+        assertSinkEquals( it, "verbatim", "text", "verbatim_" );
 
         text = "<source><![CDATA[<source>what</source>]]></source>";
         it = parseText( text );
 
-        assertEquals( it, "verbatim", "text", "verbatim_" );
+        assertSinkEquals( it, "verbatim", "text", "verbatim_" );
     }
 
+    @Test
     public void testSourceContainingDTD()
         throws Exception
     {
@@ -289,9 +307,10 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = parseText( text );
 
-        assertEquals( it, "verbatim", "text", "verbatim_" );
+        assertSinkEquals( it, "verbatim", "text", "verbatim_" );
     }
 
+    @Test
     public void testPreEOL()
         throws Exception
     {
@@ -301,12 +320,13 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = parseText( text );
 
-        assertEquals( it, "verbatim", "link", "text", "link_", "text", "link", "text", "link_", "verbatim_" );
+        assertSinkEquals( it, "verbatim", "link", "text", "link_", "text", "link", "text", "link_", "verbatim_" );
     }
 
     /**
      * Test section with ids.
      */
+    @Test
     public void testSectionIdAnchor()
         throws Exception
     {
@@ -315,43 +335,46 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = parseText( text );
 
-        assertEquals( it.next(), "anchor", "test-id" );
+        assertSinkEquals( it.next(), "anchor", "test-id" );
 
-        assertStartsWith( it, "anchor_", "section1", "sectionTitle1", "text", "sectionTitle1_", "text" );
+        assertSinkStartsWith( it, "anchor_", "section1", "sectionTitle1", "text", "sectionTitle1_", "text" );
 
-        assertEquals( it.next(), "anchor", "sub-id" );
+        assertSinkEquals( it.next(), "anchor", "sub-id" );
 
-        assertEquals( it, "anchor_", "section2", "sectionTitle2", "text", "sectionTitle2_", "text", "section2_",
+        assertSinkEquals( it, "anchor_", "section2", "sectionTitle2", "text", "sectionTitle2_", "text", "section2_",
                       "section1_" );
     }
 
     /**
      * Test script block.
      */
+    @Test
     public void testJavaScript()
         throws Exception
     {
         String text = "<script type=\"text/javascript\"><![CDATA[alert(\"Hello!\");]]></script>";
 
         Iterator<SinkEventElement> it = parseText( text );
-        assertEquals( it, "unknown", "unknown", "unknown" );
+        assertSinkEquals( it, "unknown", "unknown", "unknown" );
     }
 
     /**
      * Test unknown tags.
      */
+    @Test
     public void testUnknown()
         throws Exception
     {
         String text = "<applet><param name=\"name\" value=\"value\"/><unknown/></applet>";
 
         Iterator<SinkEventElement> it = parseText( text );
-        assertEquals( it, "unknown", "unknown", "unknown", "unknown", "unknown" );
+        assertSinkEquals( it, "unknown", "unknown", "unknown", "unknown", "unknown" );
     }
 
     /**
      * Test invalid macro tags.
      */
+    @Test
     public void testMacroExceptions()
     {
         SinkEventTestingSink sink = new SinkEventTestingSink();
@@ -366,18 +389,11 @@ public class XdocParserTest
 
     private void assertParseException( Sink sink, String text )
     {
-        try
-        {
-            parser.parse( text, sink );
-
-            fail( "Should not be parseable: '" + text + "'" );
-        }
-        catch ( ParseException ex )
-        {
-            assertNotNull( ex );
-        }
+        assertThrows( ParseException.class, () -> parser.parse( text, sink ),
+                "Should not be parseable: '" + text + "'" );
     }
 
+    @Test
     public void testEntities()
         throws Exception
     {
@@ -391,21 +407,22 @@ public class XdocParserTest
 
         Iterator<SinkEventElement> it = sink.getEventList().iterator();
 
-        assertStartsWith( it, "section1", "sectionTitle1" );
+        assertSinkStartsWith( it, "section1", "sectionTitle1" );
 
-        assertEquals( it.next(), "text", "&\u0159\uD835\uDFED" );
+        assertSinkEquals( it.next(), "text", "&\u0159\uD835\uDFED" );
 
-        assertStartsWith( it, "sectionTitle1_", "paragraph" );
+        assertSinkStartsWith( it, "sectionTitle1_", "paragraph" );
 
-        assertEquals( it.next(), "text", "&" );
+        assertSinkEquals( it.next(), "text", "&" );
 
-        assertEquals( it.next(), "text", "\u0159" );
+        assertSinkEquals( it.next(), "text", "\u0159" );
 
-        assertEquals( it.next(), "text", "\uD835\uDFED" );
+        assertSinkEquals( it.next(), "text", "\uD835\uDFED" );
 
-        assertEquals( it, "paragraph_", "section1_" );
+        assertSinkEquals( it, "paragraph_", "section1_" );
     }
     
+    @Test
     public void testStyleWithCData() throws Exception
     {
         // DOXIA-449
diff --git a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java
index f1d21b7..f925995 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java
+++ b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocSinkTest.java
@@ -22,11 +22,13 @@ package org.apache.maven.doxia.module.xdoc;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.AbstractSinkTest;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
+import org.junit.jupiter.api.Test;
 
 import java.io.StringWriter;
 import java.io.Writer;
 
 import static org.apache.maven.doxia.util.HtmlTools.escapeHTML;
+import static org.junit.jupiter.api.Assertions.assertEquals;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
@@ -342,6 +344,7 @@ public class XdocSinkTest
     /**
      * Test verbatim.
      */
+    @Test
     public void testBoxedVerbatim()
     {
         Writer writer =  new StringWriter();
@@ -369,6 +372,7 @@ public class XdocSinkTest
     /**
      * Test link.
      */
+    @Test
     public void testLinkWithTarget()
     {
         Writer writer =  new StringWriter();
diff --git a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocValidatorTest.java b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocValidatorTest.java
index b534ba4..ec3b634 100644
--- a/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocValidatorTest.java
+++ b/doxia-modules/doxia-module-xdoc/src/test/java/org/apache/maven/doxia/module/xdoc/XdocValidatorTest.java
@@ -27,6 +27,8 @@ import org.apache.maven.doxia.markup.XmlMarkup;
 import org.apache.maven.doxia.xsd.AbstractXmlValidatorTest;
 import org.codehaus.plexus.util.StringUtils;
 
+import static org.codehaus.plexus.testing.PlexusExtension.getBasedir;
+
 /**
  * Test XDOC files with namespace.
  *
diff --git a/doxia-modules/doxia-module-xhtml/pom.xml b/doxia-modules/doxia-module-xhtml/pom.xml
index 8ca927b..43adc7e 100644
--- a/doxia-modules/doxia-module-xhtml/pom.xml
+++ b/doxia-modules/doxia-module-xhtml/pom.xml
@@ -47,6 +47,10 @@ under the License.
       <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.google.inject</groupId>
       <artifactId>guice</artifactId>
       <classifier>no_aop</classifier>
@@ -67,5 +71,10 @@ under the License.
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-testing</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
index d337a26..1d19043 100644
--- a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
+++ b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParser.java
@@ -25,17 +25,17 @@ import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Map;
+
+import javax.inject.Named;
 import javax.swing.text.html.HTML.Attribute;
 
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.parser.ParseException;
-import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.parser.XhtmlBaseParser;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
@@ -49,7 +49,7 @@ import org.slf4j.LoggerFactory;
  * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
  * @since 1.0
  */
-@Component( role = Parser.class, hint = "xhtml" )
+@Named( "xhtml" )
 public class XhtmlParser
     extends XhtmlBaseParser
     implements XhtmlMarkup
diff --git a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParserModule.java b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParserModule.java
index 1e4bddd..4b78d93 100644
--- a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParserModule.java
+++ b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlParserModule.java
@@ -19,16 +19,16 @@ package org.apache.maven.doxia.module.xhtml;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import org.apache.maven.doxia.parser.module.AbstractParserModule;
-import org.apache.maven.doxia.parser.module.ParserModule;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * <p>XhtmlParserModule class.</p>
  *
  * @since 1.6
  */
-@Component( role = ParserModule.class, hint = "xhtml" )
+@Named( "xhtml" )
 public class XhtmlParserModule
     extends AbstractParserModule
 {
diff --git a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkFactory.java b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkFactory.java
index e947092..18c4c29 100644
--- a/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkFactory.java
+++ b/doxia-modules/doxia-module-xhtml/src/main/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkFactory.java
@@ -19,12 +19,12 @@ package org.apache.maven.doxia.module.xhtml;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import java.io.Writer;
 
 import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.sink.SinkFactory;
 import org.apache.maven.doxia.sink.impl.AbstractXmlSinkFactory;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * Xhtml implementation of the Sink factory.
@@ -32,7 +32,7 @@ import org.codehaus.plexus.component.annotations.Component;
  * @author <a href="mailto:vincent.siveton@gmail.com">Vincent Siveton</a>
  * @since 1.0
  */
-@Component( role = SinkFactory.class, hint = "xhtml" )
+@Named( "xhtml" )
 public class XhtmlSinkFactory
     extends AbstractXmlSinkFactory
 {
diff --git a/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlIdentityTest.java b/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlIdentityTest.java
index f7a28b9..fb3abeb 100644
--- a/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlIdentityTest.java
+++ b/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlIdentityTest.java
@@ -25,6 +25,7 @@ import org.apache.maven.doxia.module.AbstractIdentityTest;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
 import org.codehaus.plexus.util.StringUtils;
+import org.junit.jupiter.api.BeforeEach;
 
 /**
  * Check that piping a full model through an XhtmlParser and an XhtmlSink
@@ -34,10 +35,10 @@ public class XhtmlIdentityTest
     extends AbstractIdentityTest
 {
     /** {@inheritDoc} */
+    @BeforeEach
     protected void setUp()
         throws Exception
     {
-        super.setUp();
         assertIdentity( true );
     }
 
diff --git a/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlParserTest.java b/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlParserTest.java
index 9d90db1..fa7df51 100644
--- a/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlParserTest.java
+++ b/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlParserTest.java
@@ -19,6 +19,9 @@ package org.apache.maven.doxia.module.xhtml;
  * under the License.
  */
 
+import javax.inject.Inject;
+import javax.inject.Named;
+
 import java.io.File;
 import java.io.FileFilter;
 import java.util.Iterator;
@@ -28,6 +31,11 @@ import org.apache.maven.doxia.parser.AbstractParserTest;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 /**
  * @author <a href="mailto:lars@trieloff.net">Lars Trieloff</a>
@@ -35,16 +43,14 @@ import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
 public class XhtmlParserTest
     extends AbstractParserTest
 {
+    @Inject
     private XhtmlParser parser;
 
     /** {@inheritDoc} */
+    @BeforeEach
     protected void setUp()
         throws Exception
     {
-        super.setUp();
-
-        parser = (XhtmlParser) lookup( Parser.class, "xhtml" );
-
         // AbstractXmlParser.CachedFileEntityResolver downloads DTD/XSD files in ${java.io.tmpdir}
         // Be sure to delete them
         String tmpDir = System.getProperty( "java.io.tmpdir" );
@@ -81,6 +87,7 @@ public class XhtmlParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testDocumentBodyEventsList()
         throws Exception
     {
@@ -98,6 +105,7 @@ public class XhtmlParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testHeadEventsList()
         throws Exception
     {
@@ -126,6 +134,7 @@ public class XhtmlParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testPreEventsList()
         throws Exception
     {
@@ -147,6 +156,7 @@ public class XhtmlParserTest
      *
      * @throws java.lang.Exception if any.
      */
+    @Test
     public void testUnknown()
         throws Exception
     {
@@ -165,6 +175,7 @@ public class XhtmlParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testTocMacro()
         throws Exception
     {
diff --git a/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java b/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java
index 2ed78ff..c63aed6 100644
--- a/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java
+++ b/doxia-modules/doxia-module-xhtml/src/test/java/org/apache/maven/doxia/module/xhtml/XhtmlSinkTest.java
@@ -26,8 +26,11 @@ import org.apache.maven.doxia.markup.HtmlMarkup;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.AbstractSinkTest;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
+import org.junit.jupiter.api.Test;
 
 import static org.apache.maven.doxia.util.HtmlTools.escapeHTML;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 /**
  * @author Jason van Zyl
@@ -58,6 +61,7 @@ public class XhtmlSinkTest
      * Test link generation.
      *
      */
+    @Test
     public void testLinks()
     {
         XhtmlSink sink = null;
@@ -237,9 +241,10 @@ public class XhtmlSinkTest
     // Disable testTable until the order of attributes issue is clarified
     // TODO: remove
     /** {@inheritDoc} */
+    @Test
     public void testTable()
     {
-        assertEquals( "Dummy!", "", "" );
+        assertEquals( "", "", "Dummy!" );
     }
 
     /** {@inheritDoc} */
@@ -384,6 +389,7 @@ public class XhtmlSinkTest
     /**
      * Test entities is section titles and paragraphs.
      */
+    @Test
     public void testEntities()
     {
         XhtmlSink sink = null;
@@ -412,6 +418,7 @@ public class XhtmlSinkTest
     /**
      * Test head events.
      */
+    @Test
     public void testHead()
     {
         XhtmlSink sink = null;
@@ -443,7 +450,7 @@ public class XhtmlSinkTest
             "<head>\n<title>Title</title><!--A comment--><meta name=\"author\" content=\"&#x123;&amp;\" />"
                 + "<base href=\"http://maven.apache.org/\" /></head>";
         String actual = writer.toString();
-        assertTrue( actual, actual.contains( expected ) );
+        assertTrue( actual.contains( expected ), actual );
     }
 
     /** {@inheritDoc} */
diff --git a/doxia-modules/doxia-module-xhtml5/pom.xml b/doxia-modules/doxia-module-xhtml5/pom.xml
index 5c63115..7e1c7c9 100644
--- a/doxia-modules/doxia-module-xhtml5/pom.xml
+++ b/doxia-modules/doxia-module-xhtml5/pom.xml
@@ -47,6 +47,10 @@ under the License.
       <artifactId>plexus-utils</artifactId>
     </dependency>
     <dependency>
+      <groupId>javax.inject</groupId>
+      <artifactId>javax.inject</artifactId>
+    </dependency>
+    <dependency>
       <groupId>com.google.inject</groupId>
       <artifactId>guice</artifactId>
       <classifier>no_aop</classifier>
@@ -67,5 +71,10 @@ under the License.
       <artifactId>slf4j-simple</artifactId>
       <scope>test</scope>
     </dependency>
+    <dependency>
+      <groupId>org.codehaus.plexus</groupId>
+      <artifactId>plexus-testing</artifactId>
+      <scope>test</scope>
+    </dependency>
   </dependencies>
 </project>
diff --git a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
index be887a7..46887af 100644
--- a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
+++ b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5Parser.java
@@ -25,17 +25,17 @@ import java.io.StringReader;
 import java.io.StringWriter;
 import java.util.HashMap;
 import java.util.Map;
+
+import javax.inject.Named;
 import javax.swing.text.html.HTML.Attribute;
 
 import org.apache.maven.doxia.macro.MacroExecutionException;
 import org.apache.maven.doxia.macro.manager.MacroNotFoundException;
 import org.apache.maven.doxia.macro.MacroRequest;
 import org.apache.maven.doxia.parser.ParseException;
-import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.parser.Xhtml5BaseParser;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
-import org.codehaus.plexus.component.annotations.Component;
 import org.codehaus.plexus.util.IOUtil;
 import org.codehaus.plexus.util.StringUtils;
 import org.codehaus.plexus.util.xml.pull.XmlPullParser;
@@ -46,7 +46,7 @@ import org.slf4j.LoggerFactory;
 /**
  * Parse an xhtml model and emit events into a Doxia Sink.
  */
-@Component( role = Parser.class, hint = Xhtml5Parser.ROLE_HINT )
+@Named( Xhtml5Parser.ROLE_HINT )
 public class Xhtml5Parser
     extends Xhtml5BaseParser
     implements Xhtml5Markup
diff --git a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5ParserModule.java b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5ParserModule.java
index e52cfba..14a06ca 100644
--- a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5ParserModule.java
+++ b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5ParserModule.java
@@ -19,14 +19,14 @@ package org.apache.maven.doxia.module.xhtml5;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import org.apache.maven.doxia.parser.module.AbstractParserModule;
-import org.apache.maven.doxia.parser.module.ParserModule;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * <p>Xhtml5ParserModule class.</p>
  */
-@Component( role = ParserModule.class, hint = "xhtml5" )
+@Named( "xhtml5" )
 public class Xhtml5ParserModule
     extends AbstractParserModule
 {
diff --git a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5SinkFactory.java b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5SinkFactory.java
index 7421c9a..227dd07 100644
--- a/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5SinkFactory.java
+++ b/doxia-modules/doxia-module-xhtml5/src/main/java/org/apache/maven/doxia/module/xhtml5/Xhtml5SinkFactory.java
@@ -19,17 +19,17 @@ package org.apache.maven.doxia.module.xhtml5;
  * under the License.
  */
 
+import javax.inject.Named;
+
 import java.io.Writer;
 
 import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.sink.SinkFactory;
 import org.apache.maven.doxia.sink.impl.AbstractXmlSinkFactory;
-import org.codehaus.plexus.component.annotations.Component;
 
 /**
  * Xhtml implementation of the Sink factory.
  */
-@Component( role = SinkFactory.class, hint = "xhtml5" )
+@Named( "xhtml5" )
 public class Xhtml5SinkFactory
     extends AbstractXmlSinkFactory
 {
diff --git a/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5IdentityTest.java b/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5IdentityTest.java
index 9ea44c9..d6a0738 100644
--- a/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5IdentityTest.java
+++ b/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5IdentityTest.java
@@ -27,6 +27,7 @@ import org.apache.maven.doxia.module.xhtml5.Xhtml5Sink;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.Sink;
 import org.codehaus.plexus.util.StringUtils;
+import org.junit.jupiter.api.BeforeEach;
 
 /**
  * Check that piping a full model through an Xhtml5Parser and an Xhtml5Sink
@@ -36,10 +37,9 @@ public class Xhtml5IdentityTest
     extends AbstractIdentityTest
 {
     /** {@inheritDoc} */
+    @BeforeEach
     protected void setUp()
-        throws Exception
     {
-        super.setUp();
         assertIdentity( true );
     }
 
diff --git a/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5ParserTest.java b/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5ParserTest.java
index f5e4164..4ab6c63 100644
--- a/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5ParserTest.java
+++ b/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5ParserTest.java
@@ -19,30 +19,34 @@ package org.apache.maven.doxia.module.xhtml5;
  * under the License.
  */
 
+import javax.inject.Inject;
+
 import java.io.File;
 import java.io.FileFilter;
 import java.util.Iterator;
 import java.util.regex.Pattern;
 
-import org.apache.maven.doxia.module.xhtml5.Xhtml5Parser;
 import org.apache.maven.doxia.parser.AbstractParserTest;
 import org.apache.maven.doxia.parser.Parser;
 import org.apache.maven.doxia.sink.impl.SinkEventElement;
 import org.apache.maven.doxia.sink.impl.SinkEventTestingSink;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertFalse;
 
 public class Xhtml5ParserTest
     extends AbstractParserTest
 {
+    @Inject
     private Xhtml5Parser parser;
 
     /** {@inheritDoc} */
+    @BeforeEach
     protected void setUp()
         throws Exception
     {
-        super.setUp();
-
-        parser = (Xhtml5Parser) lookup( Parser.class, Xhtml5Parser.ROLE_HINT );
-
         // AbstractXmlParser.CachedFileEntityResolver downloads DTD/XSD files in ${java.io.tmpdir}
         // Be sure to delete them
         String tmpDir = System.getProperty( "java.io.tmpdir" );
@@ -79,6 +83,7 @@ public class Xhtml5ParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testDocumentBodyEventsList()
         throws Exception
     {
@@ -96,6 +101,7 @@ public class Xhtml5ParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testHeadEventsList()
         throws Exception
     {
@@ -124,6 +130,7 @@ public class Xhtml5ParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testPreEventsList()
         throws Exception
     {
@@ -145,6 +152,7 @@ public class Xhtml5ParserTest
      *
      * @throws java.lang.Exception if any.
      */
+    @Test
     public void testUnknown()
         throws Exception
     {
@@ -163,6 +171,7 @@ public class Xhtml5ParserTest
     }
 
     /** @throws Exception  */
+    @Test
     public void testTocMacro()
         throws Exception
     {
diff --git a/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5SinkTest.java b/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5SinkTest.java
index 36e0271..59cc67c 100644
--- a/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5SinkTest.java
+++ b/doxia-modules/doxia-module-xhtml5/src/test/java/org/apache/maven/doxia/module/xhtml5/Xhtml5SinkTest.java
@@ -27,8 +27,11 @@ import org.apache.maven.doxia.module.xhtml5.Xhtml5Sink;
 import org.apache.maven.doxia.sink.Sink;
 import org.apache.maven.doxia.sink.impl.AbstractSinkTest;
 import org.apache.maven.doxia.sink.impl.SinkEventAttributeSet;
+import org.junit.jupiter.api.Test;
 
 import static org.apache.maven.doxia.util.HtmlTools.escapeHTML;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertTrue;
 
 public class Xhtml5SinkTest
     extends AbstractSinkTest
@@ -55,6 +58,7 @@ public class Xhtml5SinkTest
      * Test link generation.
      *
      */
+    @Test
     public void testLinks()
     {
         Xhtml5Sink sink = null;
@@ -230,9 +234,10 @@ public class Xhtml5SinkTest
     // Disable testTable until the order of attributes issue is clarified
     // TODO: remove
     /** {@inheritDoc} */
+    @Test
     public void testTable()
     {
-        assertEquals( "Dummy!", "", "" );
+        assertEquals( "", "", "Dummy!" );
     }
 
     /** {@inheritDoc} */
@@ -377,6 +382,7 @@ public class Xhtml5SinkTest
     /**
      * Test entities is section titles and paragraphs.
      */
+    @Test
     public void testEntities()
     {
         Xhtml5Sink sink = null;
@@ -407,6 +413,7 @@ public class Xhtml5SinkTest
     /**
      * Test head events.
      */
+    @Test
     public void testHead()
     {
         Xhtml5Sink sink = null;
@@ -438,7 +445,7 @@ public class Xhtml5SinkTest
             "<head>\n<title>Title</title><!--A comment--><meta name=\"author\" content=\"&#x123;&amp;\" />"
                 + "<base href=\"http://maven.apache.org/\" /></head>";
         String actual = writer.toString();
-        assertTrue( actual, actual.contains( expected ) );
+        assertTrue( actual.contains( expected ), actual );
     }
 
     /** {@inheritDoc} */
diff --git a/doxia-modules/pom.xml b/doxia-modules/pom.xml
index 7fb0ebc..a1ff538 100644
--- a/doxia-modules/pom.xml
+++ b/doxia-modules/pom.xml
@@ -52,10 +52,6 @@ under the License.
       <groupId>org.apache.maven.doxia</groupId>
       <artifactId>doxia-sink-api</artifactId>
     </dependency>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-component-annotations</artifactId>
-    </dependency>
 
     <!-- test -->
     <dependency>
diff --git a/pom.xml b/pom.xml
index 104c60f..3377367 100644
--- a/pom.xml
+++ b/pom.xml
@@ -88,6 +88,7 @@ under the License.
     <checkstyle.violation.ignore>RedundantThrows,NewlineAtEndOfFile,ParameterNumber,MethodLength,FileLength,MethodName,InnerAssignment,MagicNumber</checkstyle.violation.ignore>
     <project.build.outputTimestamp>2022-01-17T09:10:13Z</project.build.outputTimestamp>
     <slf4jVersion>1.7.32</slf4jVersion>
+    <junitVersion>5.8.2</junitVersion>
   </properties>
 
   <dependencyManagement>
@@ -171,6 +172,12 @@ under the License.
         <version>2.8.4</version>
         <scope>test</scope>
       </dependency>
+      <dependency>
+        <groupId>org.codehaus.plexus</groupId>
+        <artifactId>plexus-testing</artifactId>
+        <version>1.1.0</version>
+        <scope>test</scope>
+      </dependency>
 
       <!-- Plexus -->
       <dependency>
@@ -186,14 +193,14 @@ under the License.
       </dependency>
       <dependency>
         <groupId>org.codehaus.plexus</groupId>
-        <artifactId>plexus-component-annotations</artifactId>
-        <version>2.1.1</version>
-      </dependency>
-      <dependency>
-        <groupId>org.codehaus.plexus</groupId>
         <artifactId>plexus-utils</artifactId>
         <version>3.3.1</version>
       </dependency>
+      <dependency>
+        <groupId>javax.inject</groupId>
+        <artifactId>javax.inject</artifactId>
+        <version>1</version>
+      </dependency>
 
       <!--  SLF4J -->
       <dependency>
@@ -206,15 +213,19 @@ under the License.
         <artifactId>slf4j-simple</artifactId>
         <version>${slf4jVersion}</version>
       </dependency>
+      <dependency>
+        <groupId>org.junit.jupiter</groupId>
+        <artifactId>junit-jupiter-engine</artifactId>
+        <version>${junitVersion}</version>
+      </dependency>
 
     </dependencies>
   </dependencyManagement>
 
   <dependencies>
     <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.13.2</version>
+      <groupId>org.junit.jupiter</groupId>
+      <artifactId>junit-jupiter-engine</artifactId>
       <scope>test</scope>
     </dependency>
   </dependencies>
@@ -441,6 +452,9 @@ under the License.
             <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-javadoc-plugin</artifactId>
             <configuration>
+              <doclint>none</doclint>
+              <failOnWarnings>false</failOnWarnings>
+              <failOnError>false</failOnError>
               <linksource>true</linksource>
               <groups>
                 <group>

[maven-doxia] 01/02: [DOXIA-643] Upgrade to Java 8

Posted by mi...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

michaelo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/maven-doxia.git

commit adefec14abe2c013672dab4de63097afd0c3e249
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Thu Feb 3 11:44:48 2022 +0100

    [DOXIA-643] Upgrade to Java 8
---
 pom.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index f1ea69d..104c60f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -83,7 +83,7 @@ under the License.
   </distributionManagement>
 
   <properties>
-    <javaVersion>7</javaVersion><!-- remove when upgrade to maven-parent 34 -->
+    <javaVersion>8</javaVersion><!-- remove when upgrade to maven-parent 34 -->
     <maven.site.path>doxia-archives/doxia-LATEST</maven.site.path>
     <checkstyle.violation.ignore>RedundantThrows,NewlineAtEndOfFile,ParameterNumber,MethodLength,FileLength,MethodName,InnerAssignment,MagicNumber</checkstyle.violation.ignore>
     <project.build.outputTimestamp>2022-01-17T09:10:13Z</project.build.outputTimestamp>