java - Spring 测试 : Rollback the database after testing the dao

标签 java spring

我正在寻找我已经测试过很多东西的所有互联网,但我找不到适用于我的代码的答案。

我想在运行测试后回滚我的数据库(或者在每次测试后我并不关心)

目前这是我的代码:

@Transactional
public class ApplicationServiceTest {

    private ApplicationService applicationService;

    @Test
    public void testAddApplication() throws ExceptionMessage
    {
        Application application = applicationService.addApplication("nom", true, "domaineFonctionnel");

        // [...] testing    
    }

    //[...] @Before and @After doing things
}

public class ApplicationService{

    private ApplicationDao applicationDao;

    public Application addApplication(String nom, boolean autorise, String domaineFonctionnel)
    {
        Application application = new Application();

        // [..] Initialise application with parameters

        applicationDao.addApplication(application);     
        return application;
    }
}

public class ApplicationDao extends Dao
{

    private static EntityManagerFactory entityManagerFactory;

    public void updateApplication(Application application) {

        entityManager = entityManagerFactory.createEntityManager();

        entityManager.getTransaction().begin();
        entityManager.merge(application); 
        entityManager.getTransaction().commit();

        entityManager.close();
    }
}

所以根据我的阅读,@Transactional 应该默认回滚我的交易。但事实并非如此。为什么?

(我尝试将@Transactional 添加到 dao 和服务中,但它没有改变任何东西)

最佳答案

如果您不在测试类中使用 SpringJUnit4ClassRunner 运行程序,则忽略 @Transactional 注释。

尝试添加它:

@RunWith(SpringJUnit4ClassRunner.class)  
@Transactional
public class ApplicationServiceTest {

关于java - Spring 测试 : Rollback the database after testing the dao,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41057580/

相关文章:

java - 流状态计算 : cumulative sums

java - 将本体显示为树

java - 如何使用java正则表达式识别字符的第四次出现

java - Spring Cloud数据流是否支持批处理

java - 由于 CORS,Spring 安全注销无法正常工作

java - 如何抑制 sun.reflect.Reflection 的专有 API 警告?

java - 代号一谷歌登录问题

java - 当我为 Hibernate session 工厂创建 bean 时使用 Spring MVC

java - Jhipster 上的 Elasticsearch,Spring

java - Spring RestTemplate 实现与 RestOperations 接口(interface)