编写一个JPA测试用例

本文介绍如何编写一个JPA与MySQL整合的测试用例,通过引入SpringTest和JUnit包,利用@Test注解进行测试配置,确保对数据库的操作能够成功执行。测试中使用@Transactional注解进行事务管理,并通过设置回滚来观察数据库状态。
摘要由CSDN通过智能技术生成

整合了JPA和mysql需要来测试一下是否可以成功对数据库进行操作,这里写一个简单的单元测试来对之前配置的正确性进行验证。


依赖导入

首先导入需要的SpringTest包和Junit单元测试包。

        <!-- spring-boot-starter-test依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- junit依赖 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
测试代码

使用如下代码进行测试。
- @SpringBootTest(classes = {Application.class}),使用这个注解并将参数设置为SpringBoot启动类,作用是通过SpringBoot来扫描Bean,以实现自动装配。在1.4之前的版本使用注解@SpringApplicationConfigration
- 使用@Rollback来设置回滚,如果在测试环境,value设为false可以看到事物提交后的数据库。默认为true。在Spring4.2之前使用注解@TransactionConfiguration(transactionManager = "transactionManager", defaultRollback = false)来设置回滚。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = {Application.class})
@Rollback(value = true)
@Transactional(transactionManager = "transactionManager")
public class MysqlTest {
    private static Logger logger = LoggerFactory.getLogger(MysqlTest.class);

    @Autowired
    PlayerRepository playerRepository;
    @Autowired
    TeamRepository teamRepository;
    @Autowired
    PositionRepository positionRepository;

    @Before
    public void initData(){
        playerRepository.deleteAll();
        positionRepository.deleteAll();
        teamRepository.deleteAll();

        Team team = new Team();
        team.setName("湖人队");
        teamRepository.save(team);
        Assert.assertNotNull(team.getId());

        Position position = new Position();
        position.setName("SG");
        positionRepository.save(position);
        Assert.assertNotNull(position.getId());

        Player player = new Player();
        player.setName("Kobe Bryant");
        player.setCreatedate(new Date());
        player.setTeam(team);
        List<Position> positions = positionRepository.findAll();
        Assert.assertNotNull(positions);
        player.setPosition(positions);

        playerRepository.save(player);
        Assert.assertNotNull(player.getId());
    }

    @Test
    public void findPage(){
        Pageable pageable = new PageRequest(0, 10, new Sort(Sort.Direction.ASC, "id"));
        Page<Player> page = playerRepository.findAll(pageable);
        Assert.assertNotNull(page);

        for(Player player: page.getContent()){
            logger.info("\n========player======== player name:{}, team name:{}, position name:{}\n",
                    player.getName(), player.getTeam().getName(), player.getPositions().get(0).getName());
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值