JUnit Test没有使用SpringJUnit4ClassRunner进行回滚

时间:2016-01-29 22:37:34

标签: java mysql junit

为了正确看待事情,一切都很好,直到我不得不格式化我的工作站。在我设法让项目运行之后,我运行了JUnit测试并且我的大多数测试都破了。问题是因为数据库没有回滚。也许我错过了一些配置,也许是mysql自己。

所以,这些是我的配置/源文件:

JUnit类声明:

@ContextConfiguration(locations = { "classpath*:testApplicationContext.xml" })
@RunWith(SpringJUnit4ClassRunner.class)
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
@Transactional
public class ClientServiceTest {

测试范围的applicationContext:

<bean id="dataSource"
    class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${driver}"/>
    <property name="url" value="${url}"/>
    <property name="username" value="${user}"/>
    <property name="password" value="${password}"/>
    <property name="defaultAutoCommit" value="false" />

    </bean>

1 个答案:

答案 0 :(得分:1)

检查您用于应用程序表的引擎。 MyISAM不支持交易。你应该使用InnoDB。

要检查引擎,请使用查询:

SELECT TABLE_NAME, ENGINE FROM information_schema.TABLES where TABLE_SCHEMA = 'your_database_name'