springboot 集成单元测试

官网参考地址

1. 添加依赖

<!-- 测试 -->
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

添加完依赖以后如果POM文件中报错,类型

Failure to transfer org.hamcrest:hamcrest-core:jar:1.3  .... was chached in the local repository

这是说在本地有缓存,把本地repository里对应的包删除掉,然后右键项目->maven->update project,报哪个包的错就删掉那个包。

 造成这个错误的原因是对应的包下存在有 .lastupdated文件,删掉这些文件就可以。

stackoverflow上有类似解决办法。

 2.简单JAVA测试

在方法上加@Test注解,run as Junit即可

package UtilitiesTest;

import org.junit.Assert;
import org.junit.Test;

public class SimpleJavaTest {

    @Test
    public void EquelTest(){
        Integer i = 128;
        Integer j = 128;
        Assert.assertEquals(true, i != j);
    }
}

结果

3. 测试service

写测试类:

package ServiceTest;

import java.util.ArrayList;

import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

import com.pkyou.Sample.Main;
import com.pkyou.Sample.Entyties.IndoorCheckItemEntity;
import com.pkyou.Sample.ServiceImp.ControllerService;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Main.class)
@AutoConfigureMockMvc
public class ControllerServiceTest {
    @Autowired
    private ControllerService service;
    private ArrayList<IndoorCheckItemEntity> entities;
    
    @Test
    public void ResultTest(){
        entities = service.GetIndoorCheckItemEntities();
        Assert.assertNotNull(entities);
        Assert.assertEquals(3, entities.size());
    }
}

以上注解意义,测试方法参考官网。这种测试方法每次都会启动tomcat

测试结果:

4. 测试controller

测试类

package ControllerTest;

import java.net.URL;
import java.util.ArrayList;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.context.embedded.LocalServerPort;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.client.TestRestTemplate;
import org.springframework.http.ResponseEntity;
import org.springframework.test.context.junit4.SpringRunner;
import com.pkyou.Sample.Main;
import com.pkyou.Sample.Entyties.IndoorCheckItemEntity;

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT,classes = Main.class)
public class HelloControllerTest {

    @LocalServerPort
    private int port;
    private URL base;
    @Autowired
    private TestRestTemplate template;

    @Before
    public void SetUp() throws Exception {
        this.base = new URL("http://192.168.7.11:" + port + "/controller/GetIndoorCheckItemEntities");
    }

    @Test
    public void GetIndoorInfo() throws Exception{
        ResponseEntity<Object> entities = 
                template.getForEntity(base.toString(),Object.class);        
        ArrayList<IndoorCheckItemEntity> body = (ArrayList<IndoorCheckItemEntity>)entities.getBody();
        Assert.assertNotNull(body);
        Assert.assertEquals(body.size(), 3);
    }
}
原文地址:https://www.cnblogs.com/pangkang/p/8301003.html