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
75
76
77
78 final IDatabaseTester databaseTesterNew1 = makeDatabaseTester();
79 setDatabaseTester(databaseTesterNew1);
80 assertDoesNotThrow(() -> preTest(),
81 "Did not expect tc.postTest() to throw, but it did!");
82
83
84
85 postTest();
86 }
87
88 @Test
89 void testFailRun_withMismatchedExpectedFile_throwsDbComparisonFailure() throws Exception
90 {
91 final String[] prepDataFiles = {PREP_DATA_FILE_NAME};
92 final String[] expectedDataFiles = {EXP_DATA_FILE_NAME};
93 final VerifyTableDefinition[] tables = {TEST_TABLE, SECOND_TABLE,
94 EMPTY_TABLE, PK_TABLE, ONLY_PK_TABLE, EMPTY_MULTITYPE_TABLE};
95
96 final IDatabaseTester databaseTester = makeDatabaseTester();
97 setDatabaseTester(databaseTester);
98
99 configureTest(tables, prepDataFiles, expectedDataFiles);
100
101
102
103
104
105 final IDatabaseTester databaseTesterNew1 = makeDatabaseTester();
106 setDatabaseTester(databaseTesterNew1);
107
108 preTest();
109
110
111
112 assertThrows(DbComparisonFailure.class, () -> postTest(),
113 "Expected tc.postTest() to throw DbComparisonFailure, but it didn't");
114
115 }
116
117 protected IDatabaseTester makeDatabaseTester() throws Exception
118 {
119 final DatabaseEnvironment dbEnv = DatabaseEnvironment.getInstance();
120 final IDatabaseConnection connection = dbEnv.getConnection();
121 final IDatabaseTester databaseTester = new DefaultDatabaseTester(connection);
122
123
124 databaseTester.setTearDownOperation(DatabaseOperation.DELETE_ALL);
125 return databaseTester;
126 }
127 }