替换import org.springframework.test.context.transaction.TransactionConfiguration;在Spring Test 4.3.1版本中?

时间:2016-09-21 17:46:20

标签: querydsl spring-test spring-test-mvc

我正在处理JPA QueryDSL示例。在这个例子中,我创建了PersonDaoTest.java。之前我使用较低版本的spring-test,因为客户要求更新它的最新版本,因此我使用了4.3.1.RELEASE。当我使用这个版本时,我看到import org.springframework.test.context.transaction.TransactionConfiguration;是@deprecated。任何人都可以告诉我在最新版本中更换import org.springframework.test.context.transaction.TransactionConfiguration;的内容吗?

PersonDaoTest.java

@ContextConfiguration("/test-context.xml")
@RunWith(SpringJUnit4ClassRunner.class)
@Transactional
@TransactionConfiguration(defaultRollback = true)
public class PersonDaoTest {

    @Autowired
    private PersonDao personDao;

    //

    @Test
    public void testCreation() {
        personDao.save(new Person("Erich", "Gamma"));
        final Person person = new Person("Kent", "Beck");
        personDao.save(person);
        personDao.save(new Person("Ralph", "Johnson"));

        final Person personFromDb = personDao.findPersonsByFirstnameQueryDSL("Kent").get(0);
        Assert.assertEquals(person.getId(), personFromDb.getId());
    }

    @Test
    public void testMultipleFilter() {
        personDao.save(new Person("Erich", "Gamma"));
        final Person person = personDao.save(new Person("Ralph", "Beck"));
        final Person person2 = personDao.save(new Person("Ralph", "Johnson"));

        final Person personFromDb = personDao.findPersonsByFirstnameAndSurnameQueryDSL("Ralph", "Johnson").get(0);
        Assert.assertNotSame(person.getId(), personFromDb.getId());
        Assert.assertEquals(person2.getId(), personFromDb.getId());
    }

    @Test
    public void testOrdering() {
        final Person person = personDao.save(new Person("Kent", "Gamma"));
        personDao.save(new Person("Ralph", "Johnson"));
        final Person person2 = personDao.save(new Person("Kent", "Zivago"));

        final Person personFromDb = personDao.findPersonsByFirstnameInDescendingOrderQueryDSL("Kent").get(0);
        Assert.assertNotSame(person.getId(), personFromDb.getId());
        Assert.assertEquals(person2.getId(), personFromDb.getId());
    }

    @Test
    public void testMaxAge() {
        personDao.save(new Person("Kent", "Gamma", 20));
        personDao.save(new Person("Ralph", "Johnson", 35));
        personDao.save(new Person("Kent", "Zivago", 30));

        final int maxAge = personDao.findMaxAge();
        Assert.assertTrue(maxAge == 35);
    }

    @Test
    public void testMaxAgeByName() {
        personDao.save(new Person("Kent", "Gamma", 20));
        personDao.save(new Person("Ralph", "Johnson", 35));
        personDao.save(new Person("Kent", "Zivago", 30));

        final Map<String, Integer> maxAge = personDao.findMaxAgeByName();
        Assert.assertTrue(maxAge.size() == 2);
        Assert.assertSame(35, maxAge.get("Ralph"));
        Assert.assertSame(30, maxAge.get("Kent"));
    }
}

enter image description here

1 个答案:

答案 0 :(得分:8)

文档存在的原因是:作为开发人员,您应该阅读它!

Javadoc for @TransactionConfiguration明确指出:

  

已弃用。

     

从Spring Framework 4.2开始,在课程中使用@Rollback@Commit   级别和transactionManager中的@Transactional限定符。

因此,您问题的答案只是@Rollback

但是......更重要的是,你的@TransactionConfiguration(defaultRollback=true)声明是无用的,因为无论如何默认为true。所以你可以完全删除它。

此致

Sam( Spring TestContext Framework的作者