隐藏

idea spring-boot service层单元测试

发布:2022/3/24 10:58:01作者:管理员 来源:本站 浏览次数:1198

一、加入依赖


<dependency>

   <groupId>junit</groupId>

   <artifactId>junit</artifactId>

   <scope>test</scope>

   <version>4.12</version>

</dependency>

<!-- 单元测试注入依赖 -->

<dependency>

   <groupId>org.mockito</groupId>

   <artifactId>mockito-all</artifactId>

   <version>1.10.19</version>

</dependency>


 


二、创建单元测试


测试类的的命名规则一般是 xxxTest.java ;

测试类中测试的方法可以有前缀,这个看统一标准,所以有时候会发现别人的测试方法上有test前缀;

并且测试方法上加上注解 @Test。


使用 IDEA 中,选中当前类名,使用快捷键 ALT + ENTER(WIN),向下选则 Create Test 回车,即可进入生成测试类的选项中,再次回车,就快速的生成测试类。

三、注入服务


@Mock

private IUserService;




四、例子


import com.test.service.IUserService;

import org.junit.Before;

import org.junit.Test;

import org.junit.runner.RunWith;

import org.mockito.Mock;

import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;


import java.util.HashMap;

import java.util.Map;


@RunWith(SpringJUnit4ClassRunner.class)

public class ProjectBaseServiceImplTest {


//    @Autowired

   @Mock

   private IUserService userService;

   @Before

   public void setUp() throws Exception {

       System.out.println("Before");

   }

   @Test

   public void saveProjectBase() {

       Map<String,Object> map = new HashMap();

       map.put("userId","1234");

       map.put("userName","张三");

       map.put("userDes,"{\"test\":\"testtest\"}");

       try {


           int result = userService.saveUser(map);

           System.out.println(1);

       }catch (Exception e){

           e.printStackTrace();

       }

       System.out.println(2);


   }

}


 


JUnit中的注解


   @BeforeClass:针对所有测试,只执行一次,且必须为static void

   @Before:初始化方法,执行当前测试类的每个测试方法前执行。

   @Test:测试方法,在这里可以测试期望异常和超时时间

   @After:释放资源,执行当前测试类的每个测试方法后执行

   @AfterClass:针对所有测试,只执行一次,且必须为static void

   @Ignore:忽略的测试方法(只在测试类的时候生效,单独执行该测试方法无效)

   @RunWith:可以更改测试运行器 ,缺省值org.junit.runner.Runner


单元测试类执行顺序


@BeforeClass –> @Before –> @Test –> @After –> @AfterClass


每一个测试方法的调用顺序为:


@Before–> @Test–> @After