2012-08-02 5 views
12

私はSpring 3.1.0.RELEASE、JUnit 4.8.1を使用しており、最終的にJBoss 4.2サーバーにアプリケーションをデプロイしています(私は知っています)。 JNDI名にバインドされたもの、ありませんので、私のユニットテストのセットアップの一環として、私は...私の春のテストアプリケーションのコンテキストでもちろんJUnitテスト(コンテナの外)でTransactionManagerをモックするにはどうすればよいですか?

<bean id="transactionManager" 
    class="org.springframework.transaction.jta.JtaTransactionManager"> 
     <property name="userTransactionName"> 
     <value>UserTransaction</value> 
    </property> 
</bean> 

これを持って、今これは失敗「のUserTransactionは。」どのようにトランザクションマネージャを模擬しますか?私はorg.mockejbフレームワークを使用していますが、適切なmockingフレームワークを公開しています。

答えて

12

我々は単にルックス、トランザクションマネージャの空のimplementaionを作成し、この実装は、ユニットテスト

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 { 

    } 

} 

で使用される春・コンテキストで使用されていることを確認...と春-xmlファイルでlike ...

<bean id="transactionManager" class="sample.MockedTransactionManager"/>