unitarias test pruebas ejemplos curso configuracion baeldung spring transactions junit mocking jta

spring - test - ¿Cómo me burlo de un TransactionManager en una prueba JUnit,(fuera del contenedor)?



pruebas unitarias spring boot (1)

Simplemente creamos una implementación vacía para el administrador de transacciones y nos aseguramos de que esta implementación se use en el contexto de primavera utilizado por la prueba unitaria

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 { } }

.. y en el archivo spring-xml entonces parece ...

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

Estoy usando Spring 3.1.0.RELEASE, JUnit 4.8.1 y, en última instancia, estoy implementando mi aplicación en un servidor JBoss 4.2 (lo sé, lo sé). Como parte de la configuración de mi prueba de unidad, tengo esto en mi contexto de aplicación de prueba de primavera ...

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

Por supuesto, ahora esto falla porque no hay nada vinculado al nombre JNDI, "UserTransaction". ¿Cómo me burlo de un administrador de transacciones? Estoy usando el framework org.mockejb pero abierto a cualquier marco de burla adecuado.