junit是一个优秀的开源的java单元测试框架,也是目前比较流行且使用频率比较高的一款,今天我们就来讲讲junit怎么用。junit主要用于白盒测试、回归测试、单元测试。 首先我们来新建工程,还是跟原来一样建立。建立之后看看pom。xml文件,已经默认的加入了junit的依赖dependencygroupIdorg。springframework。bootgroupIdspringbootstartertestartifactIdscopetestscopedependency 看看我们建立的工程,idea都给我们生成了什么样的目录结构 我们的junit单元测试文件就放在testjava下面,我们先看一个基础用法,在Lesson9ApplicationTest里面增加一个方法:SpringBootTestRunWith(SpringRunner。class)使用SpringRunner加载上下文publicclassLesson9ApplicationTests{Test这个是一个test单元测试文件publicvoidtest1(){intnumnewInteger(1);Assert。assertEquals(num,1);}} 在这个方法的左边会有响应的图标,第一个叶子样的图标标注这个是一个springboot的测试文件,在启动的时候能看到我们正常启动Application的banner图标,说明加载了springboot的上下文。 我们直接在第二个圆形加三角形的图标点击,就能运行了。 junit连常用的注解RunWith:标识为JUnit的运行环境;SpringBootTest:获取启动类、加载配置,确定装载SpringBTest:声明需要测试的方法;BeforeClass:针对所有测试,只执行一次,且必须为AfterClass:针对所有测试,只执行一次,且必须为Before:每个测试方法前都会执行的方法;After:每个测试方法前都会执行的方法;Ignore:忽略方法; 我们一般使用Test的注解基本就差不多了,一般BeforeClass会用于加载配置,而AfterClass一般会用于释放资源。 上面的代码有一个陌生的Assert断言,这个东西是干嘛的呢,简单的可以理解为if条件。断言里面的值应该返回什么样的值。Assert。assertEquals(num,1)。 这个你可以理解为if(num1)System。out。println(ok);但是这个方法有很多种重载的类assertTrueFalse判定第一个条件是true还是falseassertEquals接收两个参数,第一个是参数值,第二个是希望返回的值assertNotEquals这个跟上一个方法恰好相反,相当于if(param!param2)assertSameNotSame判定两个变量是否指向同一个内存地址Testpublicvoidtest2(){ListStringlist1Arrays。asList(a,b);ListStringlist2Arrays。asList(a,b);ListStringlist3list2;Assert。assertEquals(list1,list2);通过Assert。assertEquals(list3,list2);通过Assert。assertSame(list3,list2);通过Assert。assertSame(list1,list2);不通过,因为list1和list2分别指向不同的内存地址}web模拟 我们在SpringBootTest注解上面加上使用随机端口启动SpringBootTest(webEnvironmentSpringBootTest。WebEnvironment。RANDOMPORT)AutowiredprivateTestRestTemplatetestRestTTestpublicvoidtest3()throwsURISyntaxException{StringresulttestRestTemplate。getForObject(demotest1,String。class);Assert。assertEquals(result,hellojunittest);} TestRestTemplate是不是很熟悉,是的Springboot还为RestTemplate建立了专门的测试类。 注意:一定要使用随机端口启动,否则执行失败。但是笔者感觉这个专门写个测试类很麻烦,还不如直接使用postman测试,你们觉得呢?数据库测试TestTransactionalpublicvoidtest4(){UserusernewUser();user。setName(abc);user。setAge(19);user。setBirthday(newDate());userJpa。save(user);Assert。assertTrue(user。getId()!null);Assert。assertNotNull(user。getId());} 注意:如果不想污染数据库,可以加上Transactional,执行成功之后数据库事务会回滚,不会将数据真正插入到数据库中。 idea为我们快速的创建test单元测试文件提供了快捷方式 选中需要进行单元测试的方法,右键gotoTest就会为我们创建单元测试文件。