【问题标题】:make spring test method NOT transactional使弹簧测试方法不是事务性的
【发布时间】:2013-10-04 12:12:59
【问题描述】:

我有这门课

@TransactionConfiguration(defaultRollback = false)
public class CandidateServiceTest extends AbstractServiceTest {
        @Test
    public void add() {
        }
}


@ContextConfiguration(locations = { "classpath:/test/BeanConfig.xml" })
public class AbstractServiceTest  extends AbstractTransactionalJUnit4SpringContextTests{
 ...
}

是否存在方法add() 不是事务性的?

【问题讨论】:

    标签: java spring testing transactions


    【解决方案1】:

    您可以使用@NotTransactional 注释。

    @TransactionConfiguration(defaultRollback = false)
    public class CandidateServiceTest extends AbstractServiceTest {
    
        @Test
        @NotTransactional
        public void add() {
            ...
        }
    }
    

    编辑

    由于 @NotTransactional 已被弃用,Spring 文档建议您将事务性和非事务性测试拆分为不同的类。

    【讨论】:

    • 谢谢,但在 javaDoc 中写道,它是不推荐使用的注释,我必须使用 BeforeTransaction 或 AfterTransaction。但我不明白如何使用它。
    【解决方案2】:

    您可以使用 org.springframework.test.annotation.Rollback 注释使用 true 或 false arg 注释测试方法

    【讨论】:

    • 如果我在方法 add 中调用两个事务方法,我想使用两个事务
    • Видимо по русски будет понятнее。 Я так понял, эта аннотация управляет откатывать транзакцию после выполнения метода или нет。 А мой вопрос о том как сделать так, чтобы на тест не открывалась новая транзакция。
    猜你喜欢
    • 2019-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 2013-01-11
    • 2013-06-17
    • 1970-01-01
    • 2018-11-16
    相关资源
    最近更新 更多