junit测试操作数据库时,每次都会多添加一条记录?

cintmain 2020-02-23

今天使用juint时,测试了几个方法,分别为查询所有,查询单个,保存一个,更新一个,删除一个。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:bean.xml")
public class AccountServiceTest {
    @Autowired
    private IAccountService accountService;
    @Test
    public void tetsFindAll() {
        List<Account> accounts = accountService.findAllAccount();
        for (Account account : accounts) {
            System.out.println(account);
        }
    }

    @Test
    public void tetsFindOneById() {
        List<Account> accounts = accountService.findAllAccount();
        Account account = accountService.findOneById(1);
        System.out.println(account);
    }

    @Test
    public void tetsSave() {
        List<Account> accounts = accountService.findAllAccount();
        Account account = new Account();
        account.setName("双双");
        account.setMoney(13000F);
        accountService.saveAccount(account);
    }

    @Test
    public void tetsUpdate() {
        List<Account> accounts = accountService.findAllAccount();
        Account account = accountService.findOneById(4);
        account.setMoney(23456F);
        accountService.updateAccount(account);
    }

    @Test
    public void testDelete() {
        List<Account> accounts = accountService.findAllAccount();
        accountService.deleteAccount(7);
    }
}

但是发现一个问题:每次不论测试哪一个方法,数据库里都会新增加一条记录,这条记录是保存方法里的内容。

junit测试操作数据库时,每次都会多添加一条记录?

把测试类里面的保存方法去掉,再运行其他方法时,发现就没有新增加记录了。

原因如下:

我们知道应用程序都有一个入口,就是main方法,但是junit单元测试中,没有main方法也能执行,这是因为junit自己集成了一个main方法,该方法会判断当前测试类中有哪些方法有@Test注解,junit就让有Test注解的方法执行,所以保存方法也就被执行了。

可是问题来了,我每次都是在方法名上右键,只运行选中的那一个方法。。。

于是只好给save方法前面加了@Ignore注解,勉强解决了这个问题,如果以后有更好的方法回来更新。

相关推荐

zhangdy0 / 0评论 2020-05-01