这是我的测试:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:repositoryContextTest.xml" })
@Transactional
@TransactionConfiguration(defaultRollback = true)
public class SeasonITest {
@Autowired
private SeasonDao seasonDao;
@Test
public void createSeason() throws Exception {
Season season = new Season();
season.setName("2012");
seasonDao.createSeason(season);
}
以及我的 bean 配置文件中的 dataSource
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost/tournament_system" />
<property name="username" value="root" />
<property name="password" value="root" />
<property name="defaultAutoCommit" value="false"/>
<property name="poolPreparedStatements" value="false"/>
<property name="maxOpenPreparedStatements" value="0"/>
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<tx:annotation-driven transaction-manager="transactionManager" />
当我运行此测试时,会在我的数据库中创建一条新记录。
我怎样才能回滚这个事务?
这是我看到的日志输出:
2012-06-15 15:00:02,173 [main] INFO - ionalTestExecutionListener -
Rolled back transaction after test execution for test context
[[TestContext@76db09 testClass = SeasonITest,
locations = array<String>['classpath:repositoryContextTest.xml'],
testInstance = org.toursys.repository.dao.SeasonITest@1265109,
testMethod = createSeason@SeasonITest, testException = [null]]]
更新:
下面的所有答案都想改变我不想要的逻辑或数据库引擎。所以我提供正确答案的声誉点:
为什么当我有这个时: @TransactionConfiguration(defaultRollback = true)
在事务配置测试中没有回滚以及如何修复它?