单元测试 @Transactional 注解

简单的对比介绍下用 @Transactional 注解和 不使用的区别

 @Before
    public void setUp() throws Exception {
        Software software = new Software();
        software.setViewable(false);
        software.setSoftChName("ruanjian");
        Software soft = softwareRepository.save(software);
        LOG.info("保存成功,软件名为:" + soft.getSoftChName());

        for (int i = 0; i <5 ; i++) {
            Software so=new Software();
            so.setSoftChName("软件"+i);
            so.setViewable(true);
            Software ware=softwareRepository.save(so);
            LOG.info("软件名"+ware.getSoftChName());
        }
    }

不使用该注解 -控制台打印

单元测试 @Transactional 注解_第1张图片


使用@Transactional注解 -控制台打印
单元测试 @Transactional 注解_第2张图片


使用@Transactional注解,Test类中每个方法执行完之后都会默认清空虚拟数据库中的数据,因此便不再需要每次执行完都要清空数据。
另一种方法就是加一个@after 方法

   @After
    public void teraDown(){
        System.out.println("原数据:"+softwareRepository.findAll().size());
        softwareRepository.deleteAllInBatch();
        System.out.println("清空后的数据:"+softwareRepository.findAll().size());
    }

控制台打印输出

如果不使用@Transactional 注解,同时也没有@after 方法清空数据库,那么@before 中的数据将会重复创建,数据将会积累。分情况使用。

你可能感兴趣的:(单元测试,java)