2012-08-02 25 views
12

मैं वसंत 3.1.0.RELEASE, जुनीट 4.8.1 का उपयोग कर रहा हूं, और अंततः एक जेबॉस 4.2 सर्वर (मुझे पता है, मुझे पता है) में अपना आवेदन तैनात कर रहा है। मेरी इकाई परीक्षण सेट करने के भाग के रूप में, मैं अपने स्प्रिंग परीक्षण आवेदन संदर्भ में इस है ...मैं एक जुआनिट परीक्षण में (एक कंटेनर के बाहर) में एक लेनदेन प्रबंधक कैसे नकल कर सकता हूं?

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

, अभी यह विफल JNDI नाम, करने के लिए बाध्य नहीं है क्योंकि वहाँ "UserTransaction।" मैं लेनदेन प्रबंधक का नकल कैसे करूं? मैं org.mockejb ढांचे का उपयोग कर रहा हूं लेकिन किसी उपयुक्त मॉकिंग ढांचे के लिए खुला है।

उत्तर

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 फ़ाइल में तो दिखता है जैसे ..

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