Idea中Junit单元测试
Junit单元测试(以一个springboot项目为例)
新建的springboot项目目录结构如下

知识点学习
利用Assertions类中的静态方法进行断言判断
例:assertEquals判断是否是期望值
package com.yong.unittest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class UnitTest {
/*
* 利用Assertions类中的静态方法进行断言判断
* */
@Test
void unitTest(){
int result=3;
// 断言
Assertions.assertEquals(2,result);
}
}
运行结果

注解@BeforeEach
会在测试之前运行
package com.yong.unittest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class UnitTest {
/*
* 利用Assertions类中的静态方法进行断言判断
* */
@BeforeEach
void each(){
System.out.println("init");
}
@Test
void unitTest(){
System.out.println(32);
}
}

注解@BeforeEach
多个测试时会每次先运行加@BeforeEach的函数
package com.yong.unittest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class UnitTest {
/*
* 利用Assertions类中的静态方法进行断言判断
* */
@BeforeEach
void each(){
System.out.println("init");
}
@Test
void unitTest1(){
System.out.println(123);
}
@Test
void unitTest2(){
System.out.println(456);
}
}
运行结果

注解@AfterEach
与@BeforeEach相对的是@AfterEach每次测试完后运行
package com.yong.unittest;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
public class UnitTest {
/*
* 利用Assertions类中的静态方法进行断言判断
* */
@BeforeEach
void each(){
System.out.println("init");
}
@AfterEach
void after(){
System.out.println("after");
}
@Test
void unitTest1(){
System.out.println(123);
}
@Test
void unitTest2(){
System.out.println(456);
}
}
运行结果

注解@BeforeAll
只初始化一次,但是方法必须是静态的static(与之相对的还有@AfterAll)
package com.yong.unittest;
import org.junit.jupiter.api.*;
public class UnitTest {
/*
* 利用Assertions类中的静态方法进行断言判断
* */
@BeforeAll
static void beforAll(){
System.out.println("init once");
}
@BeforeEach
void each(){
System.out.println("init");
}
@AfterEach
void after(){
System.out.println("after");
}
@Test
void unitTest1(){
System.out.println(123);
}
@Test
void unitTest2(){
System.out.println(456);
}
}
运行结果

项目中测试
项目目录结构

服务类Service1
java包中中新建一个服务类Service1
package com.yong.unittest;
import org.springframework.stereotype.Service;
@Service
public class Service1 {
public int add(int a ,int b){
return a+b;
}
}
test包中新建一个类Service1Test
简单粗暴测试方法
package com.yong.unittest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
public class ServiceTest {
@Test
void serviceTest(){
int add = new Service1().add(1, 2);
Assertions.assertEquals(4,add);
}
}
运行结果

复杂的项目
增加注解@SpringBootTest(作用:会初始化spring的上下文(可以利用@Autowired实现对象注入))
package com.yong.unittest;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest//会初始化spring的上下文(可以利用@Autowired实现对象注入)
public class ServiceTest {
@Autowired
Service1 service1;
@Test
void serviceTest(){
int add = new Service1().add(1, 2);
Assertions.assertEquals(3,add);
}
}
运行结果


浙公网安备 33010602011771号