Polishing tests in spring-test

This commit is contained in:
Sam Brannen
2014-07-03 19:33:20 +02:00
parent 62351e0f6e
commit 0d710f197e
4 changed files with 52 additions and 66 deletions

View File

@@ -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<String> expected = Arrays.asList(users);
Collections.sort(expected);
List<String> actual = jdbcTemplate.queryForList("select name from user", String.class);
Collections.sort(actual);
assertEquals("Users in database;", expected, actual);
}

View File

@@ -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<String> expected = Arrays.asList(users);
Collections.sort(expected);
List<String> actual = jdbcTemplate.queryForList("select name from user", String.class);
Collections.sort(actual);
assertEquals("Users in database;", expected, actual);
}

View File

@@ -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<Map<String, Object>> results = jdbcTemplate.queryForList("select name from user");
List<String> names = new ArrayList<String>();
for (Map<String, Object> map : results) {
names.add((String) map.get("name"));
}
assertEquals(Arrays.asList(users), names);
List<String> expected = Arrays.asList(users);
Collections.sort(expected);
List<String> actual = jdbcTemplate.queryForList("select name from user", String.class);
Collections.sort(actual);
assertEquals("Users in database;", expected, actual);
}

View File

@@ -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 <em>Spring TestContext Framework</em>.
* JUnit-based integration tests that verify support for programmatic transaction
* management within the <em>Spring TestContext Framework</em>.
*
* @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<Map<String, Object>> results = jdbcTemplate.queryForList("select name from user");
List<String> names = new ArrayList<String>();
for (Map<String, Object> map : results) {
names.add((String) map.get("name"));
}
assertEquals(Arrays.asList(users), names);
List<String> expected = Arrays.asList(users);
Collections.sort(expected);
List<String> actual = jdbcTemplate.queryForList("select name from user", String.class);
Collections.sort(actual);
assertEquals("Users in database;", expected, actual);
}