1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.dbunit.junit.jupiter;
22
23 import static org.assertj.core.api.Assertions.assertThat;
24 import static org.junit.platform.engine.discovery.DiscoverySelectors.selectClass;
25
26 import org.dbunit.DatabaseEnvironment;
27 import org.dbunit.DefaultDatabaseTester;
28 import org.dbunit.IDatabaseTester;
29 import org.dbunit.IOperationListener;
30 import org.dbunit.annotation.DbUnitConfig;
31 import org.dbunit.annotation.DbUnitExpected;
32 import org.dbunit.annotation.DbUnitPrep;
33 import org.dbunit.annotation.DbUnitProperty;
34 import org.dbunit.annotation.DbUnitTester;
35 import org.dbunit.database.DatabaseConfig;
36 import org.dbunit.database.IDatabaseConnection;
37 import org.junit.jupiter.api.Test;
38 import org.junit.jupiter.api.extension.ExtendWith;
39 import org.junit.platform.testkit.engine.EngineTestKit;
40
41
42
43
44
45
46
47
48
49 class DbUnitConfigPropertiesIT
50 {
51 @Test
52 void testBeforeTestExecution_dbUnitPropertyDeclared_reachesConnectionConfig()
53 throws Exception
54 {
55 final DatabaseEnvironment environment = DatabaseEnvironment.getInstance();
56 try
57 {
58 final IDatabaseConnection connection = environment.getConnection();
59 connection.getConfig().setFeature(DatabaseConfig.FEATURE_BATCHED_STATEMENTS, false);
60 PropertySample.databaseTester = new DefaultDatabaseTester(connection);
61 PropertySample.databaseTester
62 .setOperationListener(IOperationListener.NO_OP_OPERATION_LISTENER);
63
64 EngineTestKit.engine("junit-jupiter").selectors(selectClass(PropertySample.class))
65 .execute().testEvents()
66 .assertStatistics(stats -> stats.started(1).succeeded(1));
67
68 assertThat(
69 connection.getConfig().getFeature(DatabaseConfig.FEATURE_BATCHED_STATEMENTS))
70 .as("The @DbUnitProperty value must have been applied to the real"
71 + " connection's DatabaseConfig.")
72 .isTrue();
73 } finally
74 {
75
76
77
78 environment.closeConnection();
79 }
80 }
81
82 @ExtendWith(DbUnitExtension.class)
83
84
85 @DbUnitConfig(closeConnectionAfterTest = false,
86 properties = @DbUnitProperty(name = "batchedStatements", value = "true"))
87 @DbUnitPrep("empty.xml")
88 static class PropertySample
89 {
90 @DbUnitTester
91 static IDatabaseTester databaseTester;
92
93 @Test
94 void testPropertyIsAppliedBeforeTheTestRuns()
95 {
96 }
97 }
98
99 @Test
100 void testBeforeTestExecution_dbUnitPropertyDeclaredOnExpectedPath_reachesConnectionConfig()
101 throws Exception
102 {
103 final DatabaseEnvironment environment = DatabaseEnvironment.getInstance();
104 try
105 {
106 final IDatabaseConnection connection = environment.getConnection();
107 connection.getConfig().setFeature(DatabaseConfig.FEATURE_BATCHED_STATEMENTS, false);
108 ExpectedPathPropertySample.databaseTester = new DefaultDatabaseTester(connection);
109 ExpectedPathPropertySample.databaseTester
110 .setOperationListener(IOperationListener.NO_OP_OPERATION_LISTENER);
111
112 EngineTestKit.engine("junit-jupiter")
113 .selectors(selectClass(ExpectedPathPropertySample.class)).execute()
114 .testEvents().assertStatistics(stats -> stats.started(1).succeeded(1));
115
116 assertThat(
117 connection.getConfig().getFeature(DatabaseConfig.FEATURE_BATCHED_STATEMENTS))
118 .as("The @DbUnitProperty value must reach the connection"
119 + " DefaultPrepAndExpectedTestCase actually uses for"
120 + " setupData()/verifyData()/cleanupData() - the"
121 + " setup/teardown path's IOperationListener wiring is never"
122 + " triggered by those methods.")
123 .isTrue();
124 } finally
125 {
126
127
128
129 environment.closeConnection();
130 }
131 }
132
133 @ExtendWith(DbUnitExtension.class)
134
135
136 @DbUnitConfig(closeConnectionAfterTest = false,
137 properties = @DbUnitProperty(name = "batchedStatements", value = "true"))
138 @DbUnitExpected("empty.xml")
139 static class ExpectedPathPropertySample
140 {
141 @DbUnitTester
142 static IDatabaseTester databaseTester;
143
144 @Test
145 void testPropertyIsAppliedBeforeVerification()
146 {
147 }
148 }
149 }