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注解,勉强解决了这个问题,如果以后有更好的方法回来更新。
相关推荐
shirleypaddy 2020-10-19
qingmumu 2020-10-19
lustdevil 2020-10-18
ganlulululu 2020-10-12
lustdevil 2020-08-03
lustdevil 2020-07-18
lustdevil 2020-06-25
lustdevil 2020-06-21
zhengzf0 2020-06-21
宿命java 2020-06-15
JackYin 2020-06-14
dongxurr 2020-06-07
snowphy 2020-06-06
zhengzf0 2020-05-28
81901836 2020-05-26
Julywhj 2020-05-26