Rename SQL script annotations in the TCF
Prior to this commit, SQL script annotations and related classes in the TestContext framework (TCF) were named DatabaseInitializer*. However, these annotations are not used only for initialization and are therefore misleading when used for cleaning up the database. This commit refines the names of annotations and related classes for configuring SQL scripts to be executed for integration tests in the TCF as follows: - @DatabaseInitializer -> @Sql - @DatabaseInitializers -> @SqlGroup - DatabaseInitializerTestExecutionListener -> SqlScriptsTestExecutionListener A special thanks goes out to the following attendees of the Zurich Hackergarten meeting last night for their collective brainstorming: @aalmiray, @atsticks, @ollin, @simkuenzi, @tangresh, @vyazelenko. Issue: SPR-7655
This commit is contained in:
@@ -25,19 +25,19 @@ import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Integration tests that verify support for custom SQL script syntax
|
||||
* configured via {@link DatabaseInitializer @DatabaseInitializer}.
|
||||
* configured via {@link Sql @Sql}.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 4.1
|
||||
*/
|
||||
@ContextConfiguration(classes = EmptyDatabaseConfig.class)
|
||||
@DirtiesContext
|
||||
public class CustomScriptSyntaxDatabaseInitializerTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
public class CustomScriptSyntaxSqlScriptsTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
|
||||
@Test
|
||||
@DatabaseInitializers({//
|
||||
@DatabaseInitializer("schema.sql"),//
|
||||
@DatabaseInitializer(//
|
||||
@SqlGroup({//
|
||||
@Sql("schema.sql"),//
|
||||
@Sql(//
|
||||
scripts = "data-add-users-with-custom-script-syntax.sql",//
|
||||
commentPrefix = "`",//
|
||||
blockCommentStartDelimiter = "#$",//
|
||||
@@ -30,9 +30,9 @@ import static org.junit.Assert.*;
|
||||
* @since 4.1
|
||||
*/
|
||||
@ContextConfiguration(classes = EmptyDatabaseConfig.class)
|
||||
@DatabaseInitializer
|
||||
@Sql
|
||||
@DirtiesContext
|
||||
public class DefaultScriptDetectionDatabaseInitializerTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
public class DefaultScriptDetectionSqlScriptsTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
|
||||
@Test
|
||||
public void classLevel() {
|
||||
@@ -40,7 +40,7 @@ public class DefaultScriptDetectionDatabaseInitializerTests extends AbstractTran
|
||||
}
|
||||
|
||||
@Test
|
||||
@DatabaseInitializer
|
||||
@Sql
|
||||
public void methodLevel() {
|
||||
assertNumUsers(3);
|
||||
}
|
||||
@@ -29,26 +29,25 @@ import static java.lang.annotation.RetentionPolicy.*;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Integration tests that verify support for using
|
||||
* {@link DatabaseInitializer @DatabaseInitializer} and
|
||||
* {@link DatabaseInitializers @DatabaseInitializers} as a meta-annotations.
|
||||
* Integration tests that verify support for using {@link Sql @Sql} and
|
||||
* {@link SqlGroup @SqlGroup} as a meta-annotations.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 4.1
|
||||
*/
|
||||
@ContextConfiguration(classes = EmptyDatabaseConfig.class)
|
||||
@DirtiesContext
|
||||
public class MetaAnnotationDatabaseInitializerTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
public class MetaAnnotationSqlScriptsTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
|
||||
@Test
|
||||
@MetaDbInitializer
|
||||
public void metaDatabaseInitializer() {
|
||||
@MetaSql
|
||||
public void metaSqlAnnotation() {
|
||||
assertNumUsers(1);
|
||||
}
|
||||
|
||||
@Test
|
||||
@MetaDbInitializers
|
||||
public void metaDatabaseInitializers() {
|
||||
@MetaSqlGroup
|
||||
public void metaSqlGroupAnnotation() {
|
||||
assertNumUsers(1);
|
||||
}
|
||||
|
||||
@@ -57,20 +56,16 @@ public class MetaAnnotationDatabaseInitializerTests extends AbstractTransactiona
|
||||
}
|
||||
|
||||
|
||||
@DatabaseInitializer({ "drop-schema.sql", "schema.sql", "data.sql" })
|
||||
@Sql({ "drop-schema.sql", "schema.sql", "data.sql" })
|
||||
@Retention(RUNTIME)
|
||||
@Target(METHOD)
|
||||
static @interface MetaDbInitializer {
|
||||
static @interface MetaSql {
|
||||
}
|
||||
|
||||
@DatabaseInitializers({//
|
||||
@DatabaseInitializer("drop-schema.sql"),//
|
||||
@DatabaseInitializer("schema.sql"),//
|
||||
@DatabaseInitializer("data.sql") //
|
||||
})
|
||||
@SqlGroup({ @Sql("drop-schema.sql"), @Sql("schema.sql"), @Sql("data.sql") })
|
||||
@Retention(RUNTIME)
|
||||
@Target(METHOD)
|
||||
static @interface MetaDbInitializers {
|
||||
static @interface MetaSqlGroup {
|
||||
}
|
||||
|
||||
}
|
||||
@@ -34,17 +34,17 @@ import org.springframework.transaction.PlatformTransactionManager;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Integration tests for {@link DatabaseInitializer @DatabaseInitializer} that
|
||||
* verify support for multiple {@link DataSource}s and {@link PlatformTransactionManager}s.
|
||||
* Integration tests for {@link Sql @Sql} that verify support for multiple
|
||||
* {@link DataSource}s and {@link PlatformTransactionManager}s.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 4.1
|
||||
* @see MultipleDataSourcesAndTransactionManagersTransactionalDatabaseInitializerTests
|
||||
* @see MultipleDataSourcesAndTransactionManagersTransactionalSqlScriptsTests
|
||||
*/
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration
|
||||
@DirtiesContext
|
||||
public class MultipleDataSourcesAndTransactionManagersDatabaseInitializerTests {
|
||||
public class MultipleDataSourcesAndTransactionManagersSqlScriptsTests {
|
||||
|
||||
@Autowired
|
||||
private DataSource dataSource1;
|
||||
@@ -54,13 +54,13 @@ public class MultipleDataSourcesAndTransactionManagersDatabaseInitializerTests {
|
||||
|
||||
|
||||
@Test
|
||||
@DatabaseInitializer(scripts = "data-add-dogbert.sql", dataSource = "dataSource1", transactionManager = "txMgr1")
|
||||
@Sql(scripts = "data-add-dogbert.sql", dataSource = "dataSource1", transactionManager = "txMgr1")
|
||||
public void database1() {
|
||||
assertUsersExist(new JdbcTemplate(dataSource1), "Dilbert", "Dogbert");
|
||||
}
|
||||
|
||||
@Test
|
||||
@DatabaseInitializer(scripts = "data-add-catbert.sql", dataSource = "dataSource2", transactionManager = "txMgr2")
|
||||
@Sql(scripts = "data-add-catbert.sql", dataSource = "dataSource2", transactionManager = "txMgr2")
|
||||
public void database2() {
|
||||
assertUsersExist(new JdbcTemplate(dataSource2), "Dilbert", "Catbert");
|
||||
}
|
||||
@@ -35,7 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Exact copy of {@link MultipleDataSourcesAndTransactionManagersDatabaseInitializerTests},
|
||||
* Exact copy of {@link MultipleDataSourcesAndTransactionManagersSqlScriptsTests},
|
||||
* except that the test methods are transactional.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
@@ -44,7 +44,7 @@ import static org.junit.Assert.*;
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@ContextConfiguration
|
||||
@DirtiesContext
|
||||
public class MultipleDataSourcesAndTransactionManagersTransactionalDatabaseInitializerTests {
|
||||
public class MultipleDataSourcesAndTransactionManagersTransactionalSqlScriptsTests {
|
||||
|
||||
@Autowired
|
||||
private DataSource dataSource1;
|
||||
@@ -55,14 +55,14 @@ public class MultipleDataSourcesAndTransactionManagersTransactionalDatabaseIniti
|
||||
|
||||
@Test
|
||||
@Transactional("txMgr1")
|
||||
@DatabaseInitializer(scripts = "data-add-dogbert.sql", dataSource = "dataSource1", transactionManager = "txMgr1")
|
||||
@Sql(scripts = "data-add-dogbert.sql", dataSource = "dataSource1", transactionManager = "txMgr1")
|
||||
public void database1() {
|
||||
assertUsersExist(new JdbcTemplate(dataSource1), "Dilbert", "Dogbert");
|
||||
}
|
||||
|
||||
@Test
|
||||
@Transactional("txMgr2")
|
||||
@DatabaseInitializer(scripts = "data-add-catbert.sql", dataSource = "dataSource2", transactionManager = "txMgr2")
|
||||
@Sql(scripts = "data-add-catbert.sql", dataSource = "dataSource2", transactionManager = "txMgr2")
|
||||
public void database2() {
|
||||
assertUsersExist(new JdbcTemplate(dataSource2), "Dilbert", "Catbert");
|
||||
}
|
||||
@@ -32,9 +32,8 @@ import org.springframework.test.jdbc.JdbcTestUtils;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Integration tests which verify that scripts executed via
|
||||
* {@link DatabaseInitializer @DatabaseInitializer} will persist between
|
||||
* non-transactional test methods.
|
||||
* Integration tests which verify that scripts executed via {@link Sql @Sql}
|
||||
* will persist between non-transactional test methods.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 4.1
|
||||
@@ -42,9 +41,9 @@ import static org.junit.Assert.*;
|
||||
@RunWith(SpringJUnit4ClassRunner.class)
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
@ContextConfiguration(classes = EmptyDatabaseConfig.class)
|
||||
@DatabaseInitializer({ "schema.sql", "data.sql" })
|
||||
@Sql({ "schema.sql", "data.sql" })
|
||||
@DirtiesContext
|
||||
public class NonTransactionalDatabaseInitializerTests {
|
||||
public class NonTransactionalSqlScriptsTests {
|
||||
|
||||
protected JdbcTemplate jdbcTemplate;
|
||||
|
||||
@@ -61,7 +60,7 @@ public class NonTransactionalDatabaseInitializerTests {
|
||||
}
|
||||
|
||||
@Test
|
||||
@DatabaseInitializers(@DatabaseInitializer("data-add-dogbert.sql"))
|
||||
@Sql("data-add-dogbert.sql")
|
||||
// test##_ prefix is required for @FixMethodOrder.
|
||||
public void test02_methodLevelScripts() {
|
||||
assertNumUsers(2);
|
||||
@@ -27,14 +27,14 @@ import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Transactional integration tests that verify rollback semantics for
|
||||
* {@link DatabaseInitializer @DatabaseInitializer} support.
|
||||
* {@link Sql @Sql} support.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 4.1
|
||||
*/
|
||||
@ContextConfiguration(classes = PopulatedSchemaDatabaseConfig.class)
|
||||
@DirtiesContext
|
||||
public class PopulatedSchemaTransactionalDatabaseInitializerTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
public class PopulatedSchemaTransactionalSqlScriptsTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
|
||||
@BeforeTransaction
|
||||
@AfterTransaction
|
||||
@@ -43,7 +43,7 @@ public class PopulatedSchemaTransactionalDatabaseInitializerTests extends Abstra
|
||||
}
|
||||
|
||||
@Test
|
||||
@DatabaseInitializers(@DatabaseInitializer("data-add-dogbert.sql"))
|
||||
@SqlGroup(@Sql("data-add-dogbert.sql"))
|
||||
public void methodLevelScripts() {
|
||||
assertNumUsers(1);
|
||||
}
|
||||
@@ -27,14 +27,14 @@ import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Transactional integration tests that verify commit semantics for
|
||||
* {@link DatabaseInitializer#requireNewTransaction}.
|
||||
* {@link Sql#requireNewTransaction}.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 4.1
|
||||
*/
|
||||
@ContextConfiguration(classes = PopulatedSchemaDatabaseConfig.class)
|
||||
@DirtiesContext
|
||||
public class RequiresNewTransactionDatabaseInitializerTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
public class RequiresNewTransactionSqlScriptsTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
|
||||
@BeforeTransaction
|
||||
public void beforeTransaction() {
|
||||
@@ -42,7 +42,7 @@ public class RequiresNewTransactionDatabaseInitializerTests extends AbstractTran
|
||||
}
|
||||
|
||||
@Test
|
||||
@DatabaseInitializers(@DatabaseInitializer(scripts = "data-add-dogbert.sql", requireNewTransaction = true))
|
||||
@SqlGroup(@Sql(scripts = "data-add-dogbert.sql", requireNewTransaction = true))
|
||||
public void methodLevelScripts() {
|
||||
assertNumUsers(1);
|
||||
}
|
||||
@@ -24,14 +24,14 @@ import static org.junit.Assert.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
/**
|
||||
* Unit tests for {@link DatabaseInitializerTestExecutionListener}.
|
||||
* Unit tests for {@link SqlScriptsTestExecutionListener}.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 4.1
|
||||
*/
|
||||
public class DatabaseInitializerTestExecutionListenerTests {
|
||||
public class SqlScriptsTestExecutionListenerTests {
|
||||
|
||||
private final DatabaseInitializerTestExecutionListener listener = new DatabaseInitializerTestExecutionListener();
|
||||
private final SqlScriptsTestExecutionListener listener = new SqlScriptsTestExecutionListener();
|
||||
|
||||
private final TestContext testContext = mock(TestContext.class);
|
||||
|
||||
@@ -76,7 +76,7 @@ public class DatabaseInitializerTestExecutionListenerTests {
|
||||
|
||||
// -------------------------------------------------------------------------
|
||||
|
||||
@DatabaseInitializer
|
||||
@Sql
|
||||
static class MissingValueAndScriptsAtClassLevel {
|
||||
|
||||
public void foo() {
|
||||
@@ -85,14 +85,14 @@ public class DatabaseInitializerTestExecutionListenerTests {
|
||||
|
||||
static class MissingValueAndScriptsAtMethodLevel {
|
||||
|
||||
@DatabaseInitializer
|
||||
@Sql
|
||||
public void foo() {
|
||||
}
|
||||
}
|
||||
|
||||
static class ValueAndScriptsDeclared {
|
||||
|
||||
@DatabaseInitializer(value = "foo", scripts = "bar")
|
||||
@Sql(value = "foo", scripts = "bar")
|
||||
public void valueAndScriptsDeclared() {
|
||||
}
|
||||
}
|
||||
@@ -24,15 +24,16 @@ import org.junit.runners.MethodSorters;
|
||||
import org.springframework.jdbc.BadSqlGrammarException;
|
||||
import org.springframework.test.annotation.DirtiesContext;
|
||||
import org.springframework.test.context.ContextConfiguration;
|
||||
import org.springframework.test.context.jdbc.DatabaseInitializer.ExecutionPhase;
|
||||
import org.springframework.test.context.jdbc.Sql.ExecutionPhase;
|
||||
import org.springframework.test.context.junit4.AbstractTransactionalJUnit4SpringContextTests;
|
||||
import org.springframework.test.context.transaction.AfterTransaction;
|
||||
|
||||
import static org.junit.Assert.*;
|
||||
import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.*;
|
||||
|
||||
/**
|
||||
* Transactional integration tests for {@link DatabaseInitializer @DatabaseInitializer}
|
||||
* that verify proper support for {@link ExecutionPhase#AFTER_TEST_METHOD}.
|
||||
* Transactional integration tests for {@link Sql @Sql} that verify proper
|
||||
* support for {@link ExecutionPhase#AFTER_TEST_METHOD}.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 4.1
|
||||
@@ -40,7 +41,7 @@ import static org.junit.Assert.*;
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
@ContextConfiguration(classes = EmptyDatabaseConfig.class)
|
||||
@DirtiesContext
|
||||
public class TransactionalAfterTestMethodDatabaseInitializerTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
public class TransactionalAfterTestMethodSqlScriptsTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
|
||||
@Rule
|
||||
public TestName testName = new TestName();
|
||||
@@ -60,9 +61,9 @@ public class TransactionalAfterTestMethodDatabaseInitializerTests extends Abstra
|
||||
}
|
||||
|
||||
@Test
|
||||
@DatabaseInitializers({//
|
||||
@DatabaseInitializer({ "schema.sql", "data.sql" }),//
|
||||
@DatabaseInitializer(scripts = "drop-schema.sql", executionPhase = ExecutionPhase.AFTER_TEST_METHOD) //
|
||||
@SqlGroup({//
|
||||
@Sql({ "schema.sql", "data.sql" }),//
|
||||
@Sql(scripts = "drop-schema.sql", executionPhase = AFTER_TEST_METHOD) //
|
||||
})
|
||||
// test## is required for @FixMethodOrder.
|
||||
public void test01() {
|
||||
@@ -70,7 +71,7 @@ public class TransactionalAfterTestMethodDatabaseInitializerTests extends Abstra
|
||||
}
|
||||
|
||||
@Test
|
||||
@DatabaseInitializers(@DatabaseInitializer({ "schema.sql", "data.sql", "data-add-dogbert.sql" }))
|
||||
@Sql({ "schema.sql", "data.sql", "data-add-dogbert.sql" })
|
||||
// test## is required for @FixMethodOrder.
|
||||
public void test02() {
|
||||
assertNumUsers(2);
|
||||
@@ -26,17 +26,16 @@ import org.springframework.test.context.junit4.AbstractTransactionalJUnit4Spring
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
/**
|
||||
* Transactional integration tests for {@link DatabaseInitializer @DatabaseInitializer}
|
||||
* support.
|
||||
* Transactional integration tests for {@link Sql @Sql} support.
|
||||
*
|
||||
* @author Sam Brannen
|
||||
* @since 4.1
|
||||
*/
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
@ContextConfiguration(classes = EmptyDatabaseConfig.class)
|
||||
@DatabaseInitializers(@DatabaseInitializer({ "schema.sql", "data.sql" }))
|
||||
@Sql({ "schema.sql", "data.sql" })
|
||||
@DirtiesContext
|
||||
public class TransactionalDatabaseInitializerTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
public class TransactionalSqlScriptsTests extends AbstractTransactionalJUnit4SpringContextTests {
|
||||
|
||||
@Test
|
||||
// test##_ prefix is required for @FixMethodOrder.
|
||||
@@ -45,7 +44,7 @@ public class TransactionalDatabaseInitializerTests extends AbstractTransactional
|
||||
}
|
||||
|
||||
@Test
|
||||
@DatabaseInitializers(@DatabaseInitializer({ "drop-schema.sql", "schema.sql", "data.sql", "data-add-dogbert.sql" }))
|
||||
@Sql({ "drop-schema.sql", "schema.sql", "data.sql", "data-add-dogbert.sql" })
|
||||
// test##_ prefix is required for @FixMethodOrder.
|
||||
public void test02_methodLevelScripts() {
|
||||
assertNumUsers(2);
|
||||
Reference in New Issue
Block a user