복붙노트

[SPRING] 내 스프링 JPA 통합 테스트를 위해 일을 @Rollback를 가져올 수 없습니다

SPRING

내 스프링 JPA 통합 테스트를 위해 일을 @Rollback를 가져올 수 없습니다

이곳이 내가 가진 약간의 테스트 클래스입니다. 문제는 각 테스트 실행 후 트랜잭션을 롤백되지 않는 것입니다. 내가 뭘 잘못 했나? :)

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "/META-INF/catalog-spring.xml" })
@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true)
public class TermTest
{
    @Autowired
    private CatalogService service;
    @Rollback(true)
    @Test
    public void testSimplePersist()
    {   
        Term term = new Term();
        term.setDescription("Description");
        term.setName("BirdSubject8");
        term.setIsEnabled("F");
        term.setIsSystem("F");
        term.setTermType("TERM");
        service.createTerm(term);
    }
}

내 스프링 설정

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
    <property name="persistenceUnitName" value="catalog2"></property>
</bean>

<bean id="catalogService" class="com.moo.catalog.service.CatalogService">
    <property name="termDao" ref="termDao"></property>
</bean>

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

<bean id="transactionManager"
        class="org.springframework.orm.jpa.JpaTransactionManager">
    <property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>

<tx:annotation-driven />

해결법

  1. ==============================

    1.당신은 @TransactionConfiguration에 추가 @Transactional이 필요합니다 :

    당신은 @TransactionConfiguration에 추가 @Transactional이 필요합니다 :

    @RunWith(SpringJUnit4ClassRunner.class) 
    @ContextConfiguration(locations = { "/META-INF/catalog-spring.xml" }) 
    @TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = true) 
    @Transactional
    public class TermTest { ... }
    
  2. ==============================

    2.봄 4.0 이상에서 TransactionConfiguration은 더 이상 사용되지 않기 때문에

    봄 4.0 이상에서 TransactionConfiguration은 더 이상 사용되지 않기 때문에

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = "/config/spring-config.xml")
    @Transactional
    public class UserTest {
        @Rollback
        public void test(){
        }
    }
    
  3. from https://stackoverflow.com/questions/4098456/cannot-get-rollback-to-work-for-my-spring-jpa-integration-test by cc-by-sa and MIT license