2012-08-02 18 views
12

Spring 3.1.0.RELEASE, JUnit 4.8.1'i kullanıyorum ve son olarak bir JBoss 4.2 sunucusuna başvurumu dağıtıyorum (Biliyorum, biliyorum). Benim birim testini oluşturmanın bir parçası olarak, JNDI adı, bağlı hiçbir şey yoktur, çünküTransactionManager'ı JUnit testinde (kapsayıcının dışında) nasıl alayım?

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

, şu anda bu başarısız ... benim Bahar testi uygulaması bağlamında bu var "UserTransaction." Bir işlem yöneticisini nasıl alayım? Org.mockejb çerçevesini kullanıyorum ama herhangi bir uygun alay çerçevesine açık.

cevap

12

Biz sadece işlem yöneticisi için boş bir hayata geçmiştir oluşturmak ve .. bu uygulama ünitesi testi

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 { 

    } 

} 

tarafından kullanılan yay bağlamda kullanıldığından emin ve yay xml dosyasında ardından görünüyor gibi ..

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