diff --git a/libraries-testing/README.md b/libraries-testing/README.md
index 332debfe18..7098c10d28 100644
--- a/libraries-testing/README.md
+++ b/libraries-testing/README.md
@@ -11,3 +11,4 @@ This module contains articles about test libraries.
- [Introduction to Awaitlity](https://www.baeldung.com/awaitlity-testing)
- [Introduction to Hoverfly in Java](https://www.baeldung.com/hoverfly)
- [Testing with Hamcrest](https://www.baeldung.com/java-junit-hamcrest-guide)
+- [Introduction To DBUnit](https://www.baeldung.com/dbunit)
diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml
index 3ffbb291a0..ad6c81a3d6 100644
--- a/libraries-testing/pom.xml
+++ b/libraries-testing/pom.xml
@@ -130,6 +130,27 @@
${asciidoctor.version}
+
+ org.dbunit
+ dbunit
+ ${dbunit.version}
+ test
+
+
+
+ com.h2database
+ h2
+ ${h2.version}
+ test
+
+
+
+ org.assertj
+ assertj-core
+ ${assertj-core.version}
+ test
+
+
@@ -150,6 +171,16 @@
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ ${maven-compiler-plugin.version}
+
+ ${maven-compiler-plugin.source}
+ ${maven-compiler-plugin.target}
+
+
+
@@ -166,6 +197,12 @@
4.1.1
3.6.2
2.0.0.0
+
1.4.200
+ 2.7.0
+ 3.14.0
+ 1.8
+ 1.8
+ 3.8.1
diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java b/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java
new file mode 100644
index 0000000000..cc29d9c58a
--- /dev/null
+++ b/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java
@@ -0,0 +1,8 @@
+package com.baeldung.dbunit;
+
+public class ConnectionSettings {
+ public static final String JDBC_DRIVER = org.h2.Driver.class.getName();
+ public static final String JDBC_URL = "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:dbunit/schema.sql'";
+ public static final String USER = "sa";
+ public static final String PASSWORD = "";
+}
diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java
new file mode 100644
index 0000000000..93c7e9a456
--- /dev/null
+++ b/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java
@@ -0,0 +1,168 @@
+package com.baeldung.dbunit;
+
+import org.dbunit.Assertion;
+import org.dbunit.DataSourceBasedDBTestCase;
+import org.dbunit.assertion.DiffCollectingFailureHandler;
+import org.dbunit.assertion.Difference;
+import org.dbunit.dataset.IDataSet;
+import org.dbunit.dataset.ITable;
+import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
+import org.dbunit.operation.DatabaseOperation;
+import org.h2.jdbcx.JdbcDataSource;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.platform.commons.logging.Logger;
+import org.junit.platform.commons.logging.LoggerFactory;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import javax.sql.DataSource;
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+
+import static com.baeldung.dbunit.ConnectionSettings.JDBC_URL;
+import static java.util.stream.Collectors.joining;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.dbunit.Assertion.assertEqualsIgnoreCols;
+
+@RunWith(JUnit4.class)
+public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase {
+
+ private static final Logger logger = LoggerFactory.getLogger(DataSourceDBUnitTest.class);
+
+ @Override
+ protected DataSource getDataSource() {
+ JdbcDataSource dataSource = new JdbcDataSource();
+ dataSource.setURL(JDBC_URL);
+ dataSource.setUser("sa");
+ dataSource.setPassword("");
+ return dataSource;
+ }
+
+ @Override
+ protected IDataSet getDataSet() throws Exception {
+ try (InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream("dbunit/data.xml")) {
+ return new FlatXmlDataSetBuilder().build(resourceAsStream);
+ }
+ }
+
+ @Override
+ protected DatabaseOperation getSetUpOperation() {
+ return DatabaseOperation.REFRESH;
+ }
+
+ @Override
+ protected DatabaseOperation getTearDownOperation() {
+ return DatabaseOperation.DELETE_ALL;
+ }
+
+ @Before
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ @Test
+ public void givenDataSet_whenSelect_thenFirstTitleIsGreyTShirt() throws SQLException {
+ final Connection connection = getDataSource().getConnection();
+
+ final ResultSet rs = connection.createStatement().executeQuery("select * from ITEMS where id = 1");
+
+ assertThat(rs.next()).isTrue();
+ assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt");
+ }
+
+ @Test
+ public void givenDataSetEmptySchema_whenDataSetCreated_thenTablesAreEqual() throws Exception {
+ final IDataSet expectedDataSet = getDataSet();
+ final ITable expectedTable = expectedDataSet.getTable("CLIENTS");
+ final IDataSet databaseDataSet = getConnection().createDataSet();
+ final ITable actualTable = databaseDataSet.getTable("CLIENTS");
+ Assertion.assertEquals(expectedTable, actualTable);
+ }
+
+ @Test
+ public void givenDataSet_whenInsert_thenTableHasNewClient() throws Exception {
+ try (final InputStream is = getClass().getClassLoader().getResourceAsStream("dbunit/expected-user.xml")) {
+ final IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(is);
+ final ITable expectedTable = expectedDataSet.getTable("CLIENTS");
+ final Connection conn = getDataSource().getConnection();
+
+ conn.createStatement()
+ .executeUpdate(
+ "INSERT INTO CLIENTS (first_name, last_name) VALUES ('John', 'Jansen')");
+ final ITable actualData = getConnection()
+ .createQueryTable(
+ "result_name",
+ "SELECT * FROM CLIENTS WHERE last_name='Jansen'");
+
+ assertEqualsIgnoreCols(expectedTable, actualData, new String[] { "id" });
+ }
+ }
+
+ @Test
+ public void givenDataSet_whenDelete_thenItemIsDeleted() throws Exception {
+ final Connection connection = getConnection().getConnection();
+
+ try (final InputStream is = DataSourceDBUnitTest.class.getClassLoader().getResourceAsStream("dbunit/items_exp_delete.xml")) {
+ ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("ITEMS");
+
+ connection.createStatement().executeUpdate("delete from ITEMS where id = 2");
+
+ final IDataSet databaseDataSet = getConnection().createDataSet();
+ ITable actualTable = databaseDataSet.getTable("ITEMS");
+
+ Assertion.assertEquals(expectedTable, actualTable);
+ }
+ }
+
+ @Test
+ public void givenDataSet_whenUpdate_thenItemHasNewName() throws Exception {
+ final Connection connection = getConnection().getConnection();
+
+ try (final InputStream is = DataSourceDBUnitTest.class.getClassLoader().getResourceAsStream("dbunit/items_exp_rename.xml")) {
+ ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("ITEMS");
+
+ connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1");
+
+ final IDataSet databaseDataSet = getConnection().createDataSet();
+ ITable actualTable = databaseDataSet.getTable("ITEMS");
+
+ Assertion.assertEquals(expectedTable, actualTable);
+ }
+ }
+
+ @Test
+ public void givenDataSet_whenInsertUnexpectedData_thenFailOnAllUnexpectedValues() throws Exception {
+ try (final InputStream is = getClass().getClassLoader().getResourceAsStream("dbunit/expected-multiple-failures.xml")) {
+ final IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(is);
+ final ITable expectedTable = expectedDataSet.getTable("ITEMS");
+ final Connection conn = getDataSource().getConnection();
+ final DiffCollectingFailureHandler collectingHandler = new DiffCollectingFailureHandler();
+
+ conn.createStatement().executeUpdate(
+ "INSERT INTO ITEMS (title, price) VALUES ('Battery', '1000000')");
+ final ITable actualData = getConnection().createDataSet().getTable("ITEMS");
+
+ Assertion.assertEquals(expectedTable, actualData, collectingHandler);
+ if (!collectingHandler.getDiffList().isEmpty()) {
+ String message = (String) collectingHandler
+ .getDiffList()
+ .stream()
+ .map(d -> formatDifference((Difference) d)).collect(joining("\n"));
+ logger.error(() -> message);
+ }
+ }
+ }
+
+ private static String formatDifference(Difference diff) {
+ return "expected value in " + diff.getExpectedTable().getTableMetaData().getTableName() + "." + diff.getColumnName() + " row " + diff.getRowIndex() + ":" + diff.getExpectedValue() + ", but was: " + diff.getActualValue();
+ }
+}
diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java
new file mode 100644
index 0000000000..6243af9676
--- /dev/null
+++ b/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java
@@ -0,0 +1,159 @@
+package com.baeldung.dbunit;
+
+import org.dbunit.Assertion;
+import org.dbunit.IDatabaseTester;
+import org.dbunit.JdbcDatabaseTester;
+import org.dbunit.dataset.IDataSet;
+import org.dbunit.dataset.ITable;
+import org.dbunit.dataset.filter.DefaultColumnFilter;
+import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
+import org.dbunit.operation.DatabaseOperation;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.InputStream;
+import java.sql.Connection;
+import java.sql.ResultSet;
+
+import static com.baeldung.dbunit.ConnectionSettings.JDBC_DRIVER;
+import static com.baeldung.dbunit.ConnectionSettings.JDBC_URL;
+import static com.baeldung.dbunit.ConnectionSettings.PASSWORD;
+import static com.baeldung.dbunit.ConnectionSettings.USER;
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.dbunit.Assertion.assertEquals;
+
+@RunWith(JUnit4.class)
+public class OldSchoolDbUnitTest {
+
+ private static IDatabaseTester tester = null;
+
+ @BeforeClass
+ public static void setUp() throws Exception {
+ tester = initDatabaseTester();
+ }
+
+ private static IDatabaseTester initDatabaseTester() throws Exception {
+ final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD);
+ tester.setDataSet(initDataSet());
+ tester.setSetUpOperation(DatabaseOperation.REFRESH);
+ tester.setTearDownOperation(DatabaseOperation.DELETE_ALL);
+ return tester;
+ }
+
+ private static IDataSet initDataSet() throws Exception {
+ try (final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) {
+ return new FlatXmlDataSetBuilder().build(is);
+ }
+ }
+
+ @Before
+ public void setup() throws Exception {
+ tester.onSetup();
+ }
+
+ @After
+ public void tearDown() throws Exception {
+ tester.onTearDown();
+ }
+
+ @Test
+ public void givenDataSet_whenSelect_thenFirstTitleIsGreyTShirt() throws Exception {
+ final Connection connection = tester.getConnection().getConnection();
+
+ final ResultSet rs = connection.createStatement().executeQuery("select * from ITEMS where id = 1");
+
+ assertThat(rs.next()).isTrue();
+ assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt");
+ }
+
+ @Test
+ public void givenDataSet_whenInsert_thenGetResultsAreStillEqualIfIgnoringColumnsWithDifferentProduced() throws Exception {
+ final Connection connection = tester.getConnection().getConnection();
+ final String[] excludedColumns = { "id", "produced" };
+ try (final InputStream is = getClass().getClassLoader().getResourceAsStream("dbunit/expected-ignoring-registered_at.xml")) {
+ final IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(is);
+ final ITable expectedTable = DefaultColumnFilter.excludedColumnsTable(
+ expectedDataSet.getTable("ITEMS"), excludedColumns);
+
+ connection.createStatement().executeUpdate(
+ "INSERT INTO ITEMS (title, price, produced) VALUES('Necklace', 199.99, now())");
+
+ final IDataSet databaseDataSet = tester.getConnection().createDataSet();
+ final ITable actualTable = DefaultColumnFilter.excludedColumnsTable(
+ databaseDataSet.getTable("ITEMS"), excludedColumns);
+
+ Assertion.assertEquals(expectedTable, actualTable);
+ }
+ }
+
+ @Test
+ public void givenDataSet_whenDelete_thenItemIsRemoved() throws Exception {
+ final Connection connection = tester.getConnection().getConnection();
+
+ try (final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/items_exp_delete.xml")) {
+ ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("ITEMS");
+
+ connection.createStatement().executeUpdate("delete from ITEMS where id = 2");
+
+ final IDataSet databaseDataSet = tester.getConnection().createDataSet();
+ ITable actualTable = databaseDataSet.getTable("ITEMS");
+
+ assertEquals(expectedTable, actualTable);
+ }
+ }
+
+ @Test
+ public void givenDataSet_whenDelete_thenItemIsRemovedAndResultsEqualIfProducedIsIgnored() throws Exception {
+ final Connection connection = tester.getConnection().getConnection();
+
+ try (final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/items_exp_delete_no_produced.xml")) {
+ final ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("ITEMS");
+
+ connection.createStatement().executeUpdate("delete from ITEMS where id = 2");
+
+ final IDataSet databaseDataSet = tester.getConnection().createDataSet();
+ ITable actualTable = databaseDataSet.getTable("ITEMS");
+ actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[] { "produced" });
+
+ assertEquals(expectedTable, actualTable);
+ }
+ }
+
+ @Test
+ public void givenDataSet_whenUpdate_thenItemHasNewName() throws Exception {
+ final Connection connection = tester.getConnection().getConnection();
+
+ try (final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/items_exp_rename.xml")) {
+ final ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("ITEMS");
+
+ connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1");
+
+ final IDataSet databaseDataSet = tester.getConnection().createDataSet();
+ ITable actualTable = databaseDataSet.getTable("ITEMS");
+
+ assertEquals(expectedTable, actualTable);
+ }
+ }
+
+ @Test
+ public void givenDataSet_whenUpdateWithNoProduced_thenItemHasNewName() throws Exception {
+ final Connection connection = tester.getConnection().getConnection();
+
+ try (final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/items_exp_rename_no_produced.xml")) {
+ ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("ITEMS");
+ expectedTable = DefaultColumnFilter.excludedColumnsTable(expectedTable, new String[] { "produced" });
+
+ connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1");
+
+ final IDataSet databaseDataSet = tester.getConnection().createDataSet();
+ ITable actualTable = databaseDataSet.getTable("ITEMS");
+ actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[] { "produced" });
+ assertEquals(expectedTable, actualTable);
+ }
+ }
+
+}
diff --git a/libraries-testing/src/test/java/com/baeldung/jsonassert/JsonAssertUnitTest.java b/libraries-testing/src/test/java/com/baeldung/jsonassert/JsonAssertUnitTest.java
index ce9638c4af..822468e91f 100644
--- a/libraries-testing/src/test/java/com/baeldung/jsonassert/JsonAssertUnitTest.java
+++ b/libraries-testing/src/test/java/com/baeldung/jsonassert/JsonAssertUnitTest.java
@@ -78,10 +78,10 @@ public class JsonAssertUnitTest {
@Test
public void givenArray_whenComparing_thenOrderMustMatchForStrict() throws JSONException {
- String result = "[Alex, Barbera, Charlie, Xavier]";
- JSONAssert.assertEquals("[Charlie, Alex, Xavier, Barbera]", result, JSONCompareMode.LENIENT);
- JSONAssert.assertEquals("[Alex, Barbera, Charlie, Xavier]", result, JSONCompareMode.STRICT);
- JSONAssert.assertNotEquals("[Charlie, Alex, Xavier, Barbera]", result, JSONCompareMode.STRICT);
+ String result = "[Alex, Barbera, Charlie, Wolf]";
+ JSONAssert.assertEquals("[Charlie, Alex, Wolf, Barbera]", result, JSONCompareMode.LENIENT);
+ JSONAssert.assertEquals("[Alex, Barbera, Charlie, Wolf]", result, JSONCompareMode.STRICT);
+ JSONAssert.assertNotEquals("[Charlie, Alex, Wolf, Barbera]", result, JSONCompareMode.STRICT);
}
@Test
@@ -94,7 +94,7 @@ public class JsonAssertUnitTest {
@Test
public void whenComparingSizeOfArray_thenPass() throws JSONException {
- String names = "{names:[Alex, Barbera, Charlie, Xavier]}";
+ String names = "{names:[Alex, Barbera, Charlie, Wolf]}";
JSONAssert.assertEquals("{names:[4]}", names, new ArraySizeComparator(JSONCompareMode.LENIENT));
}
diff --git a/libraries-testing/src/test/resources/dbunit/data.xml b/libraries-testing/src/test/resources/dbunit/data.xml
new file mode 100644
index 0000000000..4865dec54c
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/data.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
diff --git a/libraries-testing/src/test/resources/dbunit/expected-ignoring-registered_at.xml b/libraries-testing/src/test/resources/dbunit/expected-ignoring-registered_at.xml
new file mode 100644
index 0000000000..ea57b6a961
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/expected-ignoring-registered_at.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries-testing/src/test/resources/dbunit/expected-multiple-failures.xml b/libraries-testing/src/test/resources/dbunit/expected-multiple-failures.xml
new file mode 100644
index 0000000000..ea57b6a961
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/expected-multiple-failures.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/libraries-testing/src/test/resources/dbunit/expected-user.xml b/libraries-testing/src/test/resources/dbunit/expected-user.xml
new file mode 100644
index 0000000000..631dd84210
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/expected-user.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/libraries-testing/src/test/resources/dbunit/items.xml b/libraries-testing/src/test/resources/dbunit/items.xml
new file mode 100644
index 0000000000..d13e93bbe0
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/items.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/libraries-testing/src/test/resources/dbunit/items_exp_delete.xml b/libraries-testing/src/test/resources/dbunit/items_exp_delete.xml
new file mode 100644
index 0000000000..a6fa2b33e8
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/items_exp_delete.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/libraries-testing/src/test/resources/dbunit/items_exp_delete_no_produced.xml b/libraries-testing/src/test/resources/dbunit/items_exp_delete_no_produced.xml
new file mode 100644
index 0000000000..3e7f854f5f
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/items_exp_delete_no_produced.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/libraries-testing/src/test/resources/dbunit/items_exp_rename.xml b/libraries-testing/src/test/resources/dbunit/items_exp_rename.xml
new file mode 100644
index 0000000000..32f1d57cf6
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/items_exp_rename.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/libraries-testing/src/test/resources/dbunit/items_exp_rename_no_produced.xml b/libraries-testing/src/test/resources/dbunit/items_exp_rename_no_produced.xml
new file mode 100644
index 0000000000..4f14b17113
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/items_exp_rename_no_produced.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/libraries-testing/src/test/resources/dbunit/schema.sql b/libraries-testing/src/test/resources/dbunit/schema.sql
new file mode 100644
index 0000000000..c2a8d2d630
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/schema.sql
@@ -0,0 +1,28 @@
+CREATE TABLE IF NOT EXISTS CLIENTS
+(
+ `id` int AUTO_INCREMENT NOT NULL,
+ `first_name` varchar(100) NOT NULL,
+ `last_name` varchar(100) NOT NULL,
+ PRIMARY KEY (`id`)
+);
+
+CREATE TABLE IF NOT EXISTS ITEMS
+(
+ `id` int AUTO_INCREMENT NOT NULL,
+ `title` varchar(100) NOT NULL,
+ `produced` date,
+ `price` float,
+ PRIMARY KEY (`id`)
+);
+
+CREATE TABLE IF NOT EXISTS PURCHASES
+(
+ `id` int NOT NULL AUTO_INCREMENT,
+ `id_user` int NOT NULL,
+ `id_item` int NOT NULL,
+ `total_price` float NOT NULL,
+ `quantity` int(11) NOT NULL,
+ PRIMARY KEY (`id`),
+ FOREIGN KEY (`id_user`) REFERENCES CLIENTS (`id`) ON DELETE CASCADE,
+ FOREIGN KEY (`id_item`) REFERENCES ITEMS (`id`) ON DELETE CASCADE ON UPDATE CASCADE
+);
diff --git a/libraries-testing/src/test/resources/dbunit/users.xml b/libraries-testing/src/test/resources/dbunit/users.xml
new file mode 100644
index 0000000000..f04943c4cc
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/users.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/libraries-testing/src/test/resources/dbunit/users_exp_delete.xml b/libraries-testing/src/test/resources/dbunit/users_exp_delete.xml
new file mode 100644
index 0000000000..20a2f2f1a7
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/users_exp_delete.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/libraries-testing/src/test/resources/dbunit/users_exp_rename.xml b/libraries-testing/src/test/resources/dbunit/users_exp_rename.xml
new file mode 100644
index 0000000000..1ab6cf53b8
--- /dev/null
+++ b/libraries-testing/src/test/resources/dbunit/users_exp_rename.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+