如何在JUnit测试中(容器外部)模拟TransactionManager?
问题描述:
我使用Spring 3.1.0.RELEASE,JUnit 4.8.1,并最终将我的应用程序部署到JBoss 4.2服务器(我知道,我知道)。如设置我的单元测试的一部分,我有这个在我的春节,测试应用程序上下文...如何在JUnit测试中(容器外部)模拟TransactionManager?
<bean id="transactionManager"
class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="userTransactionName">
<value>UserTransaction</value>
</property>
</bean>
当然,现在这种失败,因为没有什么绑定到JNDI名,“UserTransaction的。”我如何模拟交易管理器?我使用的是org.mockejb框架,但是对任何合适的模拟框架都是开放的。
答
我们只需创建事务管理器的空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"/>