junit是一个优秀的开源java单元测试框架,也是比较流行和经常使用的。今天我们就来说说如何使用junit。Junit主要用于白盒测试、回归测试和单元测试。首先,让我们构建一个新项目,或者像以前一样构建它。查看创建后的pom.xml文件,junit依赖org.springframework.bootspring-boot-starter-testtest已添加default看看我们构建的项目,idea为我们生成了什么样的目录结构?我们的junit单元测试文件放在test/java下。先来看一个基本的用法,在Lesson9ApplicationTest中添加一个方法:@SpringBootTest@RunWith(SpringRunner.class)//使用SpringRunner加载上下文publicclassLesson9ApplicationTests{@Test//这是一个测试单元测试文件publicvoidtest1(){intnum=newInteger(1);Assert.assertEquals(num,1);}}这个方法的左边会有一个对应的图标。第一个叶状图标将其标记为springboot测试文件。启动的时候可以看到我们正常应用启动的banner图标,说明springboot加载了context。我们直接点击第二个圆圈√加三角图标就可以运行了。junit常用注解@RunWith:运行环境标记为JUnit;@SpringBootTest:获取启动类,加载配置,判断SpringBoot的加载;@Test:声明要测试的方法;@BeforeClass:所有测试只执行一次,并且必须是staticvoid;@AfterClass:所有测试只执行一次,必须是staticvoid;@Before:在每个测试方法之前会执行的方法;@After:在每个测试方法之前会执行的方法;@ignore:忽略方法;我们一般使用@Test注解,基本是一样的。一般@BeforeClass会用来加载配置,@AfterClass一般会用来释放资源。上面的代码有个比较陌生的Assert断言,这个东西是做什么的,可以简单理解为一个if条件。断言里面的值应该返回什么值。断言.assertEquals(num,1)。你可以理解为if(num==1)System.out.println("ok");但是这个方法有很多重载类assertTrue/False判断第一个条件是真还是假assertEquals接收两个参数,第一个是参数值,第二个是你要返回的值assertNotEquals这个正好相反前面的方法,相当于if(param!=param2)assertSame/NotSame判断两个变量是否指向同一个内存地址@Testpublicvoidtest2(){Listlist1=Arrays.asList("a","b");Listlist2=Arrays.asList("a","b");Listlist3=list2;断言。assertEquals(list1,list2);//通过Assert.assertEquals(list3,list2);//通过Assert.assertSame(list3,list2);//通过Assert.assertSame(list1,list2);//没有通过,因为list1和list2分别指向不同的内存地址}web模拟我们添加@SpringBootTest注解使用随机端口启动demo/test1",String.class);Assert.assertEquals(result,"hellojunittest");}TestRestTemplate你熟悉吗?是的,Springboot也为RestTemplate创建了一个专门的测试类。注意:一定要使用随机端口启动,否则会执行失败。但是笔者觉得写一个专门的测试类很麻烦。直接用postman测试比较好。你怎么认为?数据库测试@Test@Transactionalpublicvoidtest4(){Useruser=newUser();user.setName("abc");user.setAge(19);user.setBirthday(newDate());userJpa.save(user);Assert.assertTrue(user.getId()!=null);Assert.assertNotNull(user.getId());}注意:如果不想污染数据库,可以加上@Transactional。执行成功后,数据库事务会回滚,数据不会真正插入到数据库中。idea为我们提供了快速创建测试单元测试文件的快捷方式选择单元测试的方法,右键-->goto-->Test会为我们创建一个单元测试文件。文章已同步更新至Java实验室官网:https://javawu.com/archives/2808