当前位置: 首页 > 知识库问答 >
问题:

Spring4 Junit4测试:@TransactionConfiguration VS@Transactional,只使用一个还是一起使用?

田琛
2023-03-14

在我的junit测试用例中:

>

  • 我只在类中使用@transactional或一个,每个测试方法都会回滚,因为每个方法都在运行一个事务。我在方法处添加它,然后分配的方法将回滚。

    我在类中只使用@TransactionConfiguration(defaultRollback=true),但是事务不起作用。

    我在类中一起使用@交易和@TransactionConfiguration(defaultRollback=true),它也将被回滚。

    我的问题:

    >

    我看到@transactional默认bean名称是事务管理器,回滚是TRUE,所以我只在类中添加它,而不是@TransactionConfiguration?

    @事务必须注释,@TransactionConfiguration是否仅在multi-transactionManager情况下分配事务管理器?

  • 共有2个答案

    施永宁
    2023-03-14

    在https://docs.spring.io/spring/docs/4.3.x/javadoc-api/org/springframework/test/context/transaction/TransactionConfiguration.html中,他们说@TransactionConfiguration是“已弃用的”和“从Spring框架4.2开始,在类级别使用@Rollback或@Commit,在@Transactional中使用transactionManager限定符”。

    傅旺
    2023-03-14
    1. @transactional使每个方法都在一个事务中运行,您可以通过@transactional进行配置、隔离等
     类似资料:
    • 我使用的是Spring Boot 1.4.0。M3。 我有一个,它有一个,应该是唯一的: 使用Spring数据存储库,我想测试使用重复用户名时是否会出现异常。此测试工作: 但是,当使用添加时,此测试失败: 但是查看日志,会抛出: 2016-05-24 09:05:16.619错误22790---[主]o.h.发动机。jdbc。spi。SqlExceptionHelper:唯一索引或主键冲突:“UK

    • 我想用Jest做一个测试。 我使用

    • 问题内容: 我有一种将用于发送电子邮件的方法。我想锁定此方法,以便每次只有一个线程可以访问它,其余线程同时存储。我应该同步方法还是使用spring @transactional PROPAGATION_REQUIRED? 在我的服务层 问题答案: 为什么不通过不使用任何实例级别的东西使该方法成为线程安全的呢? 但是,我看不到Spring的事务管理如何适合这里。我的意思是Spring提供几个事务管理

    • 我是新手。我使用Gradle1.10和Ubuntu13。 我想知道是否有任何命令只执行一个单元测试类,类似于SBT中的。

    • 我试图使用REST Sandured测试一个REST控制器(使用Quarkus)endpoint。我想模拟一个注入到控制器中的类(最好是用Mockio),但只用于我的一个测试。或者每个测试用例获得不同的行为,而不必为每个测试提供单独的类。我不知道该怎么做? 我从文档中看到过这样做:

    • 我使用数据提供者方法和测试方法(测试方法中带有ITestContext参数)。一个简化的例子如下: 我的Retry类和RetryListener类如下: } 预期:当测试失败时,TestNG调用重试,然后数据提供程序应将相同的值返回给测试方法。 观察到:数据提供者返回相同的值,但测试方法没有运行,重试终止,下一个测试开始(数据提供者现在将返回新值) 但我的重试没有输入测试方法(测试方法不需要(in