1 package org.dbunit;
2
3 import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
4 import static org.junit.jupiter.api.Assertions.assertThrows;
5
6 import org.dbunit.assertion.DbComparisonFailure;
7 import org.dbunit.database.IDatabaseConnection;
8 import org.dbunit.operation.DatabaseOperation;
9 import org.dbunit.util.fileloader.DataFileLoader;
10 import org.dbunit.util.fileloader.FlatXmlDataFileLoader;
11 import org.junit.jupiter.api.BeforeEach;
12 import org.junit.jupiter.api.Test;
13
14
15
16
17
18
19
20
21
22 class DefaultPrepAndExpectedTestCaseExtIT extends DefaultPrepAndExpectedTestCase
23 {
24 private static final String PREP_DATA_FILE_NAME =
25 "/xml/flatXmlDataSetTest.xml";
26 private static final String EXP_DATA_FILE_NAME =
27 "/xml/flatXmlDataSetTestChanged.xml";
28
29 private static final VerifyTableDefinition TEST_TABLE =
30 makeVerifyTableDefinition("TEST_TABLE");
31 private static final VerifyTableDefinition SECOND_TABLE =
32 makeVerifyTableDefinition("SECOND_TABLE");
33 private static final VerifyTableDefinition EMPTY_TABLE =
34 makeVerifyTableDefinition("EMPTY_TABLE");
35 private static final VerifyTableDefinition PK_TABLE =
36 makeVerifyTableDefinition("PK_TABLE");
37 private static final VerifyTableDefinition ONLY_PK_TABLE =
38 makeVerifyTableDefinition("ONLY_PK_TABLE");
39 private static final VerifyTableDefinition EMPTY_MULTITYPE_TABLE =
40 makeVerifyTableDefinition("EMPTY_MULTITYPE_TABLE");
41
42 private final DataFileLoader dataFileLoader = new FlatXmlDataFileLoader();
43
44 private static VerifyTableDefinition makeVerifyTableDefinition(
45 final String tableName)
46 {
47 return new VerifyTableDefinition(tableName, new String[] {});
48 }
49
50 @Override
51 @BeforeEach
52 protected void setUp() throws Exception
53 {
54 setDataFileLoader(dataFileLoader);
55
56
57
58
59 }
60
61 @Test
62 void testSuccessRun_withMatchingPrepAndExpectedFiles_doesNotThrowException() throws Exception
63 {
64 final String[] prepDataFiles = {PREP_DATA_FILE_NAME};
65 final String[] expectedDataFiles = {PREP_DATA_FILE_NAME};
66 final VerifyTableDefinition[] tables = {TEST_TABLE, SECOND_TABLE,
67 EMPTY_TABLE, PK_TABLE, ONLY_PK_TABLE, EMPTY_MULTITYPE_TABLE};
68
69 final IDatabaseTester databaseTester = makeDatabaseTester();
70 setDatabaseTester(databaseTester);
71
72 configureTest(tables, prepDataFiles, expectedDataFiles);
73
74 assertDoesNotThrow(() -> preTest(),
75 "Did not expect tc.postTest() to throw, but it did!");
76
77
78
79 postTest();
80 }
81
82 @Test
83 void testFailRun_withMismatchedExpectedFile_throwsDbComparisonFailure() throws Exception
84 {
85 final String[] prepDataFiles = {PREP_DATA_FILE_NAME};
86 final String[] expectedDataFiles = {EXP_DATA_FILE_NAME};
87 final VerifyTableDefinition[] tables = {TEST_TABLE, SECOND_TABLE,
88 EMPTY_TABLE, PK_TABLE, ONLY_PK_TABLE, EMPTY_MULTITYPE_TABLE};
89
90 final IDatabaseTester databaseTester = makeDatabaseTester();
91 setDatabaseTester(databaseTester);
92
93 configureTest(tables, prepDataFiles, expectedDataFiles);
94
95 preTest();
96
97
98
99 assertThrows(DbComparisonFailure.class, () -> postTest(),
100 "Expected tc.postTest() to throw DbComparisonFailure, but it didn't");
101
102 }
103
104 protected IDatabaseTester makeDatabaseTester() throws Exception
105 {
106 final DatabaseEnvironment dbEnv = DatabaseEnvironment.getInstance();
107 final IDatabaseConnection connection = dbEnv.getConnection();
108 final IDatabaseTester databaseTester = new DefaultDatabaseTester(connection);
109
110
111 databaseTester.setTearDownOperation(DatabaseOperation.DELETE_ALL);
112 return databaseTester;
113 }
114 }