From e189686b4a55267a1a0b369ef0f170576b2a0eb7 Mon Sep 17 00:00:00 2001 From: naXa! Date: Sun, 17 Mar 2019 22:24:10 +0300 Subject: [PATCH 01/18] [BAEL-2749] create new module `dbunit`; add DbUnit tests: `OldSchoolDbUnitTest` + `PrepAndExpectedDbUnitTest` + relevant data --- dbunit/README.md | 6 + dbunit/docs/db_schema.png | Bin 0 -> 17099 bytes dbunit/pom.xml | 35 ++++++ .../main/java/com/baeldung/dbunit/.gitkeep | 0 dbunit/src/main/resources/logback.xml | 13 ++ .../baeldung/dbunit/OldSchoolDbUnitTest.java | 111 ++++++++++++++++++ .../dbunit/PrepAndExpectedDbUnitTest.java | 103 ++++++++++++++++ dbunit/src/test/resources/data.xml | 11 ++ dbunit/src/test/resources/items.xml | 9 ++ .../src/test/resources/items_exp_delete.xml | 8 ++ .../src/test/resources/items_exp_rename.xml | 9 ++ dbunit/src/test/resources/schema.sql | 28 +++++ dbunit/src/test/resources/users.xml | 7 ++ .../src/test/resources/users_exp_delete.xml | 6 + .../src/test/resources/users_exp_rename.xml | 7 ++ 15 files changed, 353 insertions(+) create mode 100644 dbunit/README.md create mode 100644 dbunit/docs/db_schema.png create mode 100644 dbunit/pom.xml create mode 100644 dbunit/src/main/java/com/baeldung/dbunit/.gitkeep create mode 100644 dbunit/src/main/resources/logback.xml create mode 100644 dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java create mode 100644 dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java create mode 100644 dbunit/src/test/resources/data.xml create mode 100644 dbunit/src/test/resources/items.xml create mode 100644 dbunit/src/test/resources/items_exp_delete.xml create mode 100644 dbunit/src/test/resources/items_exp_rename.xml create mode 100644 dbunit/src/test/resources/schema.sql create mode 100644 dbunit/src/test/resources/users.xml create mode 100644 dbunit/src/test/resources/users_exp_delete.xml create mode 100644 dbunit/src/test/resources/users_exp_rename.xml diff --git a/dbunit/README.md b/dbunit/README.md new file mode 100644 index 0000000000..383bd6fb7e --- /dev/null +++ b/dbunit/README.md @@ -0,0 +1,6 @@ +### Database schema + +![db schema](docs/db_schema.png) + +### Relevant Articles: +- [Introduction To DBUnit](https://www.baeldung.com/dbunit) diff --git a/dbunit/docs/db_schema.png b/dbunit/docs/db_schema.png new file mode 100644 index 0000000000000000000000000000000000000000..d9185bacd2c624c8e05aea87bf542cfdfd7f1604 GIT binary patch literal 17099 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 + 4.0.0 + dbunit + 1.0 + dbunit + + + com.baeldung + parent-modules + 1.0.0-SNAPSHOT + + + + + org.dbunit + dbunit + ${dbunit.version} + test + + + + com.h2database + h2 + 1.4.197 + test + + + + + + 2.6.0 + + + diff --git a/dbunit/src/main/java/com/baeldung/dbunit/.gitkeep b/dbunit/src/main/java/com/baeldung/dbunit/.gitkeep new file mode 100644 index 0000000000..e69de29bb2 diff --git a/dbunit/src/main/resources/logback.xml b/dbunit/src/main/resources/logback.xml new file mode 100644 index 0000000000..7d900d8ea8 --- /dev/null +++ b/dbunit/src/main/resources/logback.xml @@ -0,0 +1,13 @@ + + + + + %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + + + + + + + + \ No newline at end of file diff --git a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java new file mode 100644 index 0000000000..a703863614 --- /dev/null +++ b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -0,0 +1,111 @@ +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.xml.FlatXmlDataSet; +import org.dbunit.operation.DatabaseOperation; +import org.junit.After; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; + +import java.io.InputStream; +import java.sql.Connection; +import java.sql.ResultSet; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertTrue; + +public class OldSchoolDbUnitTest { + private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); + private static final String JDBC_URL = "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:schema.sql'"; + private static final String USER = "sa"; + private static final String PASSWORD = ""; + + 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.NONE); + return tester; + } + + private static IDataSet initDataSet() throws Exception { + final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("data.xml"); + return new FlatXmlDataSet(is); + } + + @Before + public void setup() throws Exception { + tester.onSetup(); + } + + @After + public void tearDown() throws Exception { + tester.onTearDown(); + } + + @Test + public void testSelect() throws Exception { + // Arrange + final Connection connection = tester.getConnection().getConnection(); + + // Act + final ResultSet rs = connection.createStatement().executeQuery("select * from iTEMS where id = 1"); + + // Assert + assertTrue(rs.next()); + assertEquals("Grey T-Shirt", rs.getString("title")); + } + + @Test + public void testDelete() throws Exception { + // Arrange + final Connection connection = tester.getConnection().getConnection(); + + final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml"); + ITable expectedTable = (new FlatXmlDataSet(is)).getTable("items"); + //expectedTable = DefaultColumnFilter.excludedColumnsTable(expectedTable, new String[]{"produced"}); + + // Act + connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); + + // Assert + final IDataSet databaseDataSet = tester.getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); + //actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); + + Assertion.assertEquals(expectedTable, actualTable); + } + + @Test + public void testUpdate() throws Exception { + // Arrange + final Connection connection = tester.getConnection().getConnection(); + + final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml"); + ITable expectedTable = (new FlatXmlDataSet(is)).getTable("items"); + //expectedTable = DefaultColumnFilter.excludedColumnsTable(expectedTable, new String[]{"produced"}); + + // Act + connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1"); + + // Assert + final IDataSet databaseDataSet = tester.getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); + //actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); + + Assertion.assertEquals(expectedTable, actualTable); + } + +} diff --git a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java new file mode 100644 index 0000000000..c3882d5eab --- /dev/null +++ b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java @@ -0,0 +1,103 @@ +package com.baeldung.dbunit; + +import org.dbunit.*; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.dbunit.operation.DatabaseOperation; +import org.dbunit.util.fileloader.DataFileLoader; +import org.dbunit.util.fileloader.FlatXmlDataFileLoader; +import org.junit.Test; + +import java.io.InputStream; +import java.sql.Connection; +import java.sql.ResultSet; + +public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { + private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); + private static final String JDBC_URL = "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:schema.sql'"; + private static final String USER = "sa"; + private static final String PASSWORD = ""; + + @Override + public void setUp() throws Exception { + setDatabaseTester(initDatabaseTester()); + setDataFileLoader(initDataFileLoader()); + super.setUp(); + } + + private IDatabaseTester initDatabaseTester() throws Exception { + final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); + tester.setDataSet(initDataSet()); + tester.setSetUpOperation(DatabaseOperation.REFRESH); + return tester; + } + + private IDataSet initDataSet() throws Exception { + final InputStream is = getClass().getClassLoader().getResourceAsStream("data.xml"); + return new FlatXmlDataSetBuilder().build(is); + } + + private DataFileLoader initDataFileLoader() { + return new FlatXmlDataFileLoader(); + } + + @Test + public void testSelect() throws Exception { + // Arrange + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("USERS", new String[]{})}; + final String[] prepDataFiles = {"/users.xml"}; + final String[] expectedDataFiles = {"/users.xml"}; + final PrepAndExpectedTestCaseSteps testSteps = () -> { + // invoke the method being tested here; for the sake of simplicity we use JDBC API directly in this example + final ResultSet rs = connection.createStatement().executeQuery("select * from USERS where id = 1"); + + // either place assertions here + //assertTrue(rs.next()); + //assertEquals("Xavier", rs.getString("last_name")); + + return rs; + }; + + // Act + final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + + // or place assertions at the end + assertTrue(rs.next()); + assertEquals("Xavier", rs.getString("last_name")); + } + + @Test + public void testUpdate() throws Exception { + // Arrange + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("USERS", new String[]{})}; // define tables to verify + final String[] prepDataFiles = {"/users.xml"}; // define prep files + final String[] expectedDataFiles = {"/users_exp_rename.xml"}; // define expected files + final PrepAndExpectedTestCaseSteps testSteps = () -> { + // invoke the method being tested here; for the sake of simplicity we use JDBC API directly in this example + return connection.createStatement().executeUpdate("update USERS set first_name = 'new name' where id = 1"); + // after this method exits, dbUnit will: + // * verify configured tables + // * cleanup tables as configured + }; + + // Act + super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + } + + @Test + public void testDelete() throws Exception { + // Arrange + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("USERS", new String[]{})}; + final String[] prepDataFiles = {"/users.xml"}; + final String[] expectedDataFiles = {"/users_exp_delete.xml"}; + final PrepAndExpectedTestCaseSteps testSteps = + () -> connection.createStatement().executeUpdate("delete from USERS where id = 2"); + + // Act + super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + } + +} diff --git a/dbunit/src/test/resources/data.xml b/dbunit/src/test/resources/data.xml new file mode 100644 index 0000000000..e4498513e0 --- /dev/null +++ b/dbunit/src/test/resources/data.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/dbunit/src/test/resources/items.xml b/dbunit/src/test/resources/items.xml new file mode 100644 index 0000000000..04a975d7ee --- /dev/null +++ b/dbunit/src/test/resources/items.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/dbunit/src/test/resources/items_exp_delete.xml b/dbunit/src/test/resources/items_exp_delete.xml new file mode 100644 index 0000000000..1aaeff59ca --- /dev/null +++ b/dbunit/src/test/resources/items_exp_delete.xml @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/dbunit/src/test/resources/items_exp_rename.xml b/dbunit/src/test/resources/items_exp_rename.xml new file mode 100644 index 0000000000..237280e758 --- /dev/null +++ b/dbunit/src/test/resources/items_exp_rename.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/dbunit/src/test/resources/schema.sql b/dbunit/src/test/resources/schema.sql new file mode 100644 index 0000000000..9b5018985a --- /dev/null +++ b/dbunit/src/test/resources/schema.sql @@ -0,0 +1,28 @@ +CREATE TABLE IF NOT EXISTS USERS +( + `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 USERS (`id`) ON DELETE CASCADE, + FOREIGN KEY (`id_item`) REFERENCES ITEMS (`id`) ON DELETE CASCADE ON UPDATE CASCADE +); diff --git a/dbunit/src/test/resources/users.xml b/dbunit/src/test/resources/users.xml new file mode 100644 index 0000000000..cebadf2e67 --- /dev/null +++ b/dbunit/src/test/resources/users.xml @@ -0,0 +1,7 @@ + + + + + + + diff --git a/dbunit/src/test/resources/users_exp_delete.xml b/dbunit/src/test/resources/users_exp_delete.xml new file mode 100644 index 0000000000..8b72ceef89 --- /dev/null +++ b/dbunit/src/test/resources/users_exp_delete.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/dbunit/src/test/resources/users_exp_rename.xml b/dbunit/src/test/resources/users_exp_rename.xml new file mode 100644 index 0000000000..9bc1254967 --- /dev/null +++ b/dbunit/src/test/resources/users_exp_rename.xml @@ -0,0 +1,7 @@ + + + + + + + From 6194165f0d1c57ef5d6b5f1111d96107beee735c Mon Sep 17 00:00:00 2001 From: naXa! Date: Mon, 25 Mar 2019 01:37:05 +0300 Subject: [PATCH 02/18] [BAEL-2749] add `SampleDbUnitTest` (extending `DBTestCase`) --- .../com/baeldung/dbunit/SampleDbUnitTest.java | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java diff --git a/dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java new file mode 100644 index 0000000000..cfe4fd4e11 --- /dev/null +++ b/dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java @@ -0,0 +1,96 @@ +package com.baeldung.dbunit; + +import org.dbunit.Assertion; +import org.dbunit.DBTestCase; +import org.dbunit.PropertiesBasedJdbcDatabaseTester; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ITable; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.dbunit.operation.DatabaseOperation; +import org.junit.Test; + +import java.io.InputStream; +import java.sql.Connection; +import java.sql.ResultSet; + +public class SampleDbUnitTest extends DBTestCase { + private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); + private static final String JDBC_URL = "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:schema.sql'"; + private static final String USER = "sa"; + private static final String PASSWORD = ""; + + public SampleDbUnitTest(String name) { + super(name); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, USER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, PASSWORD); + // System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, ""); + } + + @Override + protected IDataSet getDataSet() throws Exception { + final InputStream is = SampleDbUnitTest.class.getClassLoader().getResourceAsStream("data.xml"); + return new FlatXmlDataSetBuilder().build(is); + } + + @Override + protected DatabaseOperation getSetUpOperation() { + return DatabaseOperation.REFRESH; + } + + @Override + protected DatabaseOperation getTearDownOperation() { + return DatabaseOperation.NONE; + } + + @Test + public void testSelect() throws Exception { + // Arrange + final Connection connection = getConnection().getConnection(); + + // Act + final ResultSet rs = connection.createStatement().executeQuery("select * from iTEMS where id = 1"); + + // Assert + assertTrue(rs.next()); + assertEquals("Grey T-Shirt", rs.getString("title")); + } + + @Test + public void testDelete() throws Exception { + // Arrange + final Connection connection = getConnection().getConnection(); + + final InputStream is = SampleDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml"); + ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); + + // Act + connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); + + // Assert + final IDataSet databaseDataSet = getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); + + Assertion.assertEquals(expectedTable, actualTable); + } + + @Test + public void testUpdate() throws Exception { + // Arrange + final Connection connection = getConnection().getConnection(); + + final InputStream is = SampleDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml"); + ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); + + // Act + connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1"); + + // Assert + final IDataSet databaseDataSet = getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); + + Assertion.assertEquals(expectedTable, actualTable); + } + +} From aaffd9614fc1675ab05f992eec62c90be5aef76f Mon Sep 17 00:00:00 2001 From: naXa! Date: Mon, 25 Mar 2019 02:00:03 +0300 Subject: [PATCH 03/18] [BAEL-2749] add dbunit module to parent pom --- pom.xml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pom.xml b/pom.xml index 04a2ce054c..734e2c8ab9 100644 --- a/pom.xml +++ b/pom.xml @@ -601,6 +601,8 @@ + dbunit + parent-boot-1 parent-boot-2 parent-spring-4 @@ -1288,6 +1290,8 @@ + dbunit + parent-boot-1 parent-boot-2 parent-spring-4 From a65c5bf202c3326514e7d6c1408bd9e445c06fd9 Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Sun, 29 Mar 2020 11:37:19 +0200 Subject: [PATCH 04/18] [BAEL-2749] Introduces Assertj and uses builder pattern --- dbunit/pom.xml | 36 ++++++++++++++++--- .../baeldung/dbunit/OldSchoolDbUnitTest.java | 8 +++-- .../dbunit/PrepAndExpectedDbUnitTest.java | 12 +++++-- 3 files changed, 45 insertions(+), 11 deletions(-) diff --git a/dbunit/pom.xml b/dbunit/pom.xml index b77b15f2d4..ab0befcf4c 100644 --- a/dbunit/pom.xml +++ b/dbunit/pom.xml @@ -3,6 +3,16 @@ 4.0.0 dbunit 1.0 + + 1.4.200 + + 1.8 + 1.8 + 3.8.1 + + 3.14.0 + 2.6.0 + dbunit @@ -22,14 +32,30 @@ com.h2database h2 - 1.4.197 + ${h2.version} + test + + + + org.assertj + assertj-core + ${assertj-core.version} test - - - 2.6.0 - + + + + org.apache.maven.plugins + maven-compiler-plugin + ${maven-compiler-plugin.version} + + ${maven-compiler-plugin.source} + ${maven-compiler-plugin.target} + + + + diff --git a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java index a703863614..2a2f25971b 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -6,6 +6,7 @@ import org.dbunit.JdbcDatabaseTester; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; import org.dbunit.dataset.xml.FlatXmlDataSet; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.dbunit.operation.DatabaseOperation; import org.junit.After; import org.junit.Before; @@ -16,6 +17,7 @@ import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; +import static org.assertj.core.api.Assertions.assertThat; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -74,7 +76,7 @@ public class OldSchoolDbUnitTest { final Connection connection = tester.getConnection().getConnection(); final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml"); - ITable expectedTable = (new FlatXmlDataSet(is)).getTable("items"); + ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); //expectedTable = DefaultColumnFilter.excludedColumnsTable(expectedTable, new String[]{"produced"}); // Act @@ -94,7 +96,7 @@ public class OldSchoolDbUnitTest { final Connection connection = tester.getConnection().getConnection(); final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml"); - ITable expectedTable = (new FlatXmlDataSet(is)).getTable("items"); + ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); //expectedTable = DefaultColumnFilter.excludedColumnsTable(expectedTable, new String[]{"produced"}); // Act @@ -105,7 +107,7 @@ public class OldSchoolDbUnitTest { ITable actualTable = databaseDataSet.getTable("items"); //actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); - Assertion.assertEquals(expectedTable, actualTable); + assertThat(actualTable).isEqualTo(actualTable); } } diff --git a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java index c3882d5eab..c322cf0ae3 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java @@ -1,6 +1,10 @@ package com.baeldung.dbunit; -import org.dbunit.*; +import org.dbunit.DefaultPrepAndExpectedTestCase; +import org.dbunit.IDatabaseTester; +import org.dbunit.JdbcDatabaseTester; +import org.dbunit.PrepAndExpectedTestCaseSteps; +import org.dbunit.VerifyTableDefinition; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.dbunit.operation.DatabaseOperation; @@ -12,6 +16,8 @@ import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; +import static org.assertj.core.api.Assertions.assertThat; + public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); private static final String JDBC_URL = "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:schema.sql'"; @@ -63,8 +69,8 @@ public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); // or place assertions at the end - assertTrue(rs.next()); - assertEquals("Xavier", rs.getString("last_name")); + assertThat(rs.next()).isTrue(); + assertThat(rs.getString("last_name")).isEqualTo("Xavier"); } @Test From 71ba591868ed0f200f16c17a3d116cf6c32a559b Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Sun, 29 Mar 2020 18:16:45 +0200 Subject: [PATCH 05/18] [BAEL-2749] Select and Delete for OldSchool --- dbunit/pom.xml | 1 + .../baeldung/dbunit/OldSchoolDbUnitTest.java | 39 +++++++++++-------- .../items_exp_delete_no_produced.xml | 8 ++++ 3 files changed, 32 insertions(+), 16 deletions(-) create mode 100644 dbunit/src/test/resources/items_exp_delete_no_produced.xml diff --git a/dbunit/pom.xml b/dbunit/pom.xml index ab0befcf4c..7ca53cd3be 100644 --- a/dbunit/pom.xml +++ b/dbunit/pom.xml @@ -13,6 +13,7 @@ 3.14.0 2.6.0 + dbunit diff --git a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java index 2a2f25971b..e64b49263a 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -5,7 +5,7 @@ import org.dbunit.IDatabaseTester; import org.dbunit.JdbcDatabaseTester; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.ITable; -import org.dbunit.dataset.xml.FlatXmlDataSet; +import org.dbunit.dataset.filter.DefaultColumnFilter; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.dbunit.operation.DatabaseOperation; import org.junit.After; @@ -18,8 +18,7 @@ import java.sql.Connection; import java.sql.ResultSet; import static org.assertj.core.api.Assertions.assertThat; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.dbunit.Assertion.assertEquals; public class OldSchoolDbUnitTest { private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); @@ -44,7 +43,7 @@ public class OldSchoolDbUnitTest { private static IDataSet initDataSet() throws Exception { final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("data.xml"); - return new FlatXmlDataSet(is); + return new FlatXmlDataSetBuilder().build(is); } @Before @@ -59,35 +58,43 @@ public class OldSchoolDbUnitTest { @Test public void testSelect() throws Exception { - // Arrange final Connection connection = tester.getConnection().getConnection(); - // Act final ResultSet rs = connection.createStatement().executeQuery("select * from iTEMS where id = 1"); - // Assert - assertTrue(rs.next()); - assertEquals("Grey T-Shirt", rs.getString("title")); + assertThat(rs.next()).isTrue(); + assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt"); } @Test public void testDelete() throws Exception { - // Arrange final Connection connection = tester.getConnection().getConnection(); final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml"); ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); - //expectedTable = DefaultColumnFilter.excludedColumnsTable(expectedTable, new String[]{"produced"}); - // Act connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); - // Assert final IDataSet databaseDataSet = tester.getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("items"); - //actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); - Assertion.assertEquals(expectedTable, actualTable); + assertEquals(expectedTable, actualTable); + } + + @Test + public void testDeleteWithExcludedColumns() throws Exception { + final Connection connection = tester.getConnection().getConnection(); + + final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete_no_produced.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"); + actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); + + assertEquals(expectedTable, actualTable); } @Test @@ -107,7 +114,7 @@ public class OldSchoolDbUnitTest { ITable actualTable = databaseDataSet.getTable("items"); //actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); - assertThat(actualTable).isEqualTo(actualTable); + assertEquals(expectedTable, actualTable); } } diff --git a/dbunit/src/test/resources/items_exp_delete_no_produced.xml b/dbunit/src/test/resources/items_exp_delete_no_produced.xml new file mode 100644 index 0000000000..c9b182a1b2 --- /dev/null +++ b/dbunit/src/test/resources/items_exp_delete_no_produced.xml @@ -0,0 +1,8 @@ + + + + + + + + From e4f4f7110b33f753a50b5f56443b8dff8ab014b5 Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Sun, 29 Mar 2020 21:47:00 +0200 Subject: [PATCH 06/18] [BAEL-2749] Code refactoring --- dbunit/src/main/resources/logback.xml | 2 +- .../baeldung/dbunit/ConnectionSettings.java | 8 ++++ .../baeldung/dbunit/OldSchoolDbUnitTest.java | 32 ++++++++----- .../dbunit/PrepAndExpectedDbUnitTest.java | 48 +++++++------------ .../com/baeldung/dbunit/SampleDbUnitTest.java | 23 ++++----- dbunit/src/test/resources/data.xml | 12 ++--- .../src/test/resources/items_exp_delete.xml | 8 ++-- .../items_exp_delete_no_produced.xml | 8 ++-- .../src/test/resources/items_exp_rename.xml | 10 ++-- .../items_exp_rename_no_produced.xml | 9 ++++ dbunit/src/test/resources/schema.sql | 34 ++++++------- dbunit/src/test/resources/users.xml | 6 +-- .../src/test/resources/users_exp_delete.xml | 4 +- .../src/test/resources/users_exp_rename.xml | 6 +-- 14 files changed, 108 insertions(+), 102 deletions(-) create mode 100644 dbunit/src/test/java/com/baeldung/dbunit/ConnectionSettings.java create mode 100644 dbunit/src/test/resources/items_exp_rename_no_produced.xml diff --git a/dbunit/src/main/resources/logback.xml b/dbunit/src/main/resources/logback.xml index 7d900d8ea8..26beb6d5b4 100644 --- a/dbunit/src/main/resources/logback.xml +++ b/dbunit/src/main/resources/logback.xml @@ -8,6 +8,6 @@ - + \ No newline at end of file diff --git a/dbunit/src/test/java/com/baeldung/dbunit/ConnectionSettings.java b/dbunit/src/test/java/com/baeldung/dbunit/ConnectionSettings.java new file mode 100644 index 0000000000..e842022292 --- /dev/null +++ b/dbunit/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:schema.sql'"; + public static final String USER = "sa"; + public static final String PASSWORD = ""; +} diff --git a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java index e64b49263a..0b63184951 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -1,6 +1,5 @@ package com.baeldung.dbunit; -import org.dbunit.Assertion; import org.dbunit.IDatabaseTester; import org.dbunit.JdbcDatabaseTester; import org.dbunit.dataset.IDataSet; @@ -17,14 +16,14 @@ 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; public class OldSchoolDbUnitTest { - private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); - private static final String JDBC_URL = "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:schema.sql'"; - private static final String USER = "sa"; - private static final String PASSWORD = ""; private static IDatabaseTester tester = null; @@ -99,20 +98,31 @@ public class OldSchoolDbUnitTest { @Test public void testUpdate() throws Exception { - // Arrange final Connection connection = tester.getConnection().getConnection(); final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml"); - ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); - //expectedTable = DefaultColumnFilter.excludedColumnsTable(expectedTable, new String[]{"produced"}); + final ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); - // Act connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1"); - // Assert final IDataSet databaseDataSet = tester.getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("items"); - //actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); + + assertEquals(expectedTable, actualTable); + } + + @Test + public void testUpdateWithExcludedColumns() throws Exception { + final Connection connection = tester.getConnection().getConnection(); + + final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename_no_produced.xml"); + 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"); + actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); assertEquals(expectedTable, actualTable); } diff --git a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java index c322cf0ae3..bb70136de2 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java @@ -16,13 +16,13 @@ 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; public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { - private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); - private static final String JDBC_URL = "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:schema.sql'"; - private static final String USER = "sa"; - private static final String PASSWORD = ""; @Override public void setUp() throws Exception { @@ -49,60 +49,46 @@ public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { @Test public void testSelect() throws Exception { - // Arrange final Connection connection = getConnection().getConnection(); final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("USERS", new String[]{})}; final String[] prepDataFiles = {"/users.xml"}; final String[] expectedDataFiles = {"/users.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = () -> { - // invoke the method being tested here; for the sake of simplicity we use JDBC API directly in this example - final ResultSet rs = connection.createStatement().executeQuery("select * from USERS where id = 1"); + final PrepAndExpectedTestCaseSteps testSteps = + () -> connection + .createStatement() + .executeQuery("select * from USERS where id = 1"); - // either place assertions here - //assertTrue(rs.next()); - //assertEquals("Xavier", rs.getString("last_name")); - - return rs; - }; - - // Act final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - // or place assertions at the end assertThat(rs.next()).isTrue(); assertThat(rs.getString("last_name")).isEqualTo("Xavier"); } @Test public void testUpdate() throws Exception { - // Arrange final Connection connection = getConnection().getConnection(); final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("USERS", new String[]{})}; // define tables to verify - final String[] prepDataFiles = {"/users.xml"}; // define prep files - final String[] expectedDataFiles = {"/users_exp_rename.xml"}; // define expected files - final PrepAndExpectedTestCaseSteps testSteps = () -> { - // invoke the method being tested here; for the sake of simplicity we use JDBC API directly in this example - return connection.createStatement().executeUpdate("update USERS set first_name = 'new name' where id = 1"); - // after this method exits, dbUnit will: - // * verify configured tables - // * cleanup tables as configured - }; + final String[] prepDataFiles = {"/users.xml"}; + final String[] expectedDataFiles = {"/users_exp_rename.xml"}; + final PrepAndExpectedTestCaseSteps testSteps = + () -> connection + .createStatement() + .executeUpdate("update USERS set first_name = 'new name' where id = 1"); - // Act super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); } @Test public void testDelete() throws Exception { - // Arrange final Connection connection = getConnection().getConnection(); final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("USERS", new String[]{})}; final String[] prepDataFiles = {"/users.xml"}; final String[] expectedDataFiles = {"/users_exp_delete.xml"}; final PrepAndExpectedTestCaseSteps testSteps = - () -> connection.createStatement().executeUpdate("delete from USERS where id = 2"); + () -> connection + .createStatement() + .executeUpdate("delete from USERS where id = 2"); - // Act super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); } diff --git a/dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java index cfe4fd4e11..f7970754e7 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java @@ -13,11 +13,13 @@ 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; + public class SampleDbUnitTest extends DBTestCase { - private static final String JDBC_DRIVER = org.h2.Driver.class.getName(); - private static final String JDBC_URL = "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:schema.sql'"; - private static final String USER = "sa"; - private static final String PASSWORD = ""; public SampleDbUnitTest(String name) { super(name); @@ -46,29 +48,23 @@ public class SampleDbUnitTest extends DBTestCase { @Test public void testSelect() throws Exception { - // Arrange final Connection connection = getConnection().getConnection(); - // Act final ResultSet rs = connection.createStatement().executeQuery("select * from iTEMS where id = 1"); - // Assert - assertTrue(rs.next()); - assertEquals("Grey T-Shirt", rs.getString("title")); + assertThat(rs.next()).isTrue(); + assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt"); } @Test public void testDelete() throws Exception { - // Arrange final Connection connection = getConnection().getConnection(); final InputStream is = SampleDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml"); ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); - // Act connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); - // Assert final IDataSet databaseDataSet = getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("items"); @@ -77,16 +73,13 @@ public class SampleDbUnitTest extends DBTestCase { @Test public void testUpdate() throws Exception { - // Arrange final Connection connection = getConnection().getConnection(); final InputStream is = SampleDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml"); ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); - // Act connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1"); - // Assert final IDataSet databaseDataSet = getConnection().createDataSet(); ITable actualTable = databaseDataSet.getTable("items"); diff --git a/dbunit/src/test/resources/data.xml b/dbunit/src/test/resources/data.xml index e4498513e0..ac413cfd23 100644 --- a/dbunit/src/test/resources/data.xml +++ b/dbunit/src/test/resources/data.xml @@ -1,11 +1,11 @@ - + - - - - - + + + + + diff --git a/dbunit/src/test/resources/items_exp_delete.xml b/dbunit/src/test/resources/items_exp_delete.xml index 1aaeff59ca..09b78da493 100644 --- a/dbunit/src/test/resources/items_exp_delete.xml +++ b/dbunit/src/test/resources/items_exp_delete.xml @@ -1,8 +1,8 @@ - - - - + + + + diff --git a/dbunit/src/test/resources/items_exp_delete_no_produced.xml b/dbunit/src/test/resources/items_exp_delete_no_produced.xml index c9b182a1b2..dd76e8c6ce 100644 --- a/dbunit/src/test/resources/items_exp_delete_no_produced.xml +++ b/dbunit/src/test/resources/items_exp_delete_no_produced.xml @@ -1,8 +1,8 @@ - - - - + + + + diff --git a/dbunit/src/test/resources/items_exp_rename.xml b/dbunit/src/test/resources/items_exp_rename.xml index 237280e758..830d83499f 100644 --- a/dbunit/src/test/resources/items_exp_rename.xml +++ b/dbunit/src/test/resources/items_exp_rename.xml @@ -1,9 +1,9 @@ - - - - - + + + + + diff --git a/dbunit/src/test/resources/items_exp_rename_no_produced.xml b/dbunit/src/test/resources/items_exp_rename_no_produced.xml new file mode 100644 index 0000000000..991c4726a0 --- /dev/null +++ b/dbunit/src/test/resources/items_exp_rename_no_produced.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/dbunit/src/test/resources/schema.sql b/dbunit/src/test/resources/schema.sql index 9b5018985a..dc4738ca76 100644 --- a/dbunit/src/test/resources/schema.sql +++ b/dbunit/src/test/resources/schema.sql @@ -1,28 +1,28 @@ CREATE TABLE IF NOT EXISTS USERS ( - `id` int AUTO_INCREMENT NOT NULL, - `first_name` varchar(100) NOT NULL, - `last_name` varchar(100) NOT NULL, - PRIMARY KEY (`id`) + `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`) + `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 USERS (`id`) ON DELETE CASCADE, - FOREIGN KEY (`id_item`) REFERENCES ITEMS (`id`) ON DELETE CASCADE ON UPDATE CASCADE + `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 USERS (`id`) ON DELETE CASCADE, + FOREIGN KEY (`id_item`) REFERENCES ITEMS (`id`) ON DELETE CASCADE ON UPDATE CASCADE ); diff --git a/dbunit/src/test/resources/users.xml b/dbunit/src/test/resources/users.xml index cebadf2e67..d8ff78024e 100644 --- a/dbunit/src/test/resources/users.xml +++ b/dbunit/src/test/resources/users.xml @@ -1,7 +1,7 @@ - - - + + + diff --git a/dbunit/src/test/resources/users_exp_delete.xml b/dbunit/src/test/resources/users_exp_delete.xml index 8b72ceef89..c4ea6e64e5 100644 --- a/dbunit/src/test/resources/users_exp_delete.xml +++ b/dbunit/src/test/resources/users_exp_delete.xml @@ -1,6 +1,6 @@ - - + + diff --git a/dbunit/src/test/resources/users_exp_rename.xml b/dbunit/src/test/resources/users_exp_rename.xml index 9bc1254967..c187e1ebe5 100644 --- a/dbunit/src/test/resources/users_exp_rename.xml +++ b/dbunit/src/test/resources/users_exp_rename.xml @@ -1,7 +1,7 @@ - - - + + + From d5d1cc7d580b1749b9f29df644ea34cbddeee8ac Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Tue, 31 Mar 2020 12:02:24 +0200 Subject: [PATCH 07/18] [BAEL-2749] Adds DataSourceBaseDBTestCase --- .../baeldung/dbunit/DataSourceDBUnitTest.java | 46 +++++++++++++++++++ ...{SampleDbUnitTest.java => DbUnitTest.java} | 12 ++--- 2 files changed, 52 insertions(+), 6 deletions(-) create mode 100644 dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java rename dbunit/src/test/java/com/baeldung/dbunit/{SampleDbUnitTest.java => DbUnitTest.java} (85%) diff --git a/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java new file mode 100644 index 0000000000..154d93e0af --- /dev/null +++ b/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java @@ -0,0 +1,46 @@ +package com.baeldung.dbunit; + +import org.dbunit.DataSourceBasedDBTestCase; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.h2.jdbcx.JdbcDataSource; +import org.junit.Test; + +import javax.sql.DataSource; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; + +import static org.assertj.core.api.Assertions.assertThat; + +public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { + @Override + protected DataSource getDataSource() { + JdbcDataSource dataSource = new JdbcDataSource(); + dataSource.setURL( + "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:schema.sql'"); + dataSource.setUser("sa"); + dataSource.setPassword("sa"); + return dataSource; + } + + @Override + protected IDataSet getDataSet() throws Exception { + return new FlatXmlDataSetBuilder().build(getClass() + .getClassLoader() + .getResourceAsStream("data.xml")); + } + + @Test + public void testSimpleDataSet() 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"); + } +} diff --git a/dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java similarity index 85% rename from dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java rename to dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java index f7970754e7..8d6a94279a 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/SampleDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java @@ -19,9 +19,9 @@ import static com.baeldung.dbunit.ConnectionSettings.PASSWORD; import static com.baeldung.dbunit.ConnectionSettings.USER; import static org.assertj.core.api.Assertions.assertThat; -public class SampleDbUnitTest extends DBTestCase { +public class DbUnitTest extends DBTestCase { - public SampleDbUnitTest(String name) { + public DbUnitTest(String name) { super(name); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); @@ -32,7 +32,7 @@ public class SampleDbUnitTest extends DBTestCase { @Override protected IDataSet getDataSet() throws Exception { - final InputStream is = SampleDbUnitTest.class.getClassLoader().getResourceAsStream("data.xml"); + final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("data.xml"); return new FlatXmlDataSetBuilder().build(is); } @@ -53,14 +53,14 @@ public class SampleDbUnitTest extends DBTestCase { final ResultSet rs = connection.createStatement().executeQuery("select * from iTEMS where id = 1"); assertThat(rs.next()).isTrue(); - assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt"); + assertThat(rs.getString( "title")).isEqualTo("Grey T-Shirt"); } @Test public void testDelete() throws Exception { final Connection connection = getConnection().getConnection(); - final InputStream is = SampleDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml"); + final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml"); ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); @@ -75,7 +75,7 @@ public class SampleDbUnitTest extends DBTestCase { public void testUpdate() throws Exception { final Connection connection = getConnection().getConnection(); - final InputStream is = SampleDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml"); + final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml"); ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1"); From ef19d83db5f48290978f5c4e9e3c738a53e6087c Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Tue, 31 Mar 2020 12:38:39 +0200 Subject: [PATCH 08/18] [BAEL-2749] USERS table name changed to CLIENTS --- .../baeldung/dbunit/DataSourceDBUnitTest.java | 18 +++++++++++++++--- .../java/com/baeldung/dbunit/DbUnitTest.java | 1 - .../dbunit/PrepAndExpectedDbUnitTest.java | 12 ++++++------ dbunit/src/test/resources/data.xml | 2 +- dbunit/src/test/resources/schema.sql | 4 ++-- dbunit/src/test/resources/users.xml | 6 +++--- dbunit/src/test/resources/users_exp_delete.xml | 4 ++-- dbunit/src/test/resources/users_exp_rename.xml | 6 +++--- 8 files changed, 32 insertions(+), 21 deletions(-) diff --git a/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java index 154d93e0af..c8045394c4 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java @@ -1,7 +1,9 @@ package com.baeldung.dbunit; +import org.dbunit.Assertion; import org.dbunit.DataSourceBasedDBTestCase; import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ITable; import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.h2.jdbcx.JdbcDataSource; import org.junit.Test; @@ -11,16 +13,17 @@ import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; +import static com.baeldung.dbunit.ConnectionSettings.JDBC_URL; import static org.assertj.core.api.Assertions.assertThat; public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { + @Override protected DataSource getDataSource() { JdbcDataSource dataSource = new JdbcDataSource(); - dataSource.setURL( - "jdbc:h2:mem:default;DB_CLOSE_DELAY=-1;init=runscript from 'classpath:schema.sql'"); + dataSource.setURL(JDBC_URL); dataSource.setUser("sa"); - dataSource.setPassword("sa"); + dataSource.setPassword(""); return dataSource; } @@ -43,4 +46,13 @@ public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { assertThat(rs.next()).isTrue(); assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt"); } + + @Test + public void testEmptySchema() throws Exception { + IDataSet expectedDataSet = getDataSet(); + ITable expectedTable = expectedDataSet.getTable("CLIENTS"); + IDataSet databaseDataSet = getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("CLIENTS"); + Assertion.assertEquals(expectedTable, actualTable); + } } diff --git a/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java index 8d6a94279a..479ea3dd51 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java @@ -27,7 +27,6 @@ public class DbUnitTest extends DBTestCase { System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, USER); System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, PASSWORD); - // System.setProperty( PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, ""); } @Override diff --git a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java index bb70136de2..2c7e5de508 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java @@ -50,13 +50,13 @@ public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { @Test public void testSelect() throws Exception { final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("USERS", new String[]{})}; + final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; final String[] prepDataFiles = {"/users.xml"}; final String[] expectedDataFiles = {"/users.xml"}; final PrepAndExpectedTestCaseSteps testSteps = () -> connection .createStatement() - .executeQuery("select * from USERS where id = 1"); + .executeQuery("select * from CLIENTS where id = 1"); final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); @@ -67,13 +67,13 @@ public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { @Test public void testUpdate() throws Exception { final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("USERS", new String[]{})}; // define tables to verify + final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; // define tables to verify final String[] prepDataFiles = {"/users.xml"}; final String[] expectedDataFiles = {"/users_exp_rename.xml"}; final PrepAndExpectedTestCaseSteps testSteps = () -> connection .createStatement() - .executeUpdate("update USERS set first_name = 'new name' where id = 1"); + .executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); } @@ -81,13 +81,13 @@ public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { @Test public void testDelete() throws Exception { final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("USERS", new String[]{})}; + final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; final String[] prepDataFiles = {"/users.xml"}; final String[] expectedDataFiles = {"/users_exp_delete.xml"}; final PrepAndExpectedTestCaseSteps testSteps = () -> connection .createStatement() - .executeUpdate("delete from USERS where id = 2"); + .executeUpdate("delete from CLIENTS where id = 2"); super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); } diff --git a/dbunit/src/test/resources/data.xml b/dbunit/src/test/resources/data.xml index ac413cfd23..4230073fc6 100644 --- a/dbunit/src/test/resources/data.xml +++ b/dbunit/src/test/resources/data.xml @@ -1,7 +1,7 @@ - + diff --git a/dbunit/src/test/resources/schema.sql b/dbunit/src/test/resources/schema.sql index dc4738ca76..c2a8d2d630 100644 --- a/dbunit/src/test/resources/schema.sql +++ b/dbunit/src/test/resources/schema.sql @@ -1,4 +1,4 @@ -CREATE TABLE IF NOT EXISTS USERS +CREATE TABLE IF NOT EXISTS CLIENTS ( `id` int AUTO_INCREMENT NOT NULL, `first_name` varchar(100) NOT NULL, @@ -23,6 +23,6 @@ CREATE TABLE IF NOT EXISTS PURCHASES `total_price` float NOT NULL, `quantity` int(11) NOT NULL, PRIMARY KEY (`id`), - FOREIGN KEY (`id_user`) REFERENCES USERS (`id`) ON DELETE CASCADE, + 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/dbunit/src/test/resources/users.xml b/dbunit/src/test/resources/users.xml index d8ff78024e..9c14435362 100644 --- a/dbunit/src/test/resources/users.xml +++ b/dbunit/src/test/resources/users.xml @@ -1,7 +1,7 @@ - - - + + + diff --git a/dbunit/src/test/resources/users_exp_delete.xml b/dbunit/src/test/resources/users_exp_delete.xml index c4ea6e64e5..3780c00c4c 100644 --- a/dbunit/src/test/resources/users_exp_delete.xml +++ b/dbunit/src/test/resources/users_exp_delete.xml @@ -1,6 +1,6 @@ - - + + diff --git a/dbunit/src/test/resources/users_exp_rename.xml b/dbunit/src/test/resources/users_exp_rename.xml index c187e1ebe5..a576cc9e80 100644 --- a/dbunit/src/test/resources/users_exp_rename.xml +++ b/dbunit/src/test/resources/users_exp_rename.xml @@ -1,7 +1,7 @@ - - - + + + From 07947ce4d62daae7bc147fe7b4ac106b070b4d0e Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Tue, 31 Mar 2020 13:31:11 +0200 Subject: [PATCH 09/18] [BAEL-2749] Insertion test with ignore cols --- .../baeldung/dbunit/DataSourceDBUnitTest.java | 18 ++++++++++++++++++ dbunit/src/test/resources/expected-user.xml | 5 +++++ 2 files changed, 23 insertions(+) create mode 100644 dbunit/src/test/resources/expected-user.xml diff --git a/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java index c8045394c4..d30305ecf2 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java @@ -55,4 +55,22 @@ public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { ITable actualTable = databaseDataSet.getTable("CLIENTS"); Assertion.assertEquals(expectedTable, actualTable); } + + + @Test + public void testAssertByQuery() throws Exception { + IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(getClass() + .getClassLoader() + .getResourceAsStream("expected-user.xml")); + ITable expectedTable = expectedDataSet.getTable("CLIENTS"); + Connection conn = getDataSource().getConnection(); + conn.createStatement() + .executeUpdate( + "INSERT INTO CLIENTS (first_name, last_name) VALUES ('John', 'Jansen')"); + ITable actualData = getConnection() + .createQueryTable( + "result_name", + "SELECT * FROM CLIENTS WHERE id='2'"); + Assertion.assertEqualsIgnoreCols(expectedTable, actualData, new String[]{"id"}); + } } diff --git a/dbunit/src/test/resources/expected-user.xml b/dbunit/src/test/resources/expected-user.xml new file mode 100644 index 0000000000..379db13601 --- /dev/null +++ b/dbunit/src/test/resources/expected-user.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file From 906d72859f67d1d9d9016d6b689805286d4c2675 Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Tue, 31 Mar 2020 17:51:04 +0200 Subject: [PATCH 10/18] [BAEL-2749] Test Code Completion --- .../baeldung/dbunit/DataSourceDBUnitTest.java | 49 ++++++++++++++++++- .../java/com/baeldung/dbunit/DbUnitTest.java | 2 +- .../baeldung/dbunit/OldSchoolDbUnitTest.java | 19 ++++++- dbunit/src/test/resources/data.xml | 2 - .../expected-ignoring-registered_at.xml | 9 ++++ .../resources/expected-multiple-failures.xml | 9 ++++ dbunit/src/test/resources/expected-user.xml | 3 +- dbunit/src/test/resources/items.xml | 1 - .../src/test/resources/items_exp_delete.xml | 1 - .../items_exp_delete_no_produced.xml | 1 - .../src/test/resources/items_exp_rename.xml | 1 - .../items_exp_rename_no_produced.xml | 1 - dbunit/src/test/resources/users.xml | 1 - .../src/test/resources/users_exp_delete.xml | 1 - .../src/test/resources/users_exp_rename.xml | 1 - 15 files changed, 85 insertions(+), 16 deletions(-) create mode 100644 dbunit/src/test/resources/expected-ignoring-registered_at.xml create mode 100644 dbunit/src/test/resources/expected-multiple-failures.xml diff --git a/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java index d30305ecf2..7482f38535 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java @@ -2,10 +2,15 @@ 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 javax.sql.DataSource; @@ -14,6 +19,7 @@ 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; public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { @@ -34,6 +40,27 @@ public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { .getResourceAsStream("data.xml")); } + @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 testSimpleDataSet() throws SQLException { final Connection connection = getDataSource() @@ -56,7 +83,6 @@ public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { Assertion.assertEquals(expectedTable, actualTable); } - @Test public void testAssertByQuery() throws Exception { IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(getClass() @@ -70,7 +96,26 @@ public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { ITable actualData = getConnection() .createQueryTable( "result_name", - "SELECT * FROM CLIENTS WHERE id='2'"); + "SELECT * FROM CLIENTS WHERE last_name='Jansen'"); Assertion.assertEqualsIgnoreCols(expectedTable, actualData, new String[]{"id"}); } + + @Test(expected = AssertionError.class) + public void testMultipleFailures() throws Exception { + IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(getClass().getClassLoader().getResourceAsStream("expected-multiple-failures.xml")); + ITable expectedTable = expectedDataSet.getTable("ITEMS"); + Connection conn = getDataSource().getConnection(); + conn.createStatement().executeUpdate("INSERT INTO ITEMS (title, price) VALUES ('Battery', '1000000')"); + ITable actualData = getConnection().createDataSet().getTable("ITEMS"); + DiffCollectingFailureHandler collectingHandler = new DiffCollectingFailureHandler(); + Assertion.assertEquals(expectedTable, actualData, collectingHandler); + if (!collectingHandler.getDiffList().isEmpty()) { + String message = (String) collectingHandler.getDiffList().stream().map(d -> formatDifference((Difference) d)).collect(joining("\n")); +// throw new AssertionError(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/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java index 479ea3dd51..1dee5afb28 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java @@ -42,7 +42,7 @@ public class DbUnitTest extends DBTestCase { @Override protected DatabaseOperation getTearDownOperation() { - return DatabaseOperation.NONE; + return DatabaseOperation.DELETE_ALL; } @Test diff --git a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java index 0b63184951..3b46feb304 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -1,5 +1,6 @@ package com.baeldung.dbunit; +import org.dbunit.Assertion; import org.dbunit.IDatabaseTester; import org.dbunit.JdbcDatabaseTester; import org.dbunit.dataset.IDataSet; @@ -36,7 +37,7 @@ public class OldSchoolDbUnitTest { final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); tester.setDataSet(initDataSet()); tester.setSetUpOperation(DatabaseOperation.REFRESH); - tester.setTearDownOperation(DatabaseOperation.NONE); + tester.setTearDownOperation(DatabaseOperation.DELETE_ALL); return tester; } @@ -65,6 +66,22 @@ public class OldSchoolDbUnitTest { assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt"); } + @Test + public void testIgnoringProduced() throws Exception { + final Connection connection = tester.getConnection().getConnection(); + final String[] excludedColumns = {"id", "produced"}; + final IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(getClass().getClassLoader() + .getResourceAsStream("expected-ignoring-registered_at.xml")); + 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 testDelete() throws Exception { final Connection connection = tester.getConnection().getConnection(); diff --git a/dbunit/src/test/resources/data.xml b/dbunit/src/test/resources/data.xml index 4230073fc6..290cc36890 100644 --- a/dbunit/src/test/resources/data.xml +++ b/dbunit/src/test/resources/data.xml @@ -1,8 +1,6 @@ - - diff --git a/dbunit/src/test/resources/expected-ignoring-registered_at.xml b/dbunit/src/test/resources/expected-ignoring-registered_at.xml new file mode 100644 index 0000000000..ea57b6a961 --- /dev/null +++ b/dbunit/src/test/resources/expected-ignoring-registered_at.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/dbunit/src/test/resources/expected-multiple-failures.xml b/dbunit/src/test/resources/expected-multiple-failures.xml new file mode 100644 index 0000000000..ea57b6a961 --- /dev/null +++ b/dbunit/src/test/resources/expected-multiple-failures.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/dbunit/src/test/resources/expected-user.xml b/dbunit/src/test/resources/expected-user.xml index 379db13601..631dd84210 100644 --- a/dbunit/src/test/resources/expected-user.xml +++ b/dbunit/src/test/resources/expected-user.xml @@ -1,5 +1,4 @@ - - + \ No newline at end of file diff --git a/dbunit/src/test/resources/items.xml b/dbunit/src/test/resources/items.xml index 04a975d7ee..d13e93bbe0 100644 --- a/dbunit/src/test/resources/items.xml +++ b/dbunit/src/test/resources/items.xml @@ -1,5 +1,4 @@ - diff --git a/dbunit/src/test/resources/items_exp_delete.xml b/dbunit/src/test/resources/items_exp_delete.xml index 09b78da493..a6fa2b33e8 100644 --- a/dbunit/src/test/resources/items_exp_delete.xml +++ b/dbunit/src/test/resources/items_exp_delete.xml @@ -1,5 +1,4 @@ - diff --git a/dbunit/src/test/resources/items_exp_delete_no_produced.xml b/dbunit/src/test/resources/items_exp_delete_no_produced.xml index dd76e8c6ce..3e7f854f5f 100644 --- a/dbunit/src/test/resources/items_exp_delete_no_produced.xml +++ b/dbunit/src/test/resources/items_exp_delete_no_produced.xml @@ -1,5 +1,4 @@ - diff --git a/dbunit/src/test/resources/items_exp_rename.xml b/dbunit/src/test/resources/items_exp_rename.xml index 830d83499f..32f1d57cf6 100644 --- a/dbunit/src/test/resources/items_exp_rename.xml +++ b/dbunit/src/test/resources/items_exp_rename.xml @@ -1,5 +1,4 @@ - diff --git a/dbunit/src/test/resources/items_exp_rename_no_produced.xml b/dbunit/src/test/resources/items_exp_rename_no_produced.xml index 991c4726a0..b42d3804fa 100644 --- a/dbunit/src/test/resources/items_exp_rename_no_produced.xml +++ b/dbunit/src/test/resources/items_exp_rename_no_produced.xml @@ -1,5 +1,4 @@ - diff --git a/dbunit/src/test/resources/users.xml b/dbunit/src/test/resources/users.xml index 9c14435362..9ac3909bc5 100644 --- a/dbunit/src/test/resources/users.xml +++ b/dbunit/src/test/resources/users.xml @@ -1,5 +1,4 @@ - diff --git a/dbunit/src/test/resources/users_exp_delete.xml b/dbunit/src/test/resources/users_exp_delete.xml index 3780c00c4c..2fe97ae6f6 100644 --- a/dbunit/src/test/resources/users_exp_delete.xml +++ b/dbunit/src/test/resources/users_exp_delete.xml @@ -1,5 +1,4 @@ - diff --git a/dbunit/src/test/resources/users_exp_rename.xml b/dbunit/src/test/resources/users_exp_rename.xml index a576cc9e80..95682118bb 100644 --- a/dbunit/src/test/resources/users_exp_rename.xml +++ b/dbunit/src/test/resources/users_exp_rename.xml @@ -1,5 +1,4 @@ - From 0b1c5e01a5108350a493a06e07d2779a0b9e3f60 Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Tue, 31 Mar 2020 20:18:11 +0200 Subject: [PATCH 11/18] [BAEL-2749] Improves code and makes a copy in libraries-testing --- dbunit/README.md | 2 - dbunit/docs/db_schema.png | Bin 17099 -> 0 bytes .../baeldung/dbunit/DataSourceDBUnitTest.java | 75 ++++---- .../java/com/baeldung/dbunit/DbUnitTest.java | 33 ++-- .../baeldung/dbunit/OldSchoolDbUnitTest.java | 85 +++++---- .../dbunit/PrepAndExpectedDbUnitTest.java | 23 +-- libraries-testing/pom.xml | 37 ++++ .../baeldung/dbunit/ConnectionSettings.java | 8 + .../baeldung/dbunit/DataSourceDBUnitTest.java | 136 +++++++++++++++ .../java/com/baeldung/dbunit/DbUnitTest.java | 90 ++++++++++ .../baeldung/dbunit/OldSchoolDbUnitTest.java | 161 ++++++++++++++++++ .../dbunit/PrepAndExpectedDbUnitTest.java | 89 ++++++++++ .../src/test/resources/dbunit/data.xml | 9 + .../expected-ignoring-registered_at.xml | 9 + .../dbunit/expected-multiple-failures.xml | 9 + .../test/resources/dbunit/expected-user.xml | 4 + .../src/test/resources/dbunit/items.xml | 8 + .../resources/dbunit/items_exp_delete.xml | 7 + .../dbunit/items_exp_delete_no_produced.xml | 7 + .../resources/dbunit/items_exp_rename.xml | 8 + .../dbunit/items_exp_rename_no_produced.xml | 8 + .../src/test/resources/dbunit/schema.sql | 28 +++ .../src/test/resources/dbunit/users.xml | 6 + .../resources/dbunit/users_exp_delete.xml | 5 + .../resources/dbunit/users_exp_rename.xml | 6 + 25 files changed, 758 insertions(+), 95 deletions(-) delete mode 100644 dbunit/docs/db_schema.png create mode 100644 libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java create mode 100644 libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java create mode 100644 libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java create mode 100644 libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java create mode 100644 libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java create mode 100644 libraries-testing/src/test/resources/dbunit/data.xml create mode 100644 libraries-testing/src/test/resources/dbunit/expected-ignoring-registered_at.xml create mode 100644 libraries-testing/src/test/resources/dbunit/expected-multiple-failures.xml create mode 100644 libraries-testing/src/test/resources/dbunit/expected-user.xml create mode 100644 libraries-testing/src/test/resources/dbunit/items.xml create mode 100644 libraries-testing/src/test/resources/dbunit/items_exp_delete.xml create mode 100644 libraries-testing/src/test/resources/dbunit/items_exp_delete_no_produced.xml create mode 100644 libraries-testing/src/test/resources/dbunit/items_exp_rename.xml create mode 100644 libraries-testing/src/test/resources/dbunit/items_exp_rename_no_produced.xml create mode 100644 libraries-testing/src/test/resources/dbunit/schema.sql create mode 100644 libraries-testing/src/test/resources/dbunit/users.xml create mode 100644 libraries-testing/src/test/resources/dbunit/users_exp_delete.xml create mode 100644 libraries-testing/src/test/resources/dbunit/users_exp_rename.xml diff --git a/dbunit/README.md b/dbunit/README.md index 383bd6fb7e..333cac9439 100644 --- a/dbunit/README.md +++ b/dbunit/README.md @@ -1,6 +1,4 @@ ### Database schema -![db schema](docs/db_schema.png) - ### Relevant Articles: - [Introduction To DBUnit](https://www.baeldung.com/dbunit) diff --git a/dbunit/docs/db_schema.png b/dbunit/docs/db_schema.png deleted file mode 100644 index d9185bacd2c624c8e05aea87bf542cfdfd7f1604..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17099 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 formatDifference((Difference) d)).collect(joining("\n")); -// throw new AssertionError(message); + try (final InputStream is = getClass() + .getClassLoader() + .getResourceAsStream("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); + } } } diff --git a/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java index 1dee5afb28..d24410bedf 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java @@ -31,8 +31,9 @@ public class DbUnitTest extends DBTestCase { @Override protected IDataSet getDataSet() throws Exception { - final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("data.xml"); - return new FlatXmlDataSetBuilder().build(is); + try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("data.xml")) { + return new FlatXmlDataSetBuilder().build(is); + } } @Override @@ -52,37 +53,39 @@ public class DbUnitTest extends DBTestCase { final ResultSet rs = connection.createStatement().executeQuery("select * from iTEMS where id = 1"); assertThat(rs.next()).isTrue(); - assertThat(rs.getString( "title")).isEqualTo("Grey T-Shirt"); + assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt"); } @Test public void testDelete() throws Exception { final Connection connection = getConnection().getConnection(); - final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml"); - ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); + try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml")) { + ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); - connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); + connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); - final IDataSet databaseDataSet = getConnection().createDataSet(); - ITable actualTable = databaseDataSet.getTable("items"); + final IDataSet databaseDataSet = getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); - Assertion.assertEquals(expectedTable, actualTable); + Assertion.assertEquals(expectedTable, actualTable); + } } @Test public void testUpdate() throws Exception { final Connection connection = getConnection().getConnection(); - final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml"); - ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); + try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml")) { + ITable expectedTable = (new FlatXmlDataSetBuilder().build(is)).getTable("items"); - connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1"); + connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1"); - final IDataSet databaseDataSet = getConnection().createDataSet(); - ITable actualTable = databaseDataSet.getTable("items"); + final IDataSet databaseDataSet = getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); - Assertion.assertEquals(expectedTable, actualTable); + Assertion.assertEquals(expectedTable, actualTable); + } } } diff --git a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java index 3b46feb304..41d7ffd8d4 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -42,8 +42,9 @@ public class OldSchoolDbUnitTest { } private static IDataSet initDataSet() throws Exception { - final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("data.xml"); - return new FlatXmlDataSetBuilder().build(is); + try (final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("data.xml")) { + return new FlatXmlDataSetBuilder().build(is); + } } @Before @@ -70,78 +71,92 @@ public class OldSchoolDbUnitTest { public void testIgnoringProduced() throws Exception { final Connection connection = tester.getConnection().getConnection(); final String[] excludedColumns = {"id", "produced"}; - final IDataSet expectedDataSet = new FlatXmlDataSetBuilder().build(getClass().getClassLoader() - .getResourceAsStream("expected-ignoring-registered_at.xml")); - final ITable expectedTable = DefaultColumnFilter.excludedColumnsTable(expectedDataSet.getTable("ITEMS"), excludedColumns); + try (final InputStream is = getClass().getClassLoader() + .getResourceAsStream("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())"); + 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); + final IDataSet databaseDataSet = tester.getConnection().createDataSet(); + final ITable actualTable = DefaultColumnFilter.excludedColumnsTable(databaseDataSet.getTable("ITEMS"), excludedColumns); - Assertion.assertEquals(expectedTable, actualTable); + Assertion.assertEquals(expectedTable, actualTable); + } } @Test public void testDelete() throws Exception { final Connection connection = tester.getConnection().getConnection(); - final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete.xml"); - ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); + try (final InputStream is = + OldSchoolDbUnitTest.class.getClassLoader() + .getResourceAsStream("items_exp_delete.xml");) { + ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); - connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); + connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); - final IDataSet databaseDataSet = tester.getConnection().createDataSet(); - ITable actualTable = databaseDataSet.getTable("items"); + final IDataSet databaseDataSet = tester.getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); - assertEquals(expectedTable, actualTable); + assertEquals(expectedTable, actualTable); + } } @Test public void testDeleteWithExcludedColumns() throws Exception { final Connection connection = tester.getConnection().getConnection(); - final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_delete_no_produced.xml"); - ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); + try (final InputStream is = + OldSchoolDbUnitTest.class.getClassLoader() + .getResourceAsStream("items_exp_delete_no_produced.xml")) { + final ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); - connection.createStatement().executeUpdate("delete from ITEMS where id = 2"); + 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"}); + final IDataSet databaseDataSet = tester.getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); + actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); - assertEquals(expectedTable, actualTable); + assertEquals(expectedTable, actualTable); + } } @Test public void testUpdate() throws Exception { final Connection connection = tester.getConnection().getConnection(); - final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename.xml"); - final ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); + try (final InputStream is = + OldSchoolDbUnitTest.class.getClassLoader() + .getResourceAsStream("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"); + connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1"); - final IDataSet databaseDataSet = tester.getConnection().createDataSet(); - ITable actualTable = databaseDataSet.getTable("items"); + final IDataSet databaseDataSet = tester.getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); - assertEquals(expectedTable, actualTable); + assertEquals(expectedTable, actualTable); + } } @Test public void testUpdateWithExcludedColumns() throws Exception { final Connection connection = tester.getConnection().getConnection(); - final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("items_exp_rename_no_produced.xml"); - ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); + try (final InputStream is = + OldSchoolDbUnitTest.class.getClassLoader() + .getResourceAsStream("items_exp_rename_no_produced.xml")) { + ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); - connection.createStatement().executeUpdate("update ITEMS set title='new name' where id = 1"); + 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"}); + final IDataSet databaseDataSet = tester.getConnection().createDataSet(); + ITable actualTable = databaseDataSet.getTable("items"); + actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); - assertEquals(expectedTable, actualTable); + assertEquals(expectedTable, actualTable); + } } } diff --git a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java index 2c7e5de508..b4e23f56ff 100644 --- a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java +++ b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java @@ -39,8 +39,9 @@ public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { } private IDataSet initDataSet() throws Exception { - final InputStream is = getClass().getClassLoader().getResourceAsStream("data.xml"); - return new FlatXmlDataSetBuilder().build(is); + try (final InputStream is = getClass().getClassLoader().getResourceAsStream("data.xml")) { + return new FlatXmlDataSetBuilder().build(is); + } } private DataFileLoader initDataFileLoader() { @@ -53,10 +54,8 @@ public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; final String[] prepDataFiles = {"/users.xml"}; final String[] expectedDataFiles = {"/users.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = - () -> connection - .createStatement() - .executeQuery("select * from CLIENTS where id = 1"); + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() + .executeQuery("select * from CLIENTS where id = 1"); final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); @@ -70,10 +69,8 @@ public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; // define tables to verify final String[] prepDataFiles = {"/users.xml"}; final String[] expectedDataFiles = {"/users_exp_rename.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = - () -> connection - .createStatement() - .executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() + .executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); } @@ -84,10 +81,8 @@ public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; final String[] prepDataFiles = {"/users.xml"}; final String[] expectedDataFiles = {"/users_exp_delete.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = - () -> connection - .createStatement() - .executeUpdate("delete from CLIENTS where id = 2"); + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() + .executeUpdate("delete from CLIENTS where id = 2"); super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); } diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml index 3ffbb291a0..c4d2786441 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.6.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..662ed44fb6 --- /dev/null +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java @@ -0,0 +1,136 @@ +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 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; + +public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { + + private static Logger logger = LoggerFactory.getLogger(DataSourceDBUnitTest.class); + + @Override + protected javax.sql.DataSource getDataSource() { + JdbcDataSource dataSource = new JdbcDataSource(); + dataSource.setURL(JDBC_URL); + dataSource.setUser("sa"); + dataSource.setPassword(""); + return dataSource; + } + + @Override + protected IDataSet getDataSet() throws Exception { + try (java.io.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 testSimpleDataSet() 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 testEmptySchema() 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 testAssertByQuery() throws Exception { + try (final java.io.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'"); + + Assertion.assertEqualsIgnoreCols(expectedTable, actualData, new String[]{"id"}); + } + } + + @Test + public void testMultipleFailures() throws Exception { + try (final java.io.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/DbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java new file mode 100644 index 0000000000..3ed77b2c25 --- /dev/null +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java @@ -0,0 +1,90 @@ +package com.baeldung.dbunit; + +import org.dbunit.Assertion; +import org.dbunit.DBTestCase; +import org.dbunit.PropertiesBasedJdbcDatabaseTester; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.ITable; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.dbunit.operation.DatabaseOperation; +import org.junit.Test; + +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; + +public class DbUnitTest extends DBTestCase { + + public DbUnitTest(String name) { + super(name); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, USER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, PASSWORD); + } + + @Override + protected IDataSet getDataSet() throws Exception { + try (final java.io.InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) { + return new FlatXmlDataSetBuilder().build(is); + } + } + + @Override + protected DatabaseOperation getSetUpOperation() { + return DatabaseOperation.REFRESH; + } + + @Override + protected DatabaseOperation getTearDownOperation() { + return DatabaseOperation.DELETE_ALL; + } + + @Test + public void testSelect() throws Exception { + final Connection connection = 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 testDelete() throws Exception { + final Connection connection = getConnection().getConnection(); + + try (final java.io.InputStream is = DbUnitTest.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 testUpdate() throws Exception { + final Connection connection = getConnection().getConnection(); + + try (final java.io.InputStream is = DbUnitTest.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); + } + } + +} 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..aa6d9143bb --- /dev/null +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -0,0 +1,161 @@ +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 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; + +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 java.io.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 testSelect() 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 testIgnoringProduced() throws Exception { + final Connection connection = tester.getConnection().getConnection(); + final String[] excludedColumns = {"id", "produced"}; + try (final java.io.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 testDelete() throws Exception { + final Connection connection = tester.getConnection().getConnection(); + + try (final java.io.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 testDeleteWithExcludedColumns() throws Exception { + final Connection connection = tester.getConnection().getConnection(); + + try (final java.io.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 testUpdate() throws Exception { + final Connection connection = tester.getConnection().getConnection(); + + try (final java.io.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 testUpdateWithExcludedColumns() throws Exception { + final Connection connection = tester.getConnection().getConnection(); + + try (final java.io.InputStream is = + OldSchoolDbUnitTest.class.getClassLoader() + .getResourceAsStream("dbunit/items_exp_rename_no_produced.xml")) { + 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"); + actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); + + assertEquals(expectedTable, actualTable); + } + } + +} diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java new file mode 100644 index 0000000000..7e77cd8fc3 --- /dev/null +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java @@ -0,0 +1,89 @@ +package com.baeldung.dbunit; + +import org.dbunit.DefaultPrepAndExpectedTestCase; +import org.dbunit.IDatabaseTester; +import org.dbunit.JdbcDatabaseTester; +import org.dbunit.PrepAndExpectedTestCaseSteps; +import org.dbunit.VerifyTableDefinition; +import org.dbunit.dataset.IDataSet; +import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; +import org.dbunit.operation.DatabaseOperation; +import org.dbunit.util.fileloader.DataFileLoader; +import org.dbunit.util.fileloader.FlatXmlDataFileLoader; +import org.junit.Test; + +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; + +public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { + + @Override + public void setUp() throws Exception { + setDatabaseTester(initDatabaseTester()); + setDataFileLoader(initDataFileLoader()); + super.setUp(); + } + + private IDatabaseTester initDatabaseTester() throws Exception { + final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); + tester.setDataSet(initDataSet()); + tester.setSetUpOperation(DatabaseOperation.REFRESH); + return tester; + } + + private IDataSet initDataSet() throws Exception { + try (final java.io.InputStream is = getClass().getClassLoader().getResourceAsStream("dbunit/data.xml")) { + return new FlatXmlDataSetBuilder().build(is); + } + } + + private DataFileLoader initDataFileLoader() { + return new FlatXmlDataFileLoader(); + } + + @Test + public void testSelect() throws Exception { + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; + final String[] prepDataFiles = {"/dbunit/users.xml"}; + final String[] expectedDataFiles = {"/dbunit/users.xml"}; + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() + .executeQuery("select * from CLIENTS where id = 1"); + + final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + + assertThat(rs.next()).isTrue(); + assertThat(rs.getString("last_name")).isEqualTo("Xavier"); + } + + @Test + public void testUpdate() throws Exception { + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; // define tables to verify + final String[] prepDataFiles = {"/dbunit/users.xml"}; + final String[] expectedDataFiles = {"/dbunit/users_exp_rename.xml"}; + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() + .executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); + + super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + } + + @Test + public void testDelete() throws Exception { + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; + final String[] prepDataFiles = {"/dbunit/users.xml"}; + final String[] expectedDataFiles = {"/dbunit/users_exp_delete.xml"}; + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() + .executeUpdate("delete from CLIENTS where id = 2"); + + super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + } + +} 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..290cc36890 --- /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..b42d3804fa --- /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..9ac3909bc5 --- /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..2fe97ae6f6 --- /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..95682118bb --- /dev/null +++ b/libraries-testing/src/test/resources/dbunit/users_exp_rename.xml @@ -0,0 +1,6 @@ + + + + + + From ee185d85b57e3b5036cec9aa3d5b13c08dc94ada Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Tue, 31 Mar 2020 20:19:11 +0200 Subject: [PATCH 12/18] [BAEL-2749] Removes dbunit module --- dbunit/README.md | 4 - dbunit/pom.xml | 62 ------- .../main/java/com/baeldung/dbunit/.gitkeep | 0 dbunit/src/main/resources/logback.xml | 13 -- .../baeldung/dbunit/ConnectionSettings.java | 8 - .../baeldung/dbunit/DataSourceDBUnitTest.java | 138 --------------- .../java/com/baeldung/dbunit/DbUnitTest.java | 91 ---------- .../baeldung/dbunit/OldSchoolDbUnitTest.java | 162 ------------------ .../dbunit/PrepAndExpectedDbUnitTest.java | 90 ---------- dbunit/src/test/resources/data.xml | 9 - .../expected-ignoring-registered_at.xml | 9 - .../resources/expected-multiple-failures.xml | 9 - dbunit/src/test/resources/expected-user.xml | 4 - dbunit/src/test/resources/items.xml | 8 - .../src/test/resources/items_exp_delete.xml | 7 - .../items_exp_delete_no_produced.xml | 7 - .../src/test/resources/items_exp_rename.xml | 8 - .../items_exp_rename_no_produced.xml | 8 - dbunit/src/test/resources/schema.sql | 28 --- dbunit/src/test/resources/users.xml | 6 - .../src/test/resources/users_exp_delete.xml | 5 - .../src/test/resources/users_exp_rename.xml | 6 - 22 files changed, 682 deletions(-) delete mode 100644 dbunit/README.md delete mode 100644 dbunit/pom.xml delete mode 100644 dbunit/src/main/java/com/baeldung/dbunit/.gitkeep delete mode 100644 dbunit/src/main/resources/logback.xml delete mode 100644 dbunit/src/test/java/com/baeldung/dbunit/ConnectionSettings.java delete mode 100644 dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java delete mode 100644 dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java delete mode 100644 dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java delete mode 100644 dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java delete mode 100644 dbunit/src/test/resources/data.xml delete mode 100644 dbunit/src/test/resources/expected-ignoring-registered_at.xml delete mode 100644 dbunit/src/test/resources/expected-multiple-failures.xml delete mode 100644 dbunit/src/test/resources/expected-user.xml delete mode 100644 dbunit/src/test/resources/items.xml delete mode 100644 dbunit/src/test/resources/items_exp_delete.xml delete mode 100644 dbunit/src/test/resources/items_exp_delete_no_produced.xml delete mode 100644 dbunit/src/test/resources/items_exp_rename.xml delete mode 100644 dbunit/src/test/resources/items_exp_rename_no_produced.xml delete mode 100644 dbunit/src/test/resources/schema.sql delete mode 100644 dbunit/src/test/resources/users.xml delete mode 100644 dbunit/src/test/resources/users_exp_delete.xml delete mode 100644 dbunit/src/test/resources/users_exp_rename.xml diff --git a/dbunit/README.md b/dbunit/README.md deleted file mode 100644 index 333cac9439..0000000000 --- a/dbunit/README.md +++ /dev/null @@ -1,4 +0,0 @@ -### Database schema - -### Relevant Articles: -- [Introduction To DBUnit](https://www.baeldung.com/dbunit) diff --git a/dbunit/pom.xml b/dbunit/pom.xml deleted file mode 100644 index 7ca53cd3be..0000000000 --- a/dbunit/pom.xml +++ /dev/null @@ -1,62 +0,0 @@ - - 4.0.0 - dbunit - 1.0 - - 1.4.200 - - 1.8 - 1.8 - 3.8.1 - - 3.14.0 - 2.6.0 - - - dbunit - - - com.baeldung - parent-modules - 1.0.0-SNAPSHOT - - - - - org.dbunit - dbunit - ${dbunit.version} - test - - - - com.h2database - h2 - ${h2.version} - test - - - - org.assertj - assertj-core - ${assertj-core.version} - test - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven-compiler-plugin.version} - - ${maven-compiler-plugin.source} - ${maven-compiler-plugin.target} - - - - - - diff --git a/dbunit/src/main/java/com/baeldung/dbunit/.gitkeep b/dbunit/src/main/java/com/baeldung/dbunit/.gitkeep deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/dbunit/src/main/resources/logback.xml b/dbunit/src/main/resources/logback.xml deleted file mode 100644 index 26beb6d5b4..0000000000 --- a/dbunit/src/main/resources/logback.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n - - - - - - - - \ No newline at end of file diff --git a/dbunit/src/test/java/com/baeldung/dbunit/ConnectionSettings.java b/dbunit/src/test/java/com/baeldung/dbunit/ConnectionSettings.java deleted file mode 100644 index e842022292..0000000000 --- a/dbunit/src/test/java/com/baeldung/dbunit/ConnectionSettings.java +++ /dev/null @@ -1,8 +0,0 @@ -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:schema.sql'"; - public static final String USER = "sa"; - public static final String PASSWORD = ""; -} diff --git a/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java deleted file mode 100644 index 606f1a90a3..0000000000 --- a/dbunit/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java +++ /dev/null @@ -1,138 +0,0 @@ -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 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; - -public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { - - private static 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("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 testSimpleDataSet() 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 testEmptySchema() 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 testAssertByQuery() throws Exception { - try (final InputStream is = getClass() - .getClassLoader() - .getResourceAsStream("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'"); - - Assertion.assertEqualsIgnoreCols(expectedTable, actualData, new String[]{"id"}); - } - } - - @Test - public void testMultipleFailures() throws Exception { - try (final InputStream is = getClass() - .getClassLoader() - .getResourceAsStream("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/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java deleted file mode 100644 index d24410bedf..0000000000 --- a/dbunit/src/test/java/com/baeldung/dbunit/DbUnitTest.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.baeldung.dbunit; - -import org.dbunit.Assertion; -import org.dbunit.DBTestCase; -import org.dbunit.PropertiesBasedJdbcDatabaseTester; -import org.dbunit.dataset.IDataSet; -import org.dbunit.dataset.ITable; -import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; -import org.dbunit.operation.DatabaseOperation; -import org.junit.Test; - -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; - -public class DbUnitTest extends DBTestCase { - - public DbUnitTest(String name) { - super(name); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, USER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, PASSWORD); - } - - @Override - protected IDataSet getDataSet() throws Exception { - try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("data.xml")) { - return new FlatXmlDataSetBuilder().build(is); - } - } - - @Override - protected DatabaseOperation getSetUpOperation() { - return DatabaseOperation.REFRESH; - } - - @Override - protected DatabaseOperation getTearDownOperation() { - return DatabaseOperation.DELETE_ALL; - } - - @Test - public void testSelect() throws Exception { - final Connection connection = 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 testDelete() throws Exception { - final Connection connection = getConnection().getConnection(); - - try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("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 testUpdate() throws Exception { - final Connection connection = getConnection().getConnection(); - - try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("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); - } - } - -} diff --git a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java deleted file mode 100644 index 41d7ffd8d4..0000000000 --- a/dbunit/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java +++ /dev/null @@ -1,162 +0,0 @@ -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 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; - -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("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 testSelect() 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 testIgnoringProduced() throws Exception { - final Connection connection = tester.getConnection().getConnection(); - final String[] excludedColumns = {"id", "produced"}; - try (final InputStream is = getClass().getClassLoader() - .getResourceAsStream("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 testDelete() throws Exception { - final Connection connection = tester.getConnection().getConnection(); - - try (final InputStream is = - OldSchoolDbUnitTest.class.getClassLoader() - .getResourceAsStream("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 testDeleteWithExcludedColumns() throws Exception { - final Connection connection = tester.getConnection().getConnection(); - - try (final InputStream is = - OldSchoolDbUnitTest.class.getClassLoader() - .getResourceAsStream("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 testUpdate() throws Exception { - final Connection connection = tester.getConnection().getConnection(); - - try (final InputStream is = - OldSchoolDbUnitTest.class.getClassLoader() - .getResourceAsStream("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 testUpdateWithExcludedColumns() throws Exception { - final Connection connection = tester.getConnection().getConnection(); - - try (final InputStream is = - OldSchoolDbUnitTest.class.getClassLoader() - .getResourceAsStream("items_exp_rename_no_produced.xml")) { - 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"); - actualTable = DefaultColumnFilter.excludedColumnsTable(actualTable, new String[]{"produced"}); - - assertEquals(expectedTable, actualTable); - } - } - -} diff --git a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java b/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java deleted file mode 100644 index b4e23f56ff..0000000000 --- a/dbunit/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java +++ /dev/null @@ -1,90 +0,0 @@ -package com.baeldung.dbunit; - -import org.dbunit.DefaultPrepAndExpectedTestCase; -import org.dbunit.IDatabaseTester; -import org.dbunit.JdbcDatabaseTester; -import org.dbunit.PrepAndExpectedTestCaseSteps; -import org.dbunit.VerifyTableDefinition; -import org.dbunit.dataset.IDataSet; -import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; -import org.dbunit.operation.DatabaseOperation; -import org.dbunit.util.fileloader.DataFileLoader; -import org.dbunit.util.fileloader.FlatXmlDataFileLoader; -import org.junit.Test; - -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; - -public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { - - @Override - public void setUp() throws Exception { - setDatabaseTester(initDatabaseTester()); - setDataFileLoader(initDataFileLoader()); - super.setUp(); - } - - private IDatabaseTester initDatabaseTester() throws Exception { - final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); - tester.setDataSet(initDataSet()); - tester.setSetUpOperation(DatabaseOperation.REFRESH); - return tester; - } - - private IDataSet initDataSet() throws Exception { - try (final InputStream is = getClass().getClassLoader().getResourceAsStream("data.xml")) { - return new FlatXmlDataSetBuilder().build(is); - } - } - - private DataFileLoader initDataFileLoader() { - return new FlatXmlDataFileLoader(); - } - - @Test - public void testSelect() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; - final String[] prepDataFiles = {"/users.xml"}; - final String[] expectedDataFiles = {"/users.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() - .executeQuery("select * from CLIENTS where id = 1"); - - final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - - assertThat(rs.next()).isTrue(); - assertThat(rs.getString("last_name")).isEqualTo("Xavier"); - } - - @Test - public void testUpdate() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; // define tables to verify - final String[] prepDataFiles = {"/users.xml"}; - final String[] expectedDataFiles = {"/users_exp_rename.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() - .executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); - - super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - } - - @Test - public void testDelete() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; - final String[] prepDataFiles = {"/users.xml"}; - final String[] expectedDataFiles = {"/users_exp_delete.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() - .executeUpdate("delete from CLIENTS where id = 2"); - - super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - } - -} diff --git a/dbunit/src/test/resources/data.xml b/dbunit/src/test/resources/data.xml deleted file mode 100644 index 290cc36890..0000000000 --- a/dbunit/src/test/resources/data.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/dbunit/src/test/resources/expected-ignoring-registered_at.xml b/dbunit/src/test/resources/expected-ignoring-registered_at.xml deleted file mode 100644 index ea57b6a961..0000000000 --- a/dbunit/src/test/resources/expected-ignoring-registered_at.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/dbunit/src/test/resources/expected-multiple-failures.xml b/dbunit/src/test/resources/expected-multiple-failures.xml deleted file mode 100644 index ea57b6a961..0000000000 --- a/dbunit/src/test/resources/expected-multiple-failures.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/dbunit/src/test/resources/expected-user.xml b/dbunit/src/test/resources/expected-user.xml deleted file mode 100644 index 631dd84210..0000000000 --- a/dbunit/src/test/resources/expected-user.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/dbunit/src/test/resources/items.xml b/dbunit/src/test/resources/items.xml deleted file mode 100644 index d13e93bbe0..0000000000 --- a/dbunit/src/test/resources/items.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/dbunit/src/test/resources/items_exp_delete.xml b/dbunit/src/test/resources/items_exp_delete.xml deleted file mode 100644 index a6fa2b33e8..0000000000 --- a/dbunit/src/test/resources/items_exp_delete.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/dbunit/src/test/resources/items_exp_delete_no_produced.xml b/dbunit/src/test/resources/items_exp_delete_no_produced.xml deleted file mode 100644 index 3e7f854f5f..0000000000 --- a/dbunit/src/test/resources/items_exp_delete_no_produced.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/dbunit/src/test/resources/items_exp_rename.xml b/dbunit/src/test/resources/items_exp_rename.xml deleted file mode 100644 index 32f1d57cf6..0000000000 --- a/dbunit/src/test/resources/items_exp_rename.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/dbunit/src/test/resources/items_exp_rename_no_produced.xml b/dbunit/src/test/resources/items_exp_rename_no_produced.xml deleted file mode 100644 index b42d3804fa..0000000000 --- a/dbunit/src/test/resources/items_exp_rename_no_produced.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - diff --git a/dbunit/src/test/resources/schema.sql b/dbunit/src/test/resources/schema.sql deleted file mode 100644 index c2a8d2d630..0000000000 --- a/dbunit/src/test/resources/schema.sql +++ /dev/null @@ -1,28 +0,0 @@ -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/dbunit/src/test/resources/users.xml b/dbunit/src/test/resources/users.xml deleted file mode 100644 index 9ac3909bc5..0000000000 --- a/dbunit/src/test/resources/users.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/dbunit/src/test/resources/users_exp_delete.xml b/dbunit/src/test/resources/users_exp_delete.xml deleted file mode 100644 index 2fe97ae6f6..0000000000 --- a/dbunit/src/test/resources/users_exp_delete.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/dbunit/src/test/resources/users_exp_rename.xml b/dbunit/src/test/resources/users_exp_rename.xml deleted file mode 100644 index 95682118bb..0000000000 --- a/dbunit/src/test/resources/users_exp_rename.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - From dc75e11440a687431620b26d3ed4f8d812e0a293 Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Wed, 1 Apr 2020 07:44:25 +0200 Subject: [PATCH 13/18] [BAEL-2749] DBUnit documentation --- libraries-testing/README.md | 1 + 1 file changed, 1 insertion(+) 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) From c0abc0ed354f073d0f3958308acb4939f11c49fb Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Wed, 1 Apr 2020 19:44:48 +0200 Subject: [PATCH 14/18] [BAEL-2749] Uses static imports and uses code format --- .../baeldung/dbunit/ConnectionSettings.java | 8 +- .../baeldung/dbunit/DataSourceDBUnitTest.java | 178 ++++++-------- .../java/com/baeldung/dbunit/DbUnitTest.java | 117 +++++----- .../baeldung/dbunit/OldSchoolDbUnitTest.java | 219 ++++++++---------- .../dbunit/PrepAndExpectedDbUnitTest.java | 100 ++++---- pom.xml | 1 - 6 files changed, 285 insertions(+), 338 deletions(-) diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java b/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java index cc29d9c58a..b30d636a12 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java @@ -1,8 +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 = ""; + 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 index 662ed44fb6..1cb7489688 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java @@ -15,6 +15,7 @@ import org.junit.Test; import org.junit.platform.commons.logging.Logger; import org.junit.platform.commons.logging.LoggerFactory; +import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; @@ -25,112 +26,87 @@ import static org.assertj.core.api.Assertions.assertThat; public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { - private static Logger logger = LoggerFactory.getLogger(DataSourceDBUnitTest.class); + private static final Logger logger = LoggerFactory.getLogger(DataSourceDBUnitTest.class); - @Override - protected javax.sql.DataSource getDataSource() { - JdbcDataSource dataSource = new JdbcDataSource(); - dataSource.setURL(JDBC_URL); - dataSource.setUser("sa"); - dataSource.setPassword(""); - return dataSource; - } - - @Override - protected IDataSet getDataSet() throws Exception { - try (java.io.InputStream resourceAsStream = getClass() - .getClassLoader() - .getResourceAsStream("dbunit/data.xml")) { - return new FlatXmlDataSetBuilder().build(resourceAsStream); + @Override protected javax.sql.DataSource getDataSource() { + JdbcDataSource dataSource = new JdbcDataSource(); + dataSource.setURL(JDBC_URL); + dataSource.setUser("sa"); + dataSource.setPassword(""); + return dataSource; } - } - @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 testSimpleDataSet() 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 testEmptySchema() 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 testAssertByQuery() throws Exception { - try (final java.io.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'"); - - Assertion.assertEqualsIgnoreCols(expectedTable, actualData, new String[]{"id"}); + @Override protected IDataSet getDataSet() throws Exception { + try (InputStream resourceAsStream = getClass().getClassLoader().getResourceAsStream("dbunit/data.xml")) { + return new FlatXmlDataSetBuilder().build(resourceAsStream); + } } - } - @Test - public void testMultipleFailures() throws Exception { - try (final java.io.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); - } + @Override protected DatabaseOperation getSetUpOperation() { + return DatabaseOperation.REFRESH; } - } - 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(); - } + @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 testSimpleDataSet() 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 testEmptySchema() 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 testAssertByQuery() 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'"); + + Assertion.assertEqualsIgnoreCols(expectedTable, actualData, new String[] { "id" }); + } + } + + @Test public void testMultipleFailures() 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/DbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java index 3ed77b2c25..a3a41b9b8d 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java @@ -9,6 +9,7 @@ import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; import org.dbunit.operation.DatabaseOperation; import org.junit.Test; +import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; @@ -20,71 +21,65 @@ import static org.assertj.core.api.Assertions.assertThat; public class DbUnitTest extends DBTestCase { - public DbUnitTest(String name) { - super(name); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, USER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, PASSWORD); - } - - @Override - protected IDataSet getDataSet() throws Exception { - try (final java.io.InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) { - return new FlatXmlDataSetBuilder().build(is); + public DbUnitTest(String name) { + super(name); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, USER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, PASSWORD); } - } - @Override - protected DatabaseOperation getSetUpOperation() { - return DatabaseOperation.REFRESH; - } - - @Override - protected DatabaseOperation getTearDownOperation() { - return DatabaseOperation.DELETE_ALL; - } - - @Test - public void testSelect() throws Exception { - final Connection connection = 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 testDelete() throws Exception { - final Connection connection = getConnection().getConnection(); - - try (final java.io.InputStream is = DbUnitTest.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); + @Override protected IDataSet getDataSet() throws Exception { + try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) { + return new FlatXmlDataSetBuilder().build(is); + } } - } - @Test - public void testUpdate() throws Exception { - final Connection connection = getConnection().getConnection(); - - try (final java.io.InputStream is = DbUnitTest.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); + @Override protected DatabaseOperation getSetUpOperation() { + return DatabaseOperation.REFRESH; + } + + @Override protected DatabaseOperation getTearDownOperation() { + return DatabaseOperation.DELETE_ALL; + } + + @Test public void testSelect() throws Exception { + final Connection connection = 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 testDelete() throws Exception { + final Connection connection = getConnection().getConnection(); + + try (final InputStream is = DbUnitTest.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 testUpdate() throws Exception { + final Connection connection = getConnection().getConnection(); + + try (final InputStream is = DbUnitTest.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); + } } - } } diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java index aa6d9143bb..be6023d432 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -13,6 +13,7 @@ import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; +import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; @@ -25,137 +26,119 @@ import static org.dbunit.Assertion.assertEquals; public class OldSchoolDbUnitTest { - private static IDatabaseTester tester = null; + 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 java.io.InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) { - return new FlatXmlDataSetBuilder().build(is); + @BeforeClass public static void setUp() throws Exception { + tester = initDatabaseTester(); } - } - @Before - public void setup() throws Exception { - tester.onSetup(); - } - - @After - public void tearDown() throws Exception { - tester.onTearDown(); - } - - @Test - public void testSelect() 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 testIgnoringProduced() throws Exception { - final Connection connection = tester.getConnection().getConnection(); - final String[] excludedColumns = {"id", "produced"}; - try (final java.io.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); + 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; } - } - @Test - public void testDelete() throws Exception { - final Connection connection = tester.getConnection().getConnection(); - - try (final java.io.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); + private static IDataSet initDataSet() throws Exception { + try (final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) { + return new FlatXmlDataSetBuilder().build(is); + } } - } - @Test - public void testDeleteWithExcludedColumns() throws Exception { - final Connection connection = tester.getConnection().getConnection(); - - try (final java.io.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); + @Before public void setup() throws Exception { + tester.onSetup(); } - } - @Test - public void testUpdate() throws Exception { - final Connection connection = tester.getConnection().getConnection(); - - try (final java.io.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); + @After public void tearDown() throws Exception { + tester.onTearDown(); } - } - @Test - public void testUpdateWithExcludedColumns() throws Exception { - final Connection connection = tester.getConnection().getConnection(); + @Test public void testSelect() throws Exception { + final Connection connection = tester.getConnection().getConnection(); - try (final java.io.InputStream is = - OldSchoolDbUnitTest.class.getClassLoader() - .getResourceAsStream("dbunit/items_exp_rename_no_produced.xml")) { - ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("items"); + final ResultSet rs = connection.createStatement().executeQuery("select * from ITEMS where id = 1"); - 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); + assertThat(rs.next()).isTrue(); + assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt"); + } + + @Test public void testIgnoringProduced() 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 testDelete() 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 testDeleteWithExcludedColumns() 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 testUpdate() 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 testUpdateWithExcludedColumns() 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"); + + 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/dbunit/PrepAndExpectedDbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java index 7e77cd8fc3..f797f153a0 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java @@ -12,6 +12,7 @@ import org.dbunit.util.fileloader.DataFileLoader; import org.dbunit.util.fileloader.FlatXmlDataFileLoader; import org.junit.Test; +import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; @@ -23,67 +24,60 @@ import static org.assertj.core.api.Assertions.assertThat; public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { - @Override - public void setUp() throws Exception { - setDatabaseTester(initDatabaseTester()); - setDataFileLoader(initDataFileLoader()); - super.setUp(); - } - - private IDatabaseTester initDatabaseTester() throws Exception { - final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); - tester.setDataSet(initDataSet()); - tester.setSetUpOperation(DatabaseOperation.REFRESH); - return tester; - } - - private IDataSet initDataSet() throws Exception { - try (final java.io.InputStream is = getClass().getClassLoader().getResourceAsStream("dbunit/data.xml")) { - return new FlatXmlDataSetBuilder().build(is); + @Override public void setUp() throws Exception { + setDatabaseTester(initDatabaseTester()); + setDataFileLoader(initDataFileLoader()); + super.setUp(); } - } - private DataFileLoader initDataFileLoader() { - return new FlatXmlDataFileLoader(); - } + private IDatabaseTester initDatabaseTester() throws Exception { + final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); + tester.setDataSet(initDataSet()); + tester.setSetUpOperation(DatabaseOperation.REFRESH); + return tester; + } - @Test - public void testSelect() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; - final String[] prepDataFiles = {"/dbunit/users.xml"}; - final String[] expectedDataFiles = {"/dbunit/users.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() - .executeQuery("select * from CLIENTS where id = 1"); + private IDataSet initDataSet() throws Exception { + try (final InputStream is = getClass().getClassLoader().getResourceAsStream("dbunit/data.xml")) { + return new FlatXmlDataSetBuilder().build(is); + } + } - final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + private DataFileLoader initDataFileLoader() { + return new FlatXmlDataFileLoader(); + } - assertThat(rs.next()).isTrue(); - assertThat(rs.getString("last_name")).isEqualTo("Xavier"); - } + @Test public void testSelect() throws Exception { + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; + final String[] prepDataFiles = { "/dbunit/users.xml" }; + final String[] expectedDataFiles = { "/dbunit/users.xml" }; + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeQuery("select * from CLIENTS where id = 1"); - @Test - public void testUpdate() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; // define tables to verify - final String[] prepDataFiles = {"/dbunit/users.xml"}; - final String[] expectedDataFiles = {"/dbunit/users_exp_rename.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() - .executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); + final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - } + assertThat(rs.next()).isTrue(); + assertThat(rs.getString("last_name")).isEqualTo("Xavier"); + } - @Test - public void testDelete() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = {new VerifyTableDefinition("CLIENTS", new String[]{})}; - final String[] prepDataFiles = {"/dbunit/users.xml"}; - final String[] expectedDataFiles = {"/dbunit/users_exp_delete.xml"}; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement() - .executeUpdate("delete from CLIENTS where id = 2"); + @Test public void testUpdate() throws Exception { + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; // define tables to verify + final String[] prepDataFiles = { "/dbunit/users.xml" }; + final String[] expectedDataFiles = { "/dbunit/users_exp_rename.xml" }; + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); - super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - } + super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + } + + @Test public void testDelete() throws Exception { + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; + final String[] prepDataFiles = { "/dbunit/users.xml" }; + final String[] expectedDataFiles = { "/dbunit/users_exp_delete.xml" }; + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeUpdate("delete from CLIENTS where id = 2"); + + super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + } } diff --git a/pom.xml b/pom.xml index 734e2c8ab9..8b09f69252 100644 --- a/pom.xml +++ b/pom.xml @@ -601,7 +601,6 @@ - dbunit parent-boot-1 parent-boot-2 From 064e16251be28928331af940acf6b39fe9258dda Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Wed, 1 Apr 2020 20:02:46 +0200 Subject: [PATCH 15/18] [BAEL-2749] Formats pom --- pom.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/pom.xml b/pom.xml index 8b09f69252..04a2ce054c 100644 --- a/pom.xml +++ b/pom.xml @@ -601,7 +601,6 @@ - parent-boot-1 parent-boot-2 parent-spring-4 @@ -1289,8 +1288,6 @@ - dbunit - parent-boot-1 parent-boot-2 parent-spring-4 From f06af6499859b3dcd45d14d2060631a4fd1f0241 Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Thu, 2 Apr 2020 11:20:34 +0200 Subject: [PATCH 16/18] [BAEL-2749] Indentation and annotations format --- .../baeldung/dbunit/ConnectionSettings.java | 8 +- .../baeldung/dbunit/DataSourceDBUnitTest.java | 162 +++++++------- .../java/com/baeldung/dbunit/DbUnitTest.java | 116 +++++----- .../baeldung/dbunit/OldSchoolDbUnitTest.java | 209 +++++++++--------- .../dbunit/PrepAndExpectedDbUnitTest.java | 96 ++++---- 5 files changed, 310 insertions(+), 281 deletions(-) diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java b/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java index b30d636a12..cc29d9c58a 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/ConnectionSettings.java @@ -1,8 +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 = ""; + 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 index 1cb7489688..93503277b4 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java @@ -26,87 +26,97 @@ import static org.assertj.core.api.Assertions.assertThat; public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { - private static final Logger logger = LoggerFactory.getLogger(DataSourceDBUnitTest.class); + private static final Logger logger = LoggerFactory.getLogger(DataSourceDBUnitTest.class); - @Override protected javax.sql.DataSource getDataSource() { - JdbcDataSource dataSource = new JdbcDataSource(); - dataSource.setURL(JDBC_URL); - dataSource.setUser("sa"); - dataSource.setPassword(""); - return dataSource; + @Override + protected javax.sql.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 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 testSimpleDataSet() 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 testEmptySchema() 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 testAssertByQuery() 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'"); + + Assertion.assertEqualsIgnoreCols(expectedTable, actualData, new String[] { "id" }); } + } - @Override protected DatabaseOperation getSetUpOperation() { - return DatabaseOperation.REFRESH; + @Test + public void testMultipleFailures() 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); + } } + } - @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 testSimpleDataSet() 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 testEmptySchema() 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 testAssertByQuery() 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'"); - - Assertion.assertEqualsIgnoreCols(expectedTable, actualData, new String[] { "id" }); - } - } - - @Test public void testMultipleFailures() 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(); - } + 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/DbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java index a3a41b9b8d..da4ac54f12 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java @@ -21,65 +21,71 @@ import static org.assertj.core.api.Assertions.assertThat; public class DbUnitTest extends DBTestCase { - public DbUnitTest(String name) { - super(name); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, USER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, PASSWORD); + public DbUnitTest(String name) { + super(name); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, USER); + System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, PASSWORD); + } + + @Override + protected IDataSet getDataSet() throws Exception { + try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) { + return new FlatXmlDataSetBuilder().build(is); } + } - @Override protected IDataSet getDataSet() throws Exception { - try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) { - return new FlatXmlDataSetBuilder().build(is); - } + @Override + protected DatabaseOperation getSetUpOperation() { + return DatabaseOperation.REFRESH; + } + + @Override + protected DatabaseOperation getTearDownOperation() { + return DatabaseOperation.DELETE_ALL; + } + + @Test + public void testSelect() throws Exception { + final Connection connection = 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 testDelete() throws Exception { + final Connection connection = getConnection().getConnection(); + + try (final InputStream is = DbUnitTest.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); } + } - @Override protected DatabaseOperation getSetUpOperation() { - return DatabaseOperation.REFRESH; - } - - @Override protected DatabaseOperation getTearDownOperation() { - return DatabaseOperation.DELETE_ALL; - } - - @Test public void testSelect() throws Exception { - final Connection connection = 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 testDelete() throws Exception { - final Connection connection = getConnection().getConnection(); - - try (final InputStream is = DbUnitTest.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 testUpdate() throws Exception { - final Connection connection = getConnection().getConnection(); - - try (final InputStream is = DbUnitTest.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 testUpdate() throws Exception { + final Connection connection = getConnection().getConnection(); + + try (final InputStream is = DbUnitTest.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); } + } } diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java index be6023d432..a7821102dc 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -26,119 +26,128 @@ import static org.dbunit.Assertion.assertEquals; public class OldSchoolDbUnitTest { - private static IDatabaseTester tester = null; + private static IDatabaseTester tester = null; - @BeforeClass public static void setUp() throws Exception { - tester = initDatabaseTester(); + @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); } + } - 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; + @Before + public void setup() throws Exception { + tester.onSetup(); + } + + @After + public void tearDown() throws Exception { + tester.onTearDown(); + } + + @Test + public void testSelect() 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 testIgnoringProduced() 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); } + } - private static IDataSet initDataSet() throws Exception { - try (final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) { - return new FlatXmlDataSetBuilder().build(is); - } + @Test + public void testDelete() 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); } + } - @Before public void setup() throws Exception { - tester.onSetup(); + @Test + public void testDeleteWithExcludedColumns() 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); } + } - @After public void tearDown() throws Exception { - tester.onTearDown(); + @Test + public void testUpdate() 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 testSelect() throws Exception { - final Connection connection = tester.getConnection().getConnection(); + @Test + public void testUpdateWithExcludedColumns() throws Exception { + final Connection connection = tester.getConnection().getConnection(); - final ResultSet rs = connection.createStatement().executeQuery("select * from ITEMS where id = 1"); + try (final InputStream is = OldSchoolDbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/items_exp_rename_no_produced.xml")) { + ITable expectedTable = new FlatXmlDataSetBuilder().build(is).getTable("ITEMS"); - assertThat(rs.next()).isTrue(); - assertThat(rs.getString("title")).isEqualTo("Grey T-Shirt"); - } - - @Test public void testIgnoringProduced() 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 testDelete() 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 testDeleteWithExcludedColumns() 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 testUpdate() 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 testUpdateWithExcludedColumns() 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"); - - 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); - } + 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/dbunit/PrepAndExpectedDbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java index f797f153a0..039dfd1639 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java @@ -24,60 +24,64 @@ import static org.assertj.core.api.Assertions.assertThat; public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { - @Override public void setUp() throws Exception { - setDatabaseTester(initDatabaseTester()); - setDataFileLoader(initDataFileLoader()); - super.setUp(); + @Override + public void setUp() throws Exception { + setDatabaseTester(initDatabaseTester()); + setDataFileLoader(initDataFileLoader()); + super.setUp(); + } + + private IDatabaseTester initDatabaseTester() throws Exception { + final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); + tester.setDataSet(initDataSet()); + tester.setSetUpOperation(DatabaseOperation.REFRESH); + return tester; + } + + private IDataSet initDataSet() throws Exception { + try (final InputStream is = getClass().getClassLoader().getResourceAsStream("dbunit/data.xml")) { + return new FlatXmlDataSetBuilder().build(is); } + } - private IDatabaseTester initDatabaseTester() throws Exception { - final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); - tester.setDataSet(initDataSet()); - tester.setSetUpOperation(DatabaseOperation.REFRESH); - return tester; - } + private DataFileLoader initDataFileLoader() { + return new FlatXmlDataFileLoader(); + } - private IDataSet initDataSet() throws Exception { - try (final InputStream is = getClass().getClassLoader().getResourceAsStream("dbunit/data.xml")) { - return new FlatXmlDataSetBuilder().build(is); - } - } + @Test + public void testSelect() throws Exception { + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; + final String[] prepDataFiles = { "/dbunit/users.xml" }; + final String[] expectedDataFiles = { "/dbunit/users.xml" }; + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeQuery("select * from CLIENTS where id = 1"); - private DataFileLoader initDataFileLoader() { - return new FlatXmlDataFileLoader(); - } + final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - @Test public void testSelect() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; - final String[] prepDataFiles = { "/dbunit/users.xml" }; - final String[] expectedDataFiles = { "/dbunit/users.xml" }; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeQuery("select * from CLIENTS where id = 1"); + assertThat(rs.next()).isTrue(); + assertThat(rs.getString("last_name")).isEqualTo("Xavier"); + } - final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + @Test + public void testUpdate() throws Exception { + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; // define tables to verify + final String[] prepDataFiles = { "/dbunit/users.xml" }; + final String[] expectedDataFiles = { "/dbunit/users_exp_rename.xml" }; + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); - assertThat(rs.next()).isTrue(); - assertThat(rs.getString("last_name")).isEqualTo("Xavier"); - } + super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + } - @Test public void testUpdate() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; // define tables to verify - final String[] prepDataFiles = { "/dbunit/users.xml" }; - final String[] expectedDataFiles = { "/dbunit/users_exp_rename.xml" }; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); + @Test + public void testDelete() throws Exception { + final Connection connection = getConnection().getConnection(); + final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; + final String[] prepDataFiles = { "/dbunit/users.xml" }; + final String[] expectedDataFiles = { "/dbunit/users_exp_delete.xml" }; + final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeUpdate("delete from CLIENTS where id = 2"); - super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - } - - @Test public void testDelete() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; - final String[] prepDataFiles = { "/dbunit/users.xml" }; - final String[] expectedDataFiles = { "/dbunit/users_exp_delete.xml" }; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeUpdate("delete from CLIENTS where id = 2"); - - super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - } + super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); + } } From e98323d913d19af96119a9d9220b8eebda64c2fc Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Fri, 3 Apr 2020 08:51:46 +0200 Subject: [PATCH 17/18] [BAEL-2749] Renaming test methods and running them with JUnit4 --- .../baeldung/dbunit/DataSourceDBUnitTest.java | 63 +++++++++++-- .../java/com/baeldung/dbunit/DbUnitTest.java | 91 ------------------- .../baeldung/dbunit/OldSchoolDbUnitTest.java | 26 ++++-- .../dbunit/PrepAndExpectedDbUnitTest.java | 87 ------------------ .../jsonassert/JsonAssertUnitTest.java | 10 +- .../src/test/resources/dbunit/data.xml | 2 +- .../dbunit/items_exp_rename_no_produced.xml | 2 +- .../src/test/resources/dbunit/users.xml | 2 +- .../resources/dbunit/users_exp_delete.xml | 2 +- .../resources/dbunit/users_exp_rename.xml | 2 +- 10 files changed, 80 insertions(+), 207 deletions(-) delete mode 100644 libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java delete mode 100644 libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java index 93503277b4..20b0337f4d 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java @@ -14,6 +14,8 @@ 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 java.io.InputStream; import java.sql.Connection; @@ -23,7 +25,9 @@ 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); @@ -65,7 +69,7 @@ public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { } @Test - public void testSimpleDataSet() throws SQLException { + public void givenDataSet_whenSelect_thenFirstTitleIsGreyTShirt() throws SQLException { final Connection connection = getDataSource().getConnection(); final ResultSet rs = connection.createStatement().executeQuery("select * from ITEMS where id = 1"); @@ -75,7 +79,7 @@ public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { } @Test - public void testEmptySchema() throws Exception { + public void givenDataSetEmptySchema_whenDataSetCreated_thenTablesAreEqual() throws Exception { final IDataSet expectedDataSet = getDataSet(); final ITable expectedTable = expectedDataSet.getTable("CLIENTS"); final IDataSet databaseDataSet = getConnection().createDataSet(); @@ -84,33 +88,74 @@ public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { } @Test - public void testAssertByQuery() throws Exception { + 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'"); + 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'"); - Assertion.assertEqualsIgnoreCols(expectedTable, actualData, new String[] { "id" }); + assertEqualsIgnoreCols(expectedTable, actualData, new String[] { "id" }); } } @Test - public void testMultipleFailures() throws Exception { + 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')"); + 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")); + String message = (String) collectingHandler + .getDiffList() + .stream() + .map(d -> formatDifference((Difference) d)).collect(joining("\n")); logger.error(() -> message); } } diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java deleted file mode 100644 index da4ac54f12..0000000000 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/DbUnitTest.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.baeldung.dbunit; - -import org.dbunit.Assertion; -import org.dbunit.DBTestCase; -import org.dbunit.PropertiesBasedJdbcDatabaseTester; -import org.dbunit.dataset.IDataSet; -import org.dbunit.dataset.ITable; -import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; -import org.dbunit.operation.DatabaseOperation; -import org.junit.Test; - -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; - -public class DbUnitTest extends DBTestCase { - - public DbUnitTest(String name) { - super(name); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, JDBC_DRIVER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, JDBC_URL); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, USER); - System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, PASSWORD); - } - - @Override - protected IDataSet getDataSet() throws Exception { - try (final InputStream is = DbUnitTest.class.getClassLoader().getResourceAsStream("dbunit/data.xml")) { - return new FlatXmlDataSetBuilder().build(is); - } - } - - @Override - protected DatabaseOperation getSetUpOperation() { - return DatabaseOperation.REFRESH; - } - - @Override - protected DatabaseOperation getTearDownOperation() { - return DatabaseOperation.DELETE_ALL; - } - - @Test - public void testSelect() throws Exception { - final Connection connection = 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 testDelete() throws Exception { - final Connection connection = getConnection().getConnection(); - - try (final InputStream is = DbUnitTest.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 testUpdate() throws Exception { - final Connection connection = getConnection().getConnection(); - - try (final InputStream is = DbUnitTest.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); - } - } - -} diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java index a7821102dc..6243af9676 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/OldSchoolDbUnitTest.java @@ -12,6 +12,8 @@ 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; @@ -24,6 +26,7 @@ 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; @@ -58,7 +61,7 @@ public class OldSchoolDbUnitTest { } @Test - public void testSelect() throws Exception { + 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"); @@ -68,24 +71,27 @@ public class OldSchoolDbUnitTest { } @Test - public void testIgnoringProduced() throws Exception { + 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); + final ITable expectedTable = DefaultColumnFilter.excludedColumnsTable( + expectedDataSet.getTable("ITEMS"), excludedColumns); - connection.createStatement().executeUpdate("INSERT INTO ITEMS (title, price, produced) VALUES('Necklace', 199.99, now())"); + 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); + final ITable actualTable = DefaultColumnFilter.excludedColumnsTable( + databaseDataSet.getTable("ITEMS"), excludedColumns); Assertion.assertEquals(expectedTable, actualTable); } } @Test - public void testDelete() throws Exception { + 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")) { @@ -101,7 +107,7 @@ public class OldSchoolDbUnitTest { } @Test - public void testDeleteWithExcludedColumns() throws Exception { + 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")) { @@ -118,7 +124,7 @@ public class OldSchoolDbUnitTest { } @Test - public void testUpdate() throws Exception { + 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")) { @@ -134,18 +140,18 @@ public class OldSchoolDbUnitTest { } @Test - public void testUpdateWithExcludedColumns() throws Exception { + 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/dbunit/PrepAndExpectedDbUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java deleted file mode 100644 index 039dfd1639..0000000000 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/PrepAndExpectedDbUnitTest.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.baeldung.dbunit; - -import org.dbunit.DefaultPrepAndExpectedTestCase; -import org.dbunit.IDatabaseTester; -import org.dbunit.JdbcDatabaseTester; -import org.dbunit.PrepAndExpectedTestCaseSteps; -import org.dbunit.VerifyTableDefinition; -import org.dbunit.dataset.IDataSet; -import org.dbunit.dataset.xml.FlatXmlDataSetBuilder; -import org.dbunit.operation.DatabaseOperation; -import org.dbunit.util.fileloader.DataFileLoader; -import org.dbunit.util.fileloader.FlatXmlDataFileLoader; -import org.junit.Test; - -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; - -public class PrepAndExpectedDbUnitTest extends DefaultPrepAndExpectedTestCase { - - @Override - public void setUp() throws Exception { - setDatabaseTester(initDatabaseTester()); - setDataFileLoader(initDataFileLoader()); - super.setUp(); - } - - private IDatabaseTester initDatabaseTester() throws Exception { - final JdbcDatabaseTester tester = new JdbcDatabaseTester(JDBC_DRIVER, JDBC_URL, USER, PASSWORD); - tester.setDataSet(initDataSet()); - tester.setSetUpOperation(DatabaseOperation.REFRESH); - return tester; - } - - private IDataSet initDataSet() throws Exception { - try (final InputStream is = getClass().getClassLoader().getResourceAsStream("dbunit/data.xml")) { - return new FlatXmlDataSetBuilder().build(is); - } - } - - private DataFileLoader initDataFileLoader() { - return new FlatXmlDataFileLoader(); - } - - @Test - public void testSelect() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; - final String[] prepDataFiles = { "/dbunit/users.xml" }; - final String[] expectedDataFiles = { "/dbunit/users.xml" }; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeQuery("select * from CLIENTS where id = 1"); - - final ResultSet rs = (ResultSet) super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - - assertThat(rs.next()).isTrue(); - assertThat(rs.getString("last_name")).isEqualTo("Xavier"); - } - - @Test - public void testUpdate() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; // define tables to verify - final String[] prepDataFiles = { "/dbunit/users.xml" }; - final String[] expectedDataFiles = { "/dbunit/users_exp_rename.xml" }; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeUpdate("update CLIENTS set first_name = 'new name' where id = 1"); - - super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - } - - @Test - public void testDelete() throws Exception { - final Connection connection = getConnection().getConnection(); - final VerifyTableDefinition[] verifyTables = { new VerifyTableDefinition("CLIENTS", new String[] {}) }; - final String[] prepDataFiles = { "/dbunit/users.xml" }; - final String[] expectedDataFiles = { "/dbunit/users_exp_delete.xml" }; - final PrepAndExpectedTestCaseSteps testSteps = () -> connection.createStatement().executeUpdate("delete from CLIENTS where id = 2"); - - super.runTest(verifyTables, prepDataFiles, expectedDataFiles, testSteps); - } - -} 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 index 290cc36890..4865dec54c 100644 --- a/libraries-testing/src/test/resources/dbunit/data.xml +++ b/libraries-testing/src/test/resources/dbunit/data.xml @@ -1,6 +1,6 @@ - + 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 index b42d3804fa..4f14b17113 100644 --- 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 @@ -1,6 +1,6 @@ - + diff --git a/libraries-testing/src/test/resources/dbunit/users.xml b/libraries-testing/src/test/resources/dbunit/users.xml index 9ac3909bc5..f04943c4cc 100644 --- a/libraries-testing/src/test/resources/dbunit/users.xml +++ b/libraries-testing/src/test/resources/dbunit/users.xml @@ -1,6 +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 index 2fe97ae6f6..20a2f2f1a7 100644 --- a/libraries-testing/src/test/resources/dbunit/users_exp_delete.xml +++ b/libraries-testing/src/test/resources/dbunit/users_exp_delete.xml @@ -1,5 +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 index 95682118bb..1ab6cf53b8 100644 --- a/libraries-testing/src/test/resources/dbunit/users_exp_rename.xml +++ b/libraries-testing/src/test/resources/dbunit/users_exp_rename.xml @@ -1,6 +1,6 @@ - + From 15d4893d2e2742261e2661d3ffabcfca443a6851 Mon Sep 17 00:00:00 2001 From: Joao Esperancinha Date: Wed, 8 Apr 2020 08:13:28 +0200 Subject: [PATCH 18/18] [BAEL-2749] Bumps DBUnit to version 2.7.0 --- libraries-testing/pom.xml | 2 +- .../test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/libraries-testing/pom.xml b/libraries-testing/pom.xml index c4d2786441..ad6c81a3d6 100644 --- a/libraries-testing/pom.xml +++ b/libraries-testing/pom.xml @@ -198,7 +198,7 @@ 3.6.2 2.0.0.0 1.4.200 - 2.6.0 + 2.7.0 3.14.0 1.8 1.8 diff --git a/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java b/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java index 20b0337f4d..93c7e9a456 100644 --- a/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java +++ b/libraries-testing/src/test/java/com/baeldung/dbunit/DataSourceDBUnitTest.java @@ -17,6 +17,7 @@ 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; @@ -33,7 +34,7 @@ public class DataSourceDBUnitTest extends DataSourceBasedDBTestCase { private static final Logger logger = LoggerFactory.getLogger(DataSourceDBUnitTest.class); @Override - protected javax.sql.DataSource getDataSource() { + protected DataSource getDataSource() { JdbcDataSource dataSource = new JdbcDataSource(); dataSource.setURL(JDBC_URL); dataSource.setUser("sa");