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

Posted iceywu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了junit测试操作数据库时,每次都会多添加一条记录?相关的知识,希望对你有一定的参考价值。

今天使用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);
    }
}

 

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

技术图片

 

 

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

原因如下:

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

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

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

以上是关于junit测试操作数据库时,每次都会多添加一条记录?的主要内容,如果未能解决你的问题,请参考以下文章

(15)SpringBoot使用Junit单元测试

如何为每一行将 DateTime 列增加一秒?

spring junit

打印机现在每打印一张都会多打出一张空白页来,这是怎么回事?

在测试之间传递JUnit数据

org.junit.ComparisonFailure具有相同的结果