sis-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From desruisse...@apache.org
Subject [sis] 01/02: Regroup XML-related test utilities in a "org.apache.sis.test.xml" package, and database-related test utilities in a "org.apache.sis.test.sql" package.
Date Tue, 10 Jul 2018 16:12:21 GMT
This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git

commit 09c904fb494d64ba383ac0b1e8025204fb3ecc7f
Author: Martin Desruisseaux <martin.desruisseaux@geomatys.com>
AuthorDate: Tue Jul 10 12:17:45 2018 +0200

    Regroup XML-related test utilities in a "org.apache.sis.test.xml" package, and database-related test utilities in a "org.apache.sis.test.sql" package.
---
 core/sis-metadata/pom.xml                          |  5 ++
 .../internal/jaxb/cat/CodeListMarshallingTest.java |  4 +-
 .../sis/internal/jaxb/cat/EnumMarshallingTest.java |  4 +-
 .../sis/internal/jaxb/gco/PropertyTypeTest.java    |  8 ++--
 .../sis/internal/jaxb/gml/TimePeriodTest.java      |  4 +-
 .../internal/jaxb/lan/FreeTextMarshallingTest.java |  4 +-
 .../sis/internal/jaxb/lan/LanguageCodeTest.java    |  4 +-
 .../metadata/replace/ServiceParameterTest.java     |  4 +-
 .../internal/metadata/sql/ScriptRunnerTest.java    |  6 ++-
 ...aratorTest.java => DocumentComparatorTest.java} | 20 ++++----
 .../apache/sis/internal/xml/XmlUtilitiesTest.java  |  4 +-
 .../sis/metadata/iso/CustomMetadataTest.java       |  4 +-
 .../sis/metadata/iso/DefaultIdentifierTest.java    |  4 +-
 .../sis/metadata/iso/DefaultMetadataTest.java      |  4 +-
 .../sis/metadata/iso/ImmutableIdentifierTest.java  |  4 +-
 .../metadata/iso/citation/DefaultContactTest.java  |  4 +-
 .../iso/citation/DefaultResponsibilityTest.java    |  4 +-
 .../constraint/DefaultLegalConstraintsTest.java    |  4 +-
 .../identification/DefaultBrowseGraphicTest.java   |  4 +-
 .../DefaultRepresentativeFractionTest.java         |  4 +-
 .../iso/identification/DefaultResolutionTest.java  |  4 +-
 .../metadata/iso/lineage/DefaultLineageTest.java   |  4 +-
 .../sis/metadata/sql/IdentifierGeneratorTest.java  |  2 +-
 .../sis/metadata/sql/MetadataSourceTest.java       |  2 +-
 .../sis/metadata/sql/MetadataWriterTest.java       |  2 +-
 .../org/apache/sis/metadata/xml/TestUsingFile.java |  4 +-
 .../java/org/apache/sis/test/MetadataAssert.java   | 15 +++---
 .../org/apache/sis/test/mock/package-info.java     |  2 +-
 .../metadata => test}/sql/TestDatabase.java        | 56 +++++++++++-----------
 .../sql/package-info.java}                         | 29 ++---------
 .../apache/sis/test/suite/MetadataTestSuite.java   |  2 +-
 .../DocumentComparator.java}                       | 30 +++++++-----
 .../test/{XMLTestCase.java => xml/TestCase.java}   | 12 ++---
 .../xml/package-info.java}                         | 32 ++++---------
 .../apache/sis/util/iso/NameMarshallingTest.java   |  4 +-
 .../sis/xml/CharSequenceSubstitutionTest.java      |  4 +-
 .../apache/sis/xml/NilReasonMarshallingTest.java   |  4 +-
 .../org/apache/sis/xml/ReferenceResolverMock.java  |  2 +-
 .../org/apache/sis/xml/UUIDMarshallingTest.java    |  4 +-
 .../org/apache/sis/xml/XLinkMarshallingTest.java   |  4 +-
 .../CC_GeneralOperationParameterTest.java          |  4 +-
 .../CC_OperationParameterGroupTest.java            |  4 +-
 .../referencing/SecondDefiningParameterTest.java   |  4 +-
 .../sis/parameter/ParameterMarshallingTest.java    |  4 +-
 .../referencing/crs/DefaultCompoundCRSTest.java    |  4 +-
 .../sis/referencing/crs/DefaultDerivedCRSTest.java |  4 +-
 .../referencing/crs/DefaultEngineeringCRSTest.java |  4 +-
 .../referencing/crs/DefaultGeodeticCRSTest.java    |  4 +-
 .../sis/referencing/crs/DefaultImageCRSTest.java   |  4 +-
 .../referencing/crs/DefaultProjectedCRSTest.java   |  4 +-
 .../sis/referencing/cs/DefaultCartesianCSTest.java |  4 +-
 .../referencing/cs/DefaultEllipsoidalCSTest.java   |  4 +-
 .../referencing/datum/DefaultEllipsoidTest.java    |  4 +-
 .../datum/DefaultGeodeticDatumTest.java            |  4 +-
 .../datum/DefaultPrimeMeridianTest.java            |  4 +-
 .../datum/DefaultTemporalDatumTest.java            |  4 +-
 .../datum/DefaultVerticalDatumTest.java            |  4 +-
 .../referencing/factory/sql/EPSGInstallerTest.java |  2 +-
 .../factory/sql/epsg/DataScriptFormatter.java      |  2 +-
 .../DefaultConcatenatedOperationTest.java          |  4 +-
 .../operation/DefaultPassThroughOperationTest.java |  4 +-
 .../operation/SingleOperationMarshallingTest.java  |  4 +-
 .../apache/sis/test/integration/MetadataTest.java  |  8 ++--
 .../profile/fra/DataIdentificationTest.java        |  4 +-
 .../profile/fra/DirectReferenceSystemTest.java     |  4 +-
 65 files changed, 202 insertions(+), 219 deletions(-)

diff --git a/core/sis-metadata/pom.xml b/core/sis-metadata/pom.xml
index 2e43fbe..37b400d 100644
--- a/core/sis-metadata/pom.xml
+++ b/core/sis-metadata/pom.xml
@@ -159,6 +159,11 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>org.apache.derby</groupId>
+      <artifactId>derby</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>org.postgresql</groupId>
       <artifactId>postgresql</artifactId>
       <scope>test</scope>
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/CodeListMarshallingTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/CodeListMarshallingTest.java
index e0e91b5..4c7f4d6 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/CodeListMarshallingTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/CodeListMarshallingTest.java
@@ -33,7 +33,7 @@ import org.apache.sis.xml.XML;
 import org.apache.sis.xml.Namespaces;
 import org.apache.sis.xml.MarshallerPool;
 import org.apache.sis.test.DependsOnMethod;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -51,7 +51,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since 0.3
  * @module
  */
-public final strictfp class CodeListMarshallingTest extends XMLTestCase {
+public final strictfp class CodeListMarshallingTest extends TestCase {
     /**
      * Returns a XML string to use for testing purpose.
      * Note that responsible party exists only in legacy ISO 19115:2003 model.
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/EnumMarshallingTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/EnumMarshallingTest.java
index bca1af2..68b83ec 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/EnumMarshallingTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/cat/EnumMarshallingTest.java
@@ -23,7 +23,7 @@ import javax.xml.bind.JAXBException;
 import org.opengis.metadata.identification.TopicCategory;
 import org.apache.sis.metadata.iso.identification.DefaultDataIdentification;
 import org.apache.sis.xml.Namespaces;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -38,7 +38,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since   0.5
  * @module
  */
-public final strictfp class EnumMarshallingTest extends XMLTestCase {
+public final strictfp class EnumMarshallingTest extends TestCase {
     /**
      * Tests (un)marshaling of an enumeration.
      *
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/gco/PropertyTypeTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/gco/PropertyTypeTest.java
index 0a7136a..e36e67d 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/gco/PropertyTypeTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/gco/PropertyTypeTest.java
@@ -24,7 +24,7 @@ import org.apache.sis.xml.IdentifierSpace;
 import org.apache.sis.xml.ReferenceResolverMock;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.DependsOn;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.*;
@@ -39,7 +39,7 @@ import static org.junit.Assert.*;
  * @module
  */
 @DependsOn(org.apache.sis.internal.jaxb.IdentifierMapAdapterTest.class)
-public final strictfp class PropertyTypeTest extends XMLTestCase {
+public final strictfp class PropertyTypeTest extends TestCase {
     /**
      * The pseudo-metadata object to wrap for testing purpose.
      */
@@ -127,7 +127,7 @@ public final strictfp class PropertyTypeTest extends XMLTestCase {
         metadata.getIdentifierMap().putSpecialized(IdentifierSpace.UUID, uuid);
         if (useReferenceResolverMock) {
             context = ReferenceResolverMock.begin(true);
-            // XMLTestCase.clearContext() will dispose the context.
+            // TestCase.clearContext() will dispose the context.
         }
         final PropertyTypeMock property = marshal();
         if (!useReferenceResolverMock) {
@@ -183,7 +183,7 @@ public final strictfp class PropertyTypeTest extends XMLTestCase {
         metadata.getIdentifierMap().putSpecialized(IdentifierSpace.XLINK, link);
         if (useReferenceResolverMock) {
             context = ReferenceResolverMock.begin(true);
-            // XMLTestCase.clearContext() will dispose the context.
+            // TestCase.clearContext() will dispose the context.
         }
         final PropertyTypeMock property = marshal();
         if (!useReferenceResolverMock) {
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/gml/TimePeriodTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/gml/TimePeriodTest.java
index 22b373d..9fb6888 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/gml/TimePeriodTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/gml/TimePeriodTest.java
@@ -28,7 +28,7 @@ import org.apache.sis.xml.XML;
 import org.apache.sis.xml.Namespaces;
 import org.apache.sis.xml.MarshallerPool;
 import org.apache.sis.internal.xml.XmlUtilities;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.BeforeClass;
 import org.junit.AfterClass;
 import org.junit.Test;
@@ -47,7 +47,7 @@ import static org.apache.sis.test.TestUtilities.format;
  * @since   0.3
  * @module
  */
-public final strictfp class TimePeriodTest extends XMLTestCase {
+public final strictfp class TimePeriodTest extends TestCase {
     /**
      * A poll of configured {@link Marshaller} and {@link Unmarshaller}, created when first needed.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/lan/FreeTextMarshallingTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/lan/FreeTextMarshallingTest.java
index 56ea49e..bdb5668 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/lan/FreeTextMarshallingTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/lan/FreeTextMarshallingTest.java
@@ -22,7 +22,7 @@ import org.opengis.metadata.citation.Citation;
 import org.apache.sis.util.iso.DefaultInternationalString;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.xml.Namespaces;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -40,7 +40,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since 0.3
  * @module
  */
-public final strictfp class FreeTextMarshallingTest extends XMLTestCase {
+public final strictfp class FreeTextMarshallingTest extends TestCase {
     /**
      * Returns the expected string.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/lan/LanguageCodeTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/lan/LanguageCodeTest.java
index 217101e..ce89385 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/lan/LanguageCodeTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/lan/LanguageCodeTest.java
@@ -30,7 +30,7 @@ import org.apache.sis.internal.xml.Schemas;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.test.mock.MetadataMock;
 import org.apache.sis.test.DependsOnMethod;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.BeforeClass;
 import org.junit.AfterClass;
 import org.junit.Test;
@@ -53,7 +53,7 @@ import static org.apache.sis.internal.util.StandardDateFormat.UTC;
  * @since   0.3
  * @module
  */
-public final strictfp class LanguageCodeTest extends XMLTestCase {
+public final strictfp class LanguageCodeTest extends TestCase {
     /**
      * XML fragment using the {@code <gco:CharacterString>} construct.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameterTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameterTest.java
index df834c5..0159972 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameterTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/jaxb/metadata/replace/ServiceParameterTest.java
@@ -21,7 +21,7 @@ import org.opengis.util.MemberName;
 import org.opengis.parameter.ParameterDirection;
 import org.apache.sis.xml.Namespaces;
 import org.apache.sis.util.iso.Names;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -36,7 +36,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since   0.5
  * @module
  */
-public final strictfp class ServiceParameterTest extends XMLTestCase {
+public final strictfp class ServiceParameterTest extends TestCase {
     /**
      * Creates the parameter to use for testing purpose.
      *
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/sql/ScriptRunnerTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/sql/ScriptRunnerTest.java
index 52988a1..57421ed 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/sql/ScriptRunnerTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/sql/ScriptRunnerTest.java
@@ -17,9 +17,11 @@
 package org.apache.sis.internal.metadata.sql;
 
 import java.sql.Connection;
+import java.sql.SQLException;
 import javax.sql.DataSource;
 import org.apache.sis.test.TestCase;
 import org.apache.sis.test.TestStep;
+import org.apache.sis.test.sql.TestDatabase;
 import org.junit.Test;
 
 import static org.junit.Assert.*;
@@ -38,10 +40,10 @@ public final strictfp class ScriptRunnerTest extends TestCase {
      * Tests {@link ScriptRunner} with an in-memory Derby database.
      * This method delegates its work to all other methods in this class that expect a {@link ScriptRunner} argument.
      *
-     * @throws Exception if an error occurred while executing the script runner.
+     * @throws SQLException if an error occurred while executing the script runner.
      */
     @Test
-    public void testOnDerby() throws Exception {
+    public void testOnDerby() throws SQLException {
         final DataSource ds = TestDatabase.create("ScriptRunner");
         try (Connection c = ds.getConnection()) {
             final ScriptRunner sr = new ScriptRunner(c, 3);
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/test/XMLComparatorTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/test/DocumentComparatorTest.java
similarity index 86%
rename from core/sis-metadata/src/test/java/org/apache/sis/internal/test/XMLComparatorTest.java
rename to core/sis-metadata/src/test/java/org/apache/sis/internal/test/DocumentComparatorTest.java
index 7ddce6a..6bbd55e 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/test/XMLComparatorTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/test/DocumentComparatorTest.java
@@ -17,29 +17,29 @@
 package org.apache.sis.internal.test;
 
 import org.apache.sis.test.TestCase;
-import org.apache.sis.test.XMLComparator;
+import org.apache.sis.test.xml.DocumentComparator;
 import org.junit.Test;
 
 import static org.junit.Assert.*;
 
 
 /**
- * Tests the {@link XMLComparator} class.
+ * Tests the {@link DocumentComparator} class.
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 0.4
  * @since   0.3
  * @module
  */
-public final strictfp class XMLComparatorTest extends TestCase {
+public final strictfp class DocumentComparatorTest extends TestCase {
     /**
-     * Tests the {@link XMLComparator#ignoredAttributes} and {@link XMLComparator#ignoredNodes} sets.
+     * Tests the {@link DocumentComparator#ignoredAttributes} and {@link DocumentComparator#ignoredNodes} sets.
      *
      * @throws Exception if an error occurred while reading the XML.
      */
     @Test
     public void testIgnore() throws Exception {
-        final XMLComparator cmp = new XMLComparator(
+        final DocumentComparator cmp = new DocumentComparator(
             "<body>\n" +
             "  <form id=\"MyForm\">\n" +
             "    <table cellpading=\"1\">\n" +
@@ -85,7 +85,7 @@ public final strictfp class XMLComparatorTest extends TestCase {
      */
     @Test
     public void testNamespaceAware() throws Exception {
-        XMLComparator cmp = new XMLComparator(
+        DocumentComparator cmp = new DocumentComparator(
             "<ns1:body xmlns:ns1=\"http://myns1\" xmlns:ns2=\"http://myns2\">\n" +
             "  <ns1:table ns2:cellpading=\"1\"/>\n" +
             "</ns1:body>",
@@ -101,7 +101,7 @@ public final strictfp class XMLComparatorTest extends TestCase {
          * Opposite case: same prefix, but different URL.
          * The XML comparison is expected to fail.
          */
-        cmp = new XMLComparator(
+        cmp = new DocumentComparator(
             "<ns1:body xmlns:ns1=\"http://myns1\" xmlns:ns2=\"http://myns2\">\n" +
             "  <ns1:table ns2:cellpading=\"1\"/>\n" +
             "</ns1:body>",
@@ -116,14 +116,14 @@ public final strictfp class XMLComparatorTest extends TestCase {
     }
 
     /**
-     * Ensures that the call to {@link XMLComparator#compare()} fails. This method is
+     * Ensures that the call to {@link DocumentComparator#compare()} fails. This method is
      * invoked in order to test that the comparator rightly detected an error that we
      * were expected to detect.
      *
      * @param  message  the message for JUnit if the comparison does not fail.
-     * @param  cmp      the comparator on which to invoke {@link XMLComparator#compare()}.
+     * @param  cmp      the comparator on which to invoke {@link DocumentComparator#compare()}.
      */
-    private static void assertFail(final String message, final XMLComparator cmp) {
+    private static void assertFail(final String message, final DocumentComparator cmp) {
         try {
             cmp.compare();
         } catch (AssertionError e) {
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/xml/XmlUtilitiesTest.java b/core/sis-metadata/src/test/java/org/apache/sis/internal/xml/XmlUtilitiesTest.java
index 851bfb5..a94a99c 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/xml/XmlUtilitiesTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/internal/xml/XmlUtilitiesTest.java
@@ -20,7 +20,7 @@ import java.util.Date;
 import java.util.Locale;
 import javax.xml.datatype.XMLGregorianCalendar;
 import javax.xml.datatype.DatatypeConfigurationException;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.*;
@@ -35,7 +35,7 @@ import static javax.xml.datatype.DatatypeConstants.FIELD_UNDEFINED;
  * @since   0.3
  * @module
  */
-public final strictfp class XmlUtilitiesTest extends XMLTestCase {
+public final strictfp class XmlUtilitiesTest extends TestCase {
     /**
      * Tests the {@link XmlUtilities#toXML} method.
      * This test arbitrarily uses the CET timezone.
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java
index 0ffade4..602f55d 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/CustomMetadataTest.java
@@ -40,7 +40,7 @@ import org.opengis.temporal.Duration;
 import org.apache.sis.util.iso.SimpleInternationalString;
 import org.apache.sis.metadata.iso.citation.DefaultCitation;
 import org.apache.sis.internal.system.DefaultFactories;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.xml.XML;
 import org.junit.Test;
 
@@ -59,7 +59,7 @@ import static org.junit.Assert.*;
  * @since   0.3
  * @module
  */
-public final strictfp class CustomMetadataTest extends XMLTestCase {
+public final strictfp class CustomMetadataTest extends TestCase {
     /**
      * Tests the marshalling of a metadata implemented by {@link Proxy}.
      *
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/DefaultIdentifierTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/DefaultIdentifierTest.java
index 9795688..0c1b297 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/DefaultIdentifierTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/DefaultIdentifierTest.java
@@ -19,7 +19,7 @@ package org.apache.sis.metadata.iso;
 import javax.xml.bind.JAXBException;
 import org.apache.sis.metadata.iso.citation.DefaultCitation;
 import org.apache.sis.xml.Namespaces;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.junit.*;
 
@@ -36,7 +36,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @module
  */
 @DependsOn(org.apache.sis.metadata.iso.citation.DefaultCitationTest.class)
-public final strictfp class DefaultIdentifierTest extends XMLTestCase {
+public final strictfp class DefaultIdentifierTest extends TestCase {
     /**
      * The expected XML representation for this test.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/DefaultMetadataTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/DefaultMetadataTest.java
index 17c1b99..ea18a01 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/DefaultMetadataTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/DefaultMetadataTest.java
@@ -31,7 +31,7 @@ import org.apache.sis.xml.Namespaces;
 import org.apache.sis.util.iso.SimpleInternationalString;
 import org.apache.sis.metadata.iso.citation.DefaultCitation;
 import org.apache.sis.metadata.iso.citation.DefaultCitationDate;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.junit.Test;
 
@@ -54,7 +54,7 @@ import static org.apache.sis.test.TestUtilities.getSingleton;
  * @module
  */
 @DependsOn(org.apache.sis.internal.metadata.OtherLocalesTest.class)
-public final strictfp class DefaultMetadataTest extends XMLTestCase {
+public final strictfp class DefaultMetadataTest extends TestCase {
     /**
      * A flag for tracing workarounds for allowing some tests to pass despite regression.
      * This boolean should be set to {@code false} and removed after the following issues has been fixed:
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/ImmutableIdentifierTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/ImmutableIdentifierTest.java
index 7ebea8b..6623188 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/ImmutableIdentifierTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/ImmutableIdentifierTest.java
@@ -28,7 +28,7 @@ import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.util.Constants;
 import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.test.DependsOnMethod;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.opengis.test.Validators;
 import org.apache.sis.test.DependsOn;
 import org.junit.Test;
@@ -49,7 +49,7 @@ import static org.opengis.metadata.Identifier.*;
     DefaultIdentifierTest.class,
     org.apache.sis.metadata.iso.citation.CitationsTest.class
 })
-public final strictfp class ImmutableIdentifierTest extends XMLTestCase {
+public final strictfp class ImmutableIdentifierTest extends TestCase {
     /**
      * Returns the properties map to be used in argument to test methods.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultContactTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultContactTest.java
index 44b590d..ac3af11 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultContactTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultContactTest.java
@@ -24,7 +24,7 @@ import org.opengis.metadata.citation.TelephoneType;
 import org.apache.sis.internal.jaxb.Context;
 import org.apache.sis.util.logging.WarningListener;
 import org.apache.sis.test.DependsOnMethod;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.junit.Assert.*;
@@ -40,7 +40,7 @@ import static org.junit.Assert.*;
  * @since   0.5
  * @module
  */
-public final strictfp class DefaultContactTest extends XMLTestCase implements WarningListener<Object> {
+public final strictfp class DefaultContactTest extends TestCase implements WarningListener<Object> {
     /**
      * The resource key for the message of the warning that occurred, or {@code null} if none.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultResponsibilityTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultResponsibilityTest.java
index e298fce..e2df8a5 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultResponsibilityTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/citation/DefaultResponsibilityTest.java
@@ -18,7 +18,7 @@ package org.apache.sis.metadata.iso.citation;
 
 import javax.xml.bind.JAXBException;
 import org.opengis.metadata.citation.Role;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.junit.Test;
 
@@ -35,7 +35,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since   0.5
  * @module
  */
-public final strictfp class DefaultResponsibilityTest extends XMLTestCase {
+public final strictfp class DefaultResponsibilityTest extends TestCase {
     /**
      * Tests marshalling with replacement of {@link DefaultResponsibility} by {@link DefaultResponsibleParty}.
      *
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java
index 0f2f8f6..f4c6b6e 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/constraint/DefaultLegalConstraintsTest.java
@@ -20,7 +20,7 @@ import javax.xml.bind.JAXBException;
 import org.opengis.metadata.constraint.Restriction;
 import org.apache.sis.xml.Namespaces;
 import org.apache.sis.internal.xml.LegacyNamespaces;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static java.util.Collections.singleton;
@@ -37,7 +37,7 @@ import static org.apache.sis.test.TestUtilities.getSingleton;
  * @since   0.4
  * @module
  */
-public final strictfp class DefaultLegalConstraintsTest extends XMLTestCase {
+public final strictfp class DefaultLegalConstraintsTest extends TestCase {
     /**
      * Tests unmarshalling of an element containing an empty {@code codeListValue} attribute.
      * This was used to cause a {@code NullPointerException} prior SIS-157 fix.
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphicTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphicTest.java
index 143f199..8428360 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphicTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultBrowseGraphicTest.java
@@ -29,7 +29,7 @@ import org.apache.sis.util.Version;
 import org.apache.sis.xml.MarshallerPool;
 import org.apache.sis.xml.Namespaces;
 import org.apache.sis.xml.XML;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOnMethod;
 import org.junit.Test;
 
@@ -46,7 +46,7 @@ import static java.util.Collections.singletonMap;
  * @since   0.4
  * @module
  */
-public final strictfp class DefaultBrowseGraphicTest extends XMLTestCase {
+public final strictfp class DefaultBrowseGraphicTest extends TestCase {
     /**
      * {@code false} if testing ISO 19115-3 document, or {@code true} if testing ISO 19139:2007 document.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFractionTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFractionTest.java
index f22a8a5..f81a76e 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFractionTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultRepresentativeFractionTest.java
@@ -21,7 +21,7 @@ import org.opengis.metadata.identification.RepresentativeFraction;
 import org.apache.sis.xml.Namespaces;
 import org.apache.sis.xml.IdentifierSpace;
 import org.apache.sis.util.Version;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOnMethod;
 import org.junit.Test;
 
@@ -37,7 +37,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since   0.4
  * @module
  */
-public final strictfp class DefaultRepresentativeFractionTest extends XMLTestCase {
+public final strictfp class DefaultRepresentativeFractionTest extends TestCase {
     /**
      * {@code false} if testing ISO 19115-3 document, or {@code true} if testing ISO 19139:2007 document.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultResolutionTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultResolutionTest.java
index ba6753e..07d8f73 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultResolutionTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/identification/DefaultResolutionTest.java
@@ -23,7 +23,7 @@ import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.jaxb.Context;
 import org.apache.sis.internal.xml.Schemas;
 import org.apache.sis.test.LoggingWatcher;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.junit.After;
 import org.junit.Rule;
@@ -42,7 +42,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @module
  */
 @DependsOn(DefaultRepresentativeFractionTest.class)
-public final strictfp class DefaultResolutionTest extends XMLTestCase {
+public final strictfp class DefaultResolutionTest extends TestCase {
     /**
      * A JUnit {@link Rule} for listening to log events. This field is public because JUnit requires us to
      * do so, but should be considered as an implementation details (it should have been a private field).
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java
index 2c94383..5ec2116 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/iso/lineage/DefaultLineageTest.java
@@ -24,7 +24,7 @@ import org.apache.sis.util.iso.SimpleInternationalString;
 import org.apache.sis.metadata.iso.DefaultIdentifier;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.TestUtilities;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -39,7 +39,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since   0.3
  * @module
  */
-public final strictfp class DefaultLineageTest extends XMLTestCase {
+public final strictfp class DefaultLineageTest extends TestCase {
     /**
      * Create a lineage to marshal. If {@code extension} is {@code false}, then this method uses
      * only properties defined in ISO 19115-1. If {@code extension} is {@code true}, then this
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/IdentifierGeneratorTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/IdentifierGeneratorTest.java
index 9a47d92..7759826 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/IdentifierGeneratorTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/IdentifierGeneratorTest.java
@@ -20,7 +20,7 @@ import java.sql.Statement;
 import java.sql.SQLException;
 import javax.sql.DataSource;
 import org.apache.sis.internal.metadata.sql.SQLBuilder;
-import org.apache.sis.internal.metadata.sql.TestDatabase;
+import org.apache.sis.test.sql.TestDatabase;
 import org.apache.sis.metadata.MetadataStandard;
 import org.apache.sis.test.TestCase;
 import org.junit.Test;
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataSourceTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataSourceTest.java
index cce4efc..9bff85b 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataSourceTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataSourceTest.java
@@ -21,7 +21,7 @@ import javax.sql.DataSource;
 import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.distribution.Format;
 import org.apache.sis.metadata.MetadataStandard;
-import org.apache.sis.internal.metadata.sql.TestDatabase;
+import org.apache.sis.test.sql.TestDatabase;
 import org.apache.sis.util.iso.SimpleInternationalString;
 import org.apache.sis.metadata.iso.citation.DefaultCitation;
 import org.apache.sis.metadata.iso.distribution.DefaultFormat;
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java
index 04ba6c1..b2e49a5 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/sql/MetadataWriterTest.java
@@ -26,7 +26,7 @@ import org.opengis.metadata.citation.OnLineFunction;
 import org.opengis.metadata.citation.OnlineResource;
 import org.opengis.metadata.citation.Role;
 import org.opengis.metadata.citation.Telephone;
-import org.apache.sis.internal.metadata.sql.TestDatabase;
+import org.apache.sis.test.sql.TestDatabase;
 import org.apache.sis.metadata.iso.citation.HardCodedCitations;
 import org.apache.sis.metadata.iso.citation.DefaultTelephone;
 import org.apache.sis.metadata.MetadataStandard;
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java b/core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java
index eec8e8d..e8231ae 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java
@@ -16,7 +16,7 @@
  */
 package org.apache.sis.metadata.xml;
 
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 
 
 /**
@@ -29,7 +29,7 @@ import org.apache.sis.test.XMLTestCase;
  * @since   1.0
  * @module
  */
-public abstract strictfp class TestUsingFile extends XMLTestCase {
+public abstract strictfp class TestUsingFile extends TestCase {
     /**
      * The sub-directory of XML files encoded according the ISO 19115-3:2016 schema.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java b/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java
index 985c525..8a045fd 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/MetadataAssert.java
@@ -27,6 +27,7 @@ import org.apache.sis.io.wkt.Symbols;
 import org.apache.sis.io.wkt.WKTFormat;
 import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.xml.Namespaces;
+import org.apache.sis.test.xml.DocumentComparator;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 
 // Branch-specific imports
@@ -177,7 +178,7 @@ public strictfp class MetadataAssert extends Assert {
      * For convenience, this method replaces some well known prefixes in the {@code ignoredAttributes}
      * array by their full namespace URLs. For example this method replaces{@code "xsi:schemaLocation"}
      * by {@code "http://www.w3.org/2001/XMLSchema-instance:schemaLocation"}.
-     * If such substitution is not desired, consider using {@link XMLComparator} directly instead.
+     * If such substitution is not desired, consider using {@link DocumentComparator} directly instead.
      *
      * <p>The current substitution map is as below (may be expanded in any future SIS version):</p>
      *
@@ -206,7 +207,7 @@ public strictfp class MetadataAssert extends Assert {
      * @param  ignoredAttributes  the fully-qualified names of attributes to ignore
      *                            (typically {@code "xmlns:*"} and {@code "xsi:schemaLocation"}).
      *
-     * @see XMLComparator
+     * @see DocumentComparator
      */
     public static void assertXmlEquals(final Object expected, final Object actual, final String... ignoredAttributes) {
         assertXmlEquals(expected, actual, TestCase.STRICT, null, ignoredAttributes);
@@ -226,14 +227,14 @@ public strictfp class MetadataAssert extends Assert {
      * @param  ignoredAttributes  the fully-qualified names of attributes to ignore
      *                            (typically {@code "xmlns:*"} and {@code "xsi:schemaLocation"}).
      *
-     * @see XMLComparator
+     * @see DocumentComparator
      */
     public static void assertXmlEquals(final Object expected, final Object actual,
             final double tolerance, final String[] ignoredNodes, final String[] ignoredAttributes)
     {
-        final XMLComparator comparator;
+        final DocumentComparator comparator;
         try {
-            comparator = new XMLComparator(expected, actual);
+            comparator = new DocumentComparator(expected, actual);
         } catch (IOException | ParserConfigurationException | SAXException e) {
             // We don't throw directly those exceptions since failing to parse the XML file can
             // be considered as part of test failures and the JUnit exception for such failures
@@ -245,12 +246,12 @@ public strictfp class MetadataAssert extends Assert {
         comparator.ignoreComments = true;
         if (ignoredNodes != null) {
             for (final String node : ignoredNodes) {
-                comparator.ignoredNodes.add(XMLComparator.substitutePrefix(node));
+                comparator.ignoredNodes.add(DocumentComparator.substitutePrefix(node));
             }
         }
         if (ignoredAttributes != null) {
             for (final String attribute : ignoredAttributes) {
-                comparator.ignoredAttributes.add(XMLComparator.substitutePrefix(attribute));
+                comparator.ignoredAttributes.add(DocumentComparator.substitutePrefix(attribute));
             }
         }
         comparator.compare();
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/mock/package-info.java b/core/sis-metadata/src/test/java/org/apache/sis/test/mock/package-info.java
index 6e0c7b6..2a47e72 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/mock/package-info.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/mock/package-info.java
@@ -27,7 +27,7 @@
  * in any future version without notice.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.3
+ * @version 1.0
  * @since   0.3
  * @module
  */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/sql/TestDatabase.java b/core/sis-metadata/src/test/java/org/apache/sis/test/sql/TestDatabase.java
similarity index 67%
rename from core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/sql/TestDatabase.java
rename to core/sis-metadata/src/test/java/org/apache/sis/test/sql/TestDatabase.java
index 3f8e82d..2feb808 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/internal/metadata/sql/TestDatabase.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/sql/TestDatabase.java
@@ -14,20 +14,21 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.internal.metadata.sql;
+package org.apache.sis.test.sql;
 
-import java.sql.SQLException;
 import javax.sql.DataSource;
+import java.sql.SQLException;
+import java.sql.SQLFeatureNotSupportedException;
+import org.apache.derby.jdbc.EmbeddedDataSource;
+import org.apache.sis.internal.metadata.sql.Initializer;
 import org.apache.sis.util.Debug;
 
-import static org.junit.Assume.*;
-
 
 /**
- * Utility methods for creating temporary databases with Derby.
- * The databases are in-memory only.
+ * Utility methods for creating temporary databases for testing purpose.
+ * The databases are in-memory only when the database supports this mode.
  *
- * <div class="section">Inspecting the database content in a debugger</div>
+ * <div class="section">Inspecting the Derby database content in a debugger</div>
  * Make sure that the classpath contains the {@code derbynet.jar} file in addition to {@code derby.jar}.
  * Then, specify the following options to the JVM (replace the 1527 port number by something else if needed):
  *
@@ -51,7 +52,7 @@ import static org.junit.Assume.*;
  * </ul>
  *
  * @author  Martin Desruisseaux (Geomatys)
- * @version 0.7
+ * @version 1.0
  * @since   0.7
  * @module
  */
@@ -79,20 +80,16 @@ public final strictfp class TestDatabase {
      *
      * @param  name  the database name (without {@code "memory:"} prefix).
      * @return the data source.
-     * @throws Exception if an error occurred while creating the database.
+     * @throws SQLException if an error occurred while creating the database.
      */
-    public static DataSource create(final String name) throws Exception {
+    public static DataSource create(final String name) throws SQLException {
         if (TEST_DATABASE != null) {
             return TEST_DATABASE;
         }
-        final DataSource ds;
-        try {
-            ds = Initializer.forJavaDB("memory:" + name);
-        } catch (ClassNotFoundException e) {
-            assumeNoException("No Derby driver has been found.", e);
-            throw e;
-        }
-        ds.getClass().getMethod("setCreateDatabase", String.class).invoke(ds, "create");
+        final EmbeddedDataSource ds = new EmbeddedDataSource();
+        ds.setDatabaseName("memory:" + name);
+        ds.setDataSourceName("Apache SIS spatial metadata");
+        ds.setCreateDatabase("create");
         return ds;
     }
 
@@ -100,20 +97,25 @@ public final strictfp class TestDatabase {
      * Drops an in-memory Derby database after usage.
      *
      * @param  ds  the data source created by {@link #create(String)}.
-     * @throws Exception if an error occurred while dropping the database.
+     * @throws SQLException if an error occurred while dropping the database.
      */
-    public static void drop(final DataSource ds) throws Exception {
+    public static void drop(final DataSource ds) throws SQLException {
         if (ds == TEST_DATABASE) {
             return;
         }
-        ds.getClass().getMethod("setCreateDatabase", String.class).invoke(ds, "no");
-        ds.getClass().getMethod("setConnectionAttributes", String.class).invoke(ds, "drop=true");
-        try {
-            ds.getConnection().close();
-        } catch (SQLException e) {                          // This is the expected exception.
-            if (!Initializer.isSuccessfulShutdown(e)) {
-                throw e;
+        if (ds instanceof EmbeddedDataSource) {
+            final EmbeddedDataSource db = (EmbeddedDataSource) ds;
+            db.setCreateDatabase("no");
+            db.setConnectionAttributes("drop=true");
+            try {
+                ds.getConnection().close();
+            } catch (SQLException e) {                          // This is the expected exception.
+                if (!Initializer.isSuccessfulShutdown(e)) {
+                    throw e;
+                }
             }
+        } else {
+            throw new SQLFeatureNotSupportedException("Unknown data source: " + ds.getClass());
         }
     }
 }
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java b/core/sis-metadata/src/test/java/org/apache/sis/test/sql/package-info.java
similarity index 52%
copy from core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java
copy to core/sis-metadata/src/test/java/org/apache/sis/test/sql/package-info.java
index eec8e8d..c7302a5 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/sql/package-info.java
@@ -14,35 +14,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.metadata.xml;
-
-import org.apache.sis.test.XMLTestCase;
-
 
 /**
- * Base class of tests which contain some XML (un)marshalling of metadata as ISO 19115-3 compliant documents.
- * Tests use the the files provided in the {@code "2007/"} or {@code "2016/"} sub-directories, depending on
- * whether ISO 19139:2007 or ISO 19115-3:2016 schema is used.
+ * Utility methods for testing SQL databases.
+ *
+ * <p>Objects defined in this package are only for SIS testing purpose any many change
+ * in any future version without notice.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.0
  * @since   1.0
  * @module
  */
-public abstract strictfp class TestUsingFile extends XMLTestCase {
-    /**
-     * The sub-directory of XML files encoded according the ISO 19115-3:2016 schema.
-     */
-    protected static final String XML2016 = "2016/";
-
-    /**
-     * The sub-directory of XML files encoded according the ISO 19139:2007 schema.
-     */
-    protected static final String XML2007 = "2007/";
-
-    /**
-     * For sub-class constructors only.
-     */
-    protected TestUsingFile() {
-    }
-}
+package org.apache.sis.test.sql;
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java b/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
index 4581611..8701cc7 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/suite/MetadataTestSuite.java
@@ -57,7 +57,7 @@ import org.junit.BeforeClass;
     org.apache.sis.internal.metadata.MergerTest.class,
 
     // XML marshalling.
-    org.apache.sis.internal.test.XMLComparatorTest.class,
+    org.apache.sis.internal.test.DocumentComparatorTest.class,
     org.apache.sis.xml.NamespacesTest.class,
     org.apache.sis.xml.XLinkTest.class,
     org.apache.sis.xml.NilReasonTest.class,
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/XMLComparator.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java
similarity index 97%
rename from core/sis-metadata/src/test/java/org/apache/sis/test/XMLComparator.java
rename to core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java
index 0b8a13d..744759e 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/XMLComparator.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/DocumentComparator.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.test;
+package org.apache.sis.test.xml;
 
 import java.util.Map;
 import java.util.Set;
@@ -73,16 +73,16 @@ import static org.apache.sis.util.CharSequences.trimWhitespaces;
  * @author  Guilhem Legal (Geomatys)
  * @version 1.0
  *
- * @see XMLTestCase
- * @see MetadataAssert#assertXmlEquals(Object, Object, String[])
+ * @see TestCase
+ * @see org.apache.sis.test.MetadataAssert#assertXmlEquals(Object, Object, String[])
  *
  * @since 0.3
  * @module
  */
-public strictfp class XMLComparator {
+public strictfp class DocumentComparator {
     /**
      * Commonly used prefixes for namespaces. Used as shorthands for calls to
-     * {@link MetadataAssert#assertXmlEquals(Object, Object, String[])}.
+     * {@link org.apache.sis.test.MetadataAssert#assertXmlEquals(Object, Object, String[])}.
      *
      * @see #substitutePrefix(String)
      */
@@ -145,8 +145,8 @@ public strictfp class XMLComparator {
      *       {@code "http://www.w3.org/2001/XMLSchema-instance"}.</li>
      * </ul>
      *
-     * <p>{@code XMLComparator} is namespace aware. The second case in the above-cited choice may happen only
-     * if the user provided {@link Node} instances to the constructor. In such case, {@code XMLComparator} has
+     * <p>{@code DocumentComparator} is namespace aware. The second case in the above-cited choice may happen only
+     * if the user provided {@link Node} instances to the constructor. In such case, {@code DocumentComparator} has
      * no control on whether the nodes contain namespaces or not.</p>
      *
      * <p>For example in order to ignore the namespace, type and schema location declaration,
@@ -158,8 +158,8 @@ public strictfp class XMLComparator {
      *   "http://www.w3.org/2001/XMLSchema-instance:type"
      * }
      *
-     * Note that for convenience, the {@link MetadataAssert#assertXmlEquals(Object, Object, String[])} method
-     * automatically replaces some widely used prefixes by their full URL.
+     * Note that for convenience, the {@link org.apache.sis.test.MetadataAssert#assertXmlEquals(Object, Object, String[])}
+     * method automatically replaces some widely used prefixes by their full URL.
      */
     public final Set<String> ignoredAttributes;
 
@@ -200,7 +200,7 @@ public strictfp class XMLComparator {
      * @throws ParserConfigurationException if a {@link DocumentBuilder} can not be created.
      * @throws SAXException if an error occurred while parsing the XML document.
      */
-    public XMLComparator(final Object expected, final Object actual)
+    public DocumentComparator(final Object expected, final Object actual)
             throws IOException, ParserConfigurationException, SAXException
     {
         ArgumentChecks.ensureNonNull("expected", expected);
@@ -255,8 +255,16 @@ public strictfp class XMLComparator {
     /**
      * If the given attribute name begins with one of the well known prefixes,
      * substitutes the prefix by the full URL. Otherwise returns the name unchanged.
+     *
+     * <div class="note"><b>Example:</b>
+     * if the given attribute is {@code xmlns:gml}, then this method returns
+     * {@code "http://www.w3.org/2000/xmlns:gml"}.
+     * </div>
+     *
+     * @param  attribute  the attribute.
+     * @return the given attribute, possibly with prefix replaced by URL.
      */
-    static String substitutePrefix(final String attribute) {
+    public static String substitutePrefix(final String attribute) {
         final int s = attribute.lastIndexOf(':');
         if (s >= 0) {
             final String url = PREFIX_URL.get(attribute.substring(0, s));
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/test/XMLTestCase.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java
similarity index 98%
rename from core/sis-metadata/src/test/java/org/apache/sis/test/XMLTestCase.java
rename to core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java
index d3992b0..4168765 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/test/XMLTestCase.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/TestCase.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.test;
+package org.apache.sis.test.xml;
 
 import java.net.URL;
 import java.util.Map;
@@ -59,12 +59,12 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @author  Cullen Rombach (Image Matters)
  * @version 1.0
  *
- * @see XMLComparator
+ * @see DocumentComparator
  *
  * @since 0.3
  * @module
  */
-public abstract strictfp class XMLTestCase extends TestCase {
+public abstract strictfp class TestCase extends org.apache.sis.test.TestCase {
     /**
      * Miscellaneous version constants used for ISO standards.
      */
@@ -118,7 +118,7 @@ public abstract strictfp class XMLTestCase extends TestCase {
     /**
      * Creates a new test case.
      */
-    protected XMLTestCase() {
+    protected TestCase() {
     }
 
     /**
@@ -135,7 +135,7 @@ public abstract strictfp class XMLTestCase extends TestCase {
      * @throws JAXBException if an error occurred while creating the JAXB marshaller.
      */
     protected MarshallerPool getMarshallerPool() throws JAXBException {
-        synchronized (XMLTestCase.class) {
+        synchronized (TestCase.class) {
             if (defaultPool == null) {
                 final Map<String,Object> properties = new HashMap<>(4);
                 assertNull(properties.put(XML.LOCALE, Locale.UK));
@@ -191,7 +191,7 @@ public abstract strictfp class XMLTestCase extends TestCase {
             final URL resource = c.getResource(filename);
             if (resource != null) return resource;
             c = c.getSuperclass();
-        } while (!c.equals(XMLTestCase.class));
+        } while (!c.equals(TestCase.class));
         throw new AssertionError("Test resource not found: " + filename);
     }
 
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/package-info.java
similarity index 52%
copy from core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java
copy to core/sis-metadata/src/test/java/org/apache/sis/test/xml/package-info.java
index eec8e8d..7f58f3e 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/metadata/xml/TestUsingFile.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/test/xml/package-info.java
@@ -14,35 +14,19 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sis.metadata.xml;
-
-import org.apache.sis.test.XMLTestCase;
-
 
 /**
- * Base class of tests which contain some XML (un)marshalling of metadata as ISO 19115-3 compliant documents.
- * Tests use the the files provided in the {@code "2007/"} or {@code "2016/"} sub-directories, depending on
- * whether ISO 19139:2007 or ISO 19115-3:2016 schema is used.
+ * Utility methods for testing XML files or JAXB annotations.
+ * {@link org.apache.sis.test.xml.AnnotationConsistencyCheck} and
+ * {@link org.apache.sis.test.xml.SchemaCompliance} verifies JAXB annotations.
+ * {@link org.apache.sis.test.xml.DocumentComparator} compares an actual XML document with the expected one.
+ *
+ * <p>Objects defined in this package are only for SIS testing purpose any many change
+ * in any future version without notice.</p>
  *
  * @author  Martin Desruisseaux (Geomatys)
  * @version 1.0
  * @since   1.0
  * @module
  */
-public abstract strictfp class TestUsingFile extends XMLTestCase {
-    /**
-     * The sub-directory of XML files encoded according the ISO 19115-3:2016 schema.
-     */
-    protected static final String XML2016 = "2016/";
-
-    /**
-     * The sub-directory of XML files encoded according the ISO 19139:2007 schema.
-     */
-    protected static final String XML2007 = "2007/";
-
-    /**
-     * For sub-class constructors only.
-     */
-    protected TestUsingFile() {
-    }
-}
+package org.apache.sis.test.xml;
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/util/iso/NameMarshallingTest.java b/core/sis-metadata/src/test/java/org/apache/sis/util/iso/NameMarshallingTest.java
index dd8468a..7db792d 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/util/iso/NameMarshallingTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/util/iso/NameMarshallingTest.java
@@ -32,7 +32,7 @@ import org.apache.sis.xml.MarshallerPool;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.system.DefaultFactories;
 import org.apache.sis.test.mock.IdentifiedObjectMock;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
 import org.junit.AfterClass;
@@ -51,7 +51,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @module
  */
 @DependsOn(DefaultNameFactoryTest.class)
-public final strictfp class NameMarshallingTest extends XMLTestCase {
+public final strictfp class NameMarshallingTest extends TestCase {
     /**
      * A poll of configured {@link Marshaller} and {@link Unmarshaller}, created when first needed.
      *
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java b/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java
index 025bad7..23c88a0 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/xml/CharSequenceSubstitutionTest.java
@@ -26,7 +26,7 @@ import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.internal.metadata.SensorType;
 import org.apache.sis.util.iso.Types;
 import org.apache.sis.test.DependsOnMethod;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -41,7 +41,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since   0.3
  * @module
  */
-public final strictfp class CharSequenceSubstitutionTest extends XMLTestCase {
+public final strictfp class CharSequenceSubstitutionTest extends TestCase {
     /**
      * Tests unmarshalling of {@code "RS_Identifier"} element. This element was defined in legacy ISO 19139:2007
      * but has been removed in ISO 19115-3. That element is extensively used for Coordinate Reference Systems in
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/xml/NilReasonMarshallingTest.java b/core/sis-metadata/src/test/java/org/apache/sis/xml/NilReasonMarshallingTest.java
index 95d66bb..b64e3e7 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/xml/NilReasonMarshallingTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/xml/NilReasonMarshallingTest.java
@@ -23,7 +23,7 @@ import org.opengis.metadata.citation.Citation;
 import org.opengis.metadata.spatial.Dimension;
 import org.opengis.metadata.quality.ConformanceResult;
 import org.apache.sis.test.DependsOnMethod;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -40,7 +40,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since 0.3
  * @module
  */
-public final strictfp class NilReasonMarshallingTest extends XMLTestCase {
+public final strictfp class NilReasonMarshallingTest extends TestCase {
     /**
      * Tests a simple case for a missing data.
      *
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/xml/ReferenceResolverMock.java b/core/sis-metadata/src/test/java/org/apache/sis/xml/ReferenceResolverMock.java
index b3edf73..acacde4 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/xml/ReferenceResolverMock.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/xml/ReferenceResolverMock.java
@@ -51,7 +51,7 @@ public final strictfp class ReferenceResolverMock extends ReferenceResolver {
      * }
      *
      * Alternatively, the {@code finally} block can be replaced by a call to {@code context.finish()} in a method
-     * annotated by {@link org.junit.After}. This is done automatically by {@link org.apache.sis.test.XMLTestCase}.
+     * annotated by {@link org.junit.After}. This is done automatically by {@link org.apache.sis.test.xml.TestCase}.
      *
      * @param  marshalling {@code true} for marshalling, or {@code false} for unmarshalling.
      * @return the (un)marshalling context.
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/xml/UUIDMarshallingTest.java b/core/sis-metadata/src/test/java/org/apache/sis/xml/UUIDMarshallingTest.java
index 1e6bc73..b8dbf70 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/xml/UUIDMarshallingTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/xml/UUIDMarshallingTest.java
@@ -22,7 +22,7 @@ import org.opengis.metadata.citation.Series;
 import org.opengis.metadata.citation.Citation;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.DependsOn;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -40,7 +40,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @module
  */
 @DependsOn(NilReasonMarshallingTest.class)
-public final strictfp class UUIDMarshallingTest extends XMLTestCase {
+public final strictfp class UUIDMarshallingTest extends TestCase {
     /**
      * A random UUID for the tests in this class.
      */
diff --git a/core/sis-metadata/src/test/java/org/apache/sis/xml/XLinkMarshallingTest.java b/core/sis-metadata/src/test/java/org/apache/sis/xml/XLinkMarshallingTest.java
index bfc7121..6a4c42c 100644
--- a/core/sis-metadata/src/test/java/org/apache/sis/xml/XLinkMarshallingTest.java
+++ b/core/sis-metadata/src/test/java/org/apache/sis/xml/XLinkMarshallingTest.java
@@ -26,7 +26,7 @@ import org.apache.sis.metadata.iso.identification.DefaultDataIdentification;
 import org.apache.sis.util.iso.SimpleInternationalString;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.test.DependsOn;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -45,7 +45,7 @@ import static org.apache.sis.test.TestUtilities.getSingleton;
  * @module
  */
 @DependsOn({XLinkTest.class, NilReasonMarshallingTest.class})
-public final strictfp class XLinkMarshallingTest extends XMLTestCase {
+public final strictfp class XLinkMarshallingTest extends TestCase {
     /**
      * A XML with a {@code xlink:href} without element definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameterTest.java b/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameterTest.java
index d95ad48..0b0ddbc 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameterTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_GeneralOperationParameterTest.java
@@ -27,7 +27,7 @@ import org.apache.sis.parameter.DefaultParameterDescriptor;
 import org.apache.sis.parameter.DefaultParameterDescriptorGroup;
 import org.apache.sis.internal.system.Loggers;
 import org.apache.sis.xml.Namespaces;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.LoggingWatcher;
@@ -50,7 +50,7 @@ import static org.junit.Assert.*;
  * @module
  */
 @DependsOn(org.apache.sis.parameter.DefaultParameterDescriptorTest.class)
-public final strictfp class CC_GeneralOperationParameterTest extends XMLTestCase {
+public final strictfp class CC_GeneralOperationParameterTest extends TestCase {
     /**
      * A JUnit rule for listening to log events emitted during execution of {@link #testGroupMergeBecauseExtraParameter()}.
      * This rule is used by test methods for verifying that the log message contains the expected information.
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java b/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java
index d3992bd..cec3e88 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/CC_OperationParameterGroupTest.java
@@ -31,7 +31,7 @@ import org.apache.sis.parameter.ParameterBuilder;
 import org.apache.sis.internal.referencing.provider.Mercator1SP;
 import org.apache.sis.internal.util.UnmodifiableArrayList;
 import org.apache.sis.measure.Units;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.xml.Namespaces;
@@ -55,7 +55,7 @@ import static org.junit.Assert.*;
  * @module
  */
 @DependsOn(CC_GeneralOperationParameterTest.class)
-public final strictfp class CC_OperationParameterGroupTest extends XMLTestCase {
+public final strictfp class CC_OperationParameterGroupTest extends TestCase {
     /**
      * The remark to associate to the "Latitude of natural origin" parameter.
      * Should be different than the comment stored in {@link Mercator1SP} in
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/SecondDefiningParameterTest.java b/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/SecondDefiningParameterTest.java
index 5d4266b..4406a32 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/SecondDefiningParameterTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/internal/jaxb/referencing/SecondDefiningParameterTest.java
@@ -20,7 +20,7 @@ import java.util.Collections;
 import javax.xml.bind.JAXBException;
 import org.apache.sis.measure.Units;
 import org.apache.sis.referencing.datum.DefaultEllipsoid;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -34,7 +34,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since   0.4
  * @module
  */
-public final strictfp class SecondDefiningParameterTest extends XMLTestCase {
+public final strictfp class SecondDefiningParameterTest extends TestCase {
     /**
      * XML of an ellipsoid defined by semi-major and semi-minor axes.
      * The numerical values used for this test is the ones of Clarke 1866 (EPSG:7008).
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterMarshallingTest.java b/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterMarshallingTest.java
index 4b4f726..c5a6480 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterMarshallingTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/parameter/ParameterMarshallingTest.java
@@ -34,7 +34,7 @@ import org.apache.sis.measure.Range;
 import org.apache.sis.measure.MeasurementRange;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.xml.Namespaces;
 import org.apache.sis.xml.XML;
 import org.junit.Test;
@@ -54,7 +54,7 @@ import static org.apache.sis.test.ReferencingAssert.*;
     DefaultParameterValueTest.class,
     DefaultParameterValueGroupTest.class
 })
-public final strictfp class ParameterMarshallingTest extends XMLTestCase {
+public final strictfp class ParameterMarshallingTest extends TestCase {
     /**
      * Creates a parameter value for marshalling test.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultCompoundCRSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultCompoundCRSTest.java
index d291659..09733d0 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultCompoundCRSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultCompoundCRSTest.java
@@ -32,7 +32,7 @@ import org.apache.sis.referencing.cs.HardCodedAxes;
 import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.DependsOn;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static java.util.Collections.singletonMap;
@@ -53,7 +53,7 @@ import static org.apache.sis.test.ReferencingAssert.*;
     DefaultGeographicCRSTest.class,
     DefaultVerticalCRSTest.class
 })
-public final strictfp class DefaultCompoundCRSTest extends XMLTestCase {
+public final strictfp class DefaultCompoundCRSTest extends TestCase {
     /**
      * The vertical CRS arbitrarily chosen in this class for the tests.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultDerivedCRSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultDerivedCRSTest.java
index d6fee23..9ae2d01 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultDerivedCRSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultDerivedCRSTest.java
@@ -34,7 +34,7 @@ import org.apache.sis.referencing.cs.HardCodedCS;
 import org.apache.sis.measure.Units;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.DependsOn;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.ReferencingAssert.*;
@@ -52,7 +52,7 @@ import static org.apache.sis.test.ReferencingAssert.*;
     DefaultProjectedCRSTest.class,          // Has many similarities with DerivedCRS, but is simpler.
     DefaultConversionTest.class
 })
-public final strictfp class DefaultDerivedCRSTest extends XMLTestCase {
+public final strictfp class DefaultDerivedCRSTest extends TestCase {
     /**
      * An XML file in this package containing a projected CRS definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultEngineeringCRSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultEngineeringCRSTest.java
index 334f9f5..99e66d2 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultEngineeringCRSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultEngineeringCRSTest.java
@@ -25,7 +25,7 @@ import org.opengis.referencing.cs.AxisDirection;
 import org.apache.sis.referencing.cs.HardCodedCS;
 import org.apache.sis.referencing.datum.DefaultEngineeringDatum;
 import org.apache.sis.io.wkt.Convention;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.xml.Namespaces;
 import org.junit.Test;
 
@@ -40,7 +40,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since   0.6
  * @module
  */
-public final strictfp class DefaultEngineeringCRSTest extends XMLTestCase {
+public final strictfp class DefaultEngineeringCRSTest extends TestCase {
     /**
      * Creates an engineering CRS using a two-dimensional Cartesian coordinate system.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultGeodeticCRSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultGeodeticCRSTest.java
index 73adcd2..c513430 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultGeodeticCRSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultGeodeticCRSTest.java
@@ -19,7 +19,7 @@ package org.apache.sis.referencing.crs;
 import javax.xml.bind.JAXBException;
 import org.opengis.test.Validators;
 import org.apache.sis.referencing.GeodeticObjectVerifier;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.junit.Test;
 
@@ -41,7 +41,7 @@ import static org.apache.sis.test.Assert.*;
     org.apache.sis.referencing.cs.DefaultEllipsoidalCSTest.class,
     org.apache.sis.referencing.datum.DefaultGeodeticDatumTest.class
 })
-public final strictfp class DefaultGeodeticCRSTest extends XMLTestCase {
+public final strictfp class DefaultGeodeticCRSTest extends TestCase {
     /**
      * An XML file in this package containing a geodetic CRS definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultImageCRSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
index 4e9947a..9cbee7f 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultImageCRSTest.java
@@ -28,7 +28,7 @@ import org.apache.sis.referencing.datum.DefaultImageDatum;
 import org.apache.sis.referencing.cs.DefaultAffineCS;
 import org.apache.sis.referencing.cs.HardCodedAxes;
 import org.apache.sis.io.wkt.Convention;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.xml.Namespaces;
 import org.junit.Test;
 
@@ -43,7 +43,7 @@ import static org.apache.sis.test.MetadataAssert.*;
  * @since   0.6
  * @module
  */
-public final strictfp class DefaultImageCRSTest extends XMLTestCase {
+public final strictfp class DefaultImageCRSTest extends TestCase {
     /**
      * Creates an image CRS using a two-dimensional affine or Cartesian coordinate system.
      *
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java
index e292e91..a69f2f7 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/crs/DefaultProjectedCRSTest.java
@@ -40,7 +40,7 @@ import org.opengis.test.Validators;
 import org.apache.sis.test.LoggingWatcher;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.DependsOn;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.After;
 import org.junit.Test;
 import org.junit.Rule;
@@ -60,7 +60,7 @@ import static org.apache.sis.test.ReferencingAssert.*;
     DefaultGeographicCRSTest.class,
     org.apache.sis.referencing.operation.DefaultConversionTest.class
 })
-public final strictfp class DefaultProjectedCRSTest extends XMLTestCase {
+public final strictfp class DefaultProjectedCRSTest extends TestCase {
     /**
      * A JUnit rule for listening to log events emitted during execution of {@link #testWKT1_WithExplicitAxisLength()}.
      * This rule is used by the test methods for verifying that the logged messages contain the expected information.
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java
index c27a300..38d973b 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultCartesianCSTest.java
@@ -24,7 +24,7 @@ import org.opengis.referencing.cs.CoordinateSystemAxis;
 import org.apache.sis.referencing.GeodeticObjectVerifier;
 import org.apache.sis.internal.util.Constants;
 import org.apache.sis.measure.Units;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
 import org.junit.Test;
@@ -47,7 +47,7 @@ import static org.apache.sis.test.ReferencingAssert.*;
     DirectionAlongMeridianTest.class,
     AbstractCSTest.class
 })
-public final strictfp class DefaultCartesianCSTest extends XMLTestCase {
+public final strictfp class DefaultCartesianCSTest extends TestCase {
     /**
      * An XML file in this package containing a Cartesian coordinate system definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java
index c5ab08c..0dbc617 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/cs/DefaultEllipsoidalCSTest.java
@@ -22,7 +22,7 @@ import org.opengis.referencing.cs.AxisDirection;
 import org.opengis.referencing.cs.CoordinateSystemAxis;
 import org.opengis.referencing.cs.RangeMeaning;
 import org.apache.sis.measure.Units;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.referencing.GeodeticObjectVerifier;
@@ -41,7 +41,7 @@ import static org.apache.sis.test.TestUtilities.getSingleton;
  * @module
  */
 @DependsOn(AbstractCSTest.class)
-public final strictfp class DefaultEllipsoidalCSTest extends XMLTestCase {
+public final strictfp class DefaultEllipsoidalCSTest extends TestCase {
     /**
      * An XML file in this package containing an ellipsoidal coordinate system definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java
index c3cffc0..b0303a5 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultEllipsoidTest.java
@@ -23,7 +23,7 @@ import org.apache.sis.measure.Latitude;
 import org.apache.sis.measure.Longitude;
 import org.apache.sis.referencing.IdentifiedObjects;
 import org.apache.sis.test.TestUtilities;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
 import org.junit.Test;
@@ -44,7 +44,7 @@ import static org.apache.sis.test.MetadataAssert.*;
     org.apache.sis.internal.referencing.FormulasTest.class,
     org.apache.sis.internal.jaxb.referencing.SecondDefiningParameterTest.class
 })
-public final strictfp class DefaultEllipsoidTest extends XMLTestCase {
+public final strictfp class DefaultEllipsoidTest extends TestCase {
     /**
      * An XML file in this package containing an ellipsoid definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java
index 6739e68..c32647a 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultGeodeticDatumTest.java
@@ -29,7 +29,7 @@ import org.apache.sis.xml.Namespaces;
 import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.metadata.iso.extent.DefaultExtent;
 import org.apache.sis.metadata.iso.extent.DefaultGeographicBoundingBox;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.TestStep;
@@ -52,7 +52,7 @@ import static org.apache.sis.referencing.GeodeticObjectVerifier.*;
     DefaultEllipsoidTest.class,
     BursaWolfParametersTest.class
 })
-public final strictfp class DefaultGeodeticDatumTest extends XMLTestCase {
+public final strictfp class DefaultGeodeticDatumTest extends TestCase {
     /**
      * An XML file in this package containing a geodetic datum definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultPrimeMeridianTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultPrimeMeridianTest.java
index a0aaa82..e5d5149 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultPrimeMeridianTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultPrimeMeridianTest.java
@@ -27,7 +27,7 @@ import org.apache.sis.util.CharSequences;
 import org.apache.sis.measure.Units;
 import org.apache.sis.internal.xml.LegacyNamespaces;
 import org.apache.sis.io.wkt.Convention;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOnMethod;
 import org.apache.sis.test.DependsOn;
 import org.junit.Test;
@@ -46,7 +46,7 @@ import static org.apache.sis.referencing.GeodeticObjectVerifier.*;
  * @module
  */
 @DependsOn(org.apache.sis.referencing.AbstractIdentifiedObjectTest.class)
-public final strictfp class DefaultPrimeMeridianTest extends XMLTestCase {
+public final strictfp class DefaultPrimeMeridianTest extends TestCase {
     /**
      * An XML file in this package containing a prime meridian definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
index 8c602ad..714ab64 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultTemporalDatumTest.java
@@ -23,7 +23,7 @@ import javax.xml.bind.JAXBException;
 import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.metadata.iso.ImmutableIdentifier;
 import org.apache.sis.metadata.iso.citation.HardCodedCitations;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.ReferencingAssert.*;
@@ -39,7 +39,7 @@ import static org.apache.sis.internal.util.StandardDateFormat.MILLISECONDS_PER_D
  * @since   0.4
  * @module
  */
-public final strictfp class DefaultTemporalDatumTest extends XMLTestCase {
+public final strictfp class DefaultTemporalDatumTest extends TestCase {
     /**
      * An XML file in this package containing a vertical datum definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultVerticalDatumTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultVerticalDatumTest.java
index a197300..51641c6 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultVerticalDatumTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/datum/DefaultVerticalDatumTest.java
@@ -27,7 +27,7 @@ import org.apache.sis.io.wkt.Convention;
 import org.apache.sis.util.Version;
 import org.apache.sis.xml.XML;
 import org.apache.sis.xml.MarshallerPool;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static java.util.Collections.singletonMap;
@@ -43,7 +43,7 @@ import static org.apache.sis.referencing.GeodeticObjectVerifier.*;
  * @since   0.4
  * @module
  */
-public final strictfp class DefaultVerticalDatumTest extends XMLTestCase {
+public final strictfp class DefaultVerticalDatumTest extends TestCase {
     /**
      * An XML file in this package containing a vertical datum definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGInstallerTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGInstallerTest.java
index 2fcdfb3..223c392 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGInstallerTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/EPSGInstallerTest.java
@@ -40,7 +40,7 @@ import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.util.Utilities;
 
 // Test dependencies
-import org.apache.sis.internal.metadata.sql.TestDatabase;
+import org.apache.sis.test.sql.TestDatabase;
 import org.apache.sis.test.LoggingWatcher;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.TestCase;
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
index fabec8f..5161196 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/factory/sql/epsg/DataScriptFormatter.java
@@ -36,7 +36,7 @@ import java.util.regex.Pattern;
 import org.apache.sis.util.Workaround;
 import org.apache.sis.util.CharSequences;
 import org.apache.sis.internal.metadata.sql.ScriptRunner;
-import org.apache.sis.internal.metadata.sql.TestDatabase;
+import org.apache.sis.test.sql.TestDatabase;
 
 import static org.junit.Assert.assertEquals;
 
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java
index 9db7789..bf2477f 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultConcatenatedOperationTest.java
@@ -32,7 +32,7 @@ import org.apache.sis.io.wkt.Convention;
 
 import org.opengis.test.Validators;
 import org.apache.sis.test.DependsOn;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.MetadataAssert.*;
@@ -51,7 +51,7 @@ import static org.apache.sis.test.TestUtilities.getSingleton;
     DefaultTransformationTest.class,
     SingleOperationMarshallingTest.class
 })
-public final strictfp class DefaultConcatenatedOperationTest extends XMLTestCase {
+public final strictfp class DefaultConcatenatedOperationTest extends TestCase {
     /**
      * An XML file in this package containing a projected CRS definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java
index 1364182..aca3566 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/DefaultPassThroughOperationTest.java
@@ -24,7 +24,7 @@ import org.opengis.referencing.operation.CoordinateOperation;
 import org.opengis.referencing.operation.Transformation;
 import org.opengis.test.Validators;
 import org.apache.sis.test.DependsOn;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.test.TestUtilities.getSingleton;
@@ -43,7 +43,7 @@ import static org.opengis.test.Assert.*;
     DefaultTransformationTest.class,
     SingleOperationMarshallingTest.class
 })
-public final strictfp class DefaultPassThroughOperationTest extends XMLTestCase {
+public final strictfp class DefaultPassThroughOperationTest extends TestCase {
     /**
      * An XML file in this package containing a projected CRS definition.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/SingleOperationMarshallingTest.java b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/SingleOperationMarshallingTest.java
index ee87e0b..2b3c617 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/SingleOperationMarshallingTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/referencing/operation/SingleOperationMarshallingTest.java
@@ -42,7 +42,7 @@ import org.apache.sis.xml.Namespaces;
 import org.apache.sis.xml.XML;
 import org.apache.sis.test.DependsOn;
 import org.apache.sis.test.DependsOnMethod;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static org.apache.sis.metadata.iso.citation.Citations.EPSG;
@@ -63,7 +63,7 @@ import static org.apache.sis.test.ReferencingAssert.*;
     CC_OperationParameterGroupTest.class,
     org.apache.sis.parameter.ParameterMarshallingTest.class
 })
-public final strictfp class SingleOperationMarshallingTest extends XMLTestCase {
+public final strictfp class SingleOperationMarshallingTest extends TestCase {
     /**
      * Creates the test operation method.
      */
diff --git a/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java b/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java
index 4614e0d..1384074 100644
--- a/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java
+++ b/core/sis-referencing/src/test/java/org/apache/sis/test/integration/MetadataTest.java
@@ -79,8 +79,8 @@ import static java.util.Collections.singletonMap;
 // Test dependencies
 import org.apache.sis.test.LoggingWatcher;
 import org.apache.sis.test.TestUtilities;
-import org.apache.sis.test.XMLComparator;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.DocumentComparator;
+import org.apache.sis.test.xml.TestCase;
 import org.apache.sis.test.DependsOn;
 import org.junit.After;
 import org.junit.Rule;
@@ -107,7 +107,7 @@ import static org.apache.sis.metadata.iso.DefaultMetadataTest.REGRESSION;
 @DependsOn({
     org.apache.sis.referencing.datum.DefaultVerticalDatumTest.class
 })
-public strictfp class MetadataTest extends XMLTestCase {
+public strictfp class MetadataTest extends TestCase {
     /**
      * The resource file which contains an XML representation
      * of a {@link Metadata} object with a {@link VerticalCRS}.
@@ -416,7 +416,7 @@ public strictfp class MetadataTest extends XMLTestCase {
          * now the "gml:id" attribute since SIS generates different values than the ones in oyr test XML file,
          * and those values may change in future SIS version.
          */
-        final XMLComparator comparator = new XMLComparator(getResource(), xml.toString());
+        final DocumentComparator comparator = new DocumentComparator(getResource(), xml.toString());
         comparator.ignoredNodes.add(LegacyNamespaces.GMD + ":temporalElement");
         comparator.ignoredAttributes.add("http://www.w3.org/2000/xmlns:*");
         comparator.ignoredAttributes.add(Namespaces.XSI + ":schemaLocation");
diff --git a/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DataIdentificationTest.java b/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DataIdentificationTest.java
index f669ea3..1c800a5 100644
--- a/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DataIdentificationTest.java
+++ b/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DataIdentificationTest.java
@@ -17,7 +17,7 @@
 package org.apache.sis.internal.profile.fra;
 
 import javax.xml.bind.JAXBException;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Ignore;
 import org.junit.Test;
 
@@ -33,7 +33,7 @@ import static org.apache.sis.test.TestUtilities.getSingleton;
  * @since   0.4
  * @module
  */
-public final strictfp class DataIdentificationTest extends XMLTestCase {
+public final strictfp class DataIdentificationTest extends TestCase {
     /**
      * Tests marshalling and unmarshalling of a XML fragment.
      *
diff --git a/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DirectReferenceSystemTest.java b/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DirectReferenceSystemTest.java
index 3031f69..87fd75f 100644
--- a/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DirectReferenceSystemTest.java
+++ b/profiles/sis-french-profile/src/test/java/org/apache/sis/internal/profile/fra/DirectReferenceSystemTest.java
@@ -26,7 +26,7 @@ import org.apache.sis.metadata.iso.citation.DefaultResponsibleParty;
 import org.apache.sis.metadata.iso.citation.HardCodedCitations;
 import org.apache.sis.util.ComparisonMode;
 import org.apache.sis.test.TestUtilities;
-import org.apache.sis.test.XMLTestCase;
+import org.apache.sis.test.xml.TestCase;
 import org.junit.Test;
 
 import static java.util.Collections.singleton;
@@ -42,7 +42,7 @@ import static org.apache.sis.test.Assert.*;
  * @since   0.5
  * @module
  */
-public final strictfp class DirectReferenceSystemTest extends XMLTestCase {
+public final strictfp class DirectReferenceSystemTest extends TestCase {
     /**
      * An XML file in this package containing a reference system definition.
      */


Mime
View raw message