diff --git a/spring-test/src/test/java/org/springframework/test/context/jdbc/MultipleDataSourcesAndTransactionManagersSqlScriptsTests.java b/spring-test/src/test/java/org/springframework/test/context/jdbc/MultipleDataSourcesAndTransactionManagersSqlScriptsTests.java index f1bf333e7d..3761370ce3 100644 --- a/spring-test/src/test/java/org/springframework/test/context/jdbc/MultipleDataSourcesAndTransactionManagersSqlScriptsTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/jdbc/MultipleDataSourcesAndTransactionManagersSqlScriptsTests.java @@ -16,6 +16,10 @@ package org.springframework.test.context.jdbc; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import javax.sql.DataSource; import org.junit.Test; @@ -56,21 +60,21 @@ public class MultipleDataSourcesAndTransactionManagersSqlScriptsTests { @Test @Sql(scripts = "data-add-dogbert.sql", dataSource = "dataSource1", transactionManager = "txMgr1") public void database1() { - assertUsersExist(new JdbcTemplate(dataSource1), "Dilbert", "Dogbert"); + assertUsers(new JdbcTemplate(dataSource1), "Dilbert", "Dogbert"); } @Test @Sql(scripts = "data-add-catbert.sql", dataSource = "dataSource2", transactionManager = "txMgr2") public void database2() { - assertUsersExist(new JdbcTemplate(dataSource2), "Dilbert", "Catbert"); + assertUsers(new JdbcTemplate(dataSource2), "Dilbert", "Catbert"); } - private void assertUsersExist(JdbcTemplate jdbcTemplate, String... users) { - String query = "select count(name) from user where name =?"; - for (String user : users) { - assertTrue("User [" + user + "] must exist.", - jdbcTemplate.queryForObject(query, Integer.class, user).intValue() == 1); - } + private void assertUsers(JdbcTemplate jdbcTemplate, String... users) { + List expected = Arrays.asList(users); + Collections.sort(expected); + List actual = jdbcTemplate.queryForList("select name from user", String.class); + Collections.sort(actual); + assertEquals("Users in database;", expected, actual); } diff --git a/spring-test/src/test/java/org/springframework/test/context/jdbc/MultipleDataSourcesAndTransactionManagersTransactionalSqlScriptsTests.java b/spring-test/src/test/java/org/springframework/test/context/jdbc/MultipleDataSourcesAndTransactionManagersTransactionalSqlScriptsTests.java index 1b04a31a07..b5450c6d5d 100644 --- a/spring-test/src/test/java/org/springframework/test/context/jdbc/MultipleDataSourcesAndTransactionManagersTransactionalSqlScriptsTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/jdbc/MultipleDataSourcesAndTransactionManagersTransactionalSqlScriptsTests.java @@ -16,6 +16,10 @@ package org.springframework.test.context.jdbc; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; + import javax.sql.DataSource; import org.junit.Test; @@ -57,22 +61,22 @@ public class MultipleDataSourcesAndTransactionManagersTransactionalSqlScriptsTes @Transactional("txMgr1") @Sql(scripts = "data-add-dogbert.sql", dataSource = "dataSource1", transactionManager = "txMgr1") public void database1() { - assertUsersExist(new JdbcTemplate(dataSource1), "Dilbert", "Dogbert"); + assertUsers(new JdbcTemplate(dataSource1), "Dilbert", "Dogbert"); } @Test @Transactional("txMgr2") @Sql(scripts = "data-add-catbert.sql", dataSource = "dataSource2", transactionManager = "txMgr2") public void database2() { - assertUsersExist(new JdbcTemplate(dataSource2), "Dilbert", "Catbert"); + assertUsers(new JdbcTemplate(dataSource2), "Dilbert", "Catbert"); } - private void assertUsersExist(JdbcTemplate jdbcTemplate, String... users) { - String query = "select count(name) from user where name =?"; - for (String user : users) { - assertTrue("User [" + user + "] must exist.", - jdbcTemplate.queryForObject(query, Integer.class, user).intValue() == 1); - } + private void assertUsers(JdbcTemplate jdbcTemplate, String... users) { + List expected = Arrays.asList(users); + Collections.sort(expected); + List actual = jdbcTemplate.queryForList("select name from user", String.class); + Collections.sort(actual); + assertEquals("Users in database;", expected, actual); } diff --git a/spring-test/src/test/java/org/springframework/test/context/testng/transaction/programmatic/ProgrammaticTxMgmtTestNGTests.java b/spring-test/src/test/java/org/springframework/test/context/testng/transaction/programmatic/ProgrammaticTxMgmtTestNGTests.java index 8a91d9f878..5e213dc48b 100644 --- a/spring-test/src/test/java/org/springframework/test/context/testng/transaction/programmatic/ProgrammaticTxMgmtTestNGTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/testng/transaction/programmatic/ProgrammaticTxMgmtTestNGTests.java @@ -16,10 +16,9 @@ package org.springframework.test.context.testng.transaction.programmatic; -import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; -import java.util.Map; import javax.sql.DataSource; @@ -45,8 +44,8 @@ import static org.junit.Assert.*; import static org.springframework.test.transaction.TransactionTestUtils.*; /** - * This class is a copy of {@link ProgrammaticTxMgmtTests} that has been modified - * to run with TestNG. + * This class is a copy of the JUnit-based {@link ProgrammaticTxMgmtTests} class + * that has been modified to run with TestNG. * * @author Sam Brannen * @since 4.1 @@ -54,12 +53,12 @@ import static org.springframework.test.transaction.TransactionTestUtils.*; @ContextConfiguration public class ProgrammaticTxMgmtTestNGTests extends AbstractTransactionalTestNGSpringContextTests { - private String testName; + private String method; @Override public void run(IHookCallBack callBack, ITestResult testResult) { - this.testName = testResult.getMethod().getMethodName(); + this.method = testResult.getMethod().getMethodName(); super.run(callBack, testResult); } @@ -71,20 +70,15 @@ public class ProgrammaticTxMgmtTestNGTests extends AbstractTransactionalTestNGSp @AfterTransaction public void afterTransaction() { - switch (testName) { - case "commitTxAndStartNewTx": { - assertUsers("Dogbert"); - break; - } + switch (method) { + case "commitTxAndStartNewTx": case "commitTxButDoNotStartNewTx": { assertUsers("Dogbert"); break; } - case "rollbackTxAndStartNewTx": { - assertUsers("Dilbert"); - break; - } - case "rollbackTxButDoNotStartNewTx": { + case "rollbackTxAndStartNewTx": + case "rollbackTxButDoNotStartNewTx": + case "startTxWithExistingTransaction": { assertUsers("Dilbert"); break; } @@ -92,12 +86,8 @@ public class ProgrammaticTxMgmtTestNGTests extends AbstractTransactionalTestNGSp assertUsers("Dilbert", "Dogbert"); break; } - case "startTxWithExistingTransaction": { - assertUsers("Dilbert"); - break; - } default: { - fail("missing 'after transaction' assertion for test method: " + testName); + fail("missing 'after transaction' assertion for test method: " + method); } } } @@ -258,12 +248,11 @@ public class ProgrammaticTxMgmtTestNGTests extends AbstractTransactionalTestNGSp // ------------------------------------------------------------------------- private void assertUsers(String... users) { - List> results = jdbcTemplate.queryForList("select name from user"); - List names = new ArrayList(); - for (Map map : results) { - names.add((String) map.get("name")); - } - assertEquals(Arrays.asList(users), names); + List expected = Arrays.asList(users); + Collections.sort(expected); + List actual = jdbcTemplate.queryForList("select name from user", String.class); + Collections.sort(actual); + assertEquals("Users in database;", expected, actual); } diff --git a/spring-test/src/test/java/org/springframework/test/context/transaction/programmatic/ProgrammaticTxMgmtTests.java b/spring-test/src/test/java/org/springframework/test/context/transaction/programmatic/ProgrammaticTxMgmtTests.java index 5e0f4d25a1..c5ebd1daa7 100644 --- a/spring-test/src/test/java/org/springframework/test/context/transaction/programmatic/ProgrammaticTxMgmtTests.java +++ b/spring-test/src/test/java/org/springframework/test/context/transaction/programmatic/ProgrammaticTxMgmtTests.java @@ -16,10 +16,9 @@ package org.springframework.test.context.transaction.programmatic; -import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.List; -import java.util.Map; import javax.sql.DataSource; @@ -44,8 +43,8 @@ import static org.junit.Assert.*; import static org.springframework.test.transaction.TransactionTestUtils.*; /** - * Integration tests that verify support for programmatic transaction management - * within the Spring TestContext Framework. + * JUnit-based integration tests that verify support for programmatic transaction + * management within the Spring TestContext Framework. * * @author Sam Brannen * @since 4.1 @@ -67,19 +66,14 @@ public class ProgrammaticTxMgmtTests extends AbstractTransactionalJUnit4SpringCo public void afterTransaction() { String method = testName.getMethodName(); switch (method) { - case "commitTxAndStartNewTx": { - assertUsers("Dogbert"); - break; - } + case "commitTxAndStartNewTx": case "commitTxButDoNotStartNewTx": { assertUsers("Dogbert"); break; } - case "rollbackTxAndStartNewTx": { - assertUsers("Dilbert"); - break; - } - case "rollbackTxButDoNotStartNewTx": { + case "rollbackTxAndStartNewTx": + case "rollbackTxButDoNotStartNewTx": + case "startTxWithExistingTransaction": { assertUsers("Dilbert"); break; } @@ -87,10 +81,6 @@ public class ProgrammaticTxMgmtTests extends AbstractTransactionalJUnit4SpringCo assertUsers("Dilbert", "Dogbert"); break; } - case "startTxWithExistingTransaction": { - assertUsers("Dilbert"); - break; - } default: { fail("missing 'after transaction' assertion for test method: " + method); } @@ -253,12 +243,11 @@ public class ProgrammaticTxMgmtTests extends AbstractTransactionalJUnit4SpringCo // ------------------------------------------------------------------------- private void assertUsers(String... users) { - List> results = jdbcTemplate.queryForList("select name from user"); - List names = new ArrayList(); - for (Map map : results) { - names.add((String) map.get("name")); - } - assertEquals(Arrays.asList(users), names); + List expected = Arrays.asList(users); + Collections.sort(expected); + List actual = jdbcTemplate.queryForList("select name from user", String.class); + Collections.sort(actual); + assertEquals("Users in database;", expected, actual); }