How do I mock a TransactionManager in a JUnit test, (outside of the container)?

后端 未结 2 1508
臣服心动
臣服心动 2021-01-08 00:57

I\'m using Spring 3.1.0.RELEASE, JUnit 4.8.1, and ultimately deploying my application to a JBoss 4.2 server (I know, I know). As part of setting up my unit test, I have thi

相关标签:
2条回答
  • 2021-01-08 01:43

    You can also use Mockito:

    PlatformTransactionManager manager = mock(PlatformTransactionManager.class);
    
    0 讨论(0)
  • 2021-01-08 01:48

    We simply create an empty implementaion for the transaction manager, and ensure that this implementation is used in the spring-context used by the unit test

    package sample;
    
    import org.springframework.stereotype.Service;
    import org.springframework.transaction.PlatformTransactionManager;
    import org.springframework.transaction.TransactionDefinition;
    import org.springframework.transaction.TransactionException;
    import org.springframework.transaction.TransactionStatus;
    
    public class MockedTransactionManager implements PlatformTransactionManager {
    
        @Override
        public TransactionStatus getTransaction(TransactionDefinition definition) throws TransactionException {
            return null;
        }
    
        @Override
        public void commit(TransactionStatus status) throws TransactionException {
    
        }
    
        @Override
        public void rollback(TransactionStatus status) throws TransactionException {
    
        }
    
    }
    

    .. and in the spring-xml file then looks like..

    <bean id="transactionManager" class="sample.MockedTransactionManager"/>
    
    0 讨论(0)
提交回复
热议问题