junit单元测试
1.maven引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
1.新建基类BaseJunitTest.java
package c.a.s.junit.controller;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.TestPropertySource;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
@TestPropertySource(locations = {"classpath:application-test.properties"})
public class BaseJunitTest {
@BeforeClass
public static void init() {
System.out.println("开始测试...");
}
@AfterClass
public static void after() {
System.out.println("测试结束...");
}
}
3.JunitDemoTest.java
package c.a.s.junit.controller;
import c.a.s.api.user.bo.EsSearchCountQueryBO;
import c.a.s.api.user.bo.SoHistorySearchBO;
import c.a.s.api.user.service.EsSearchCountService;
import c.a.s.api.user.service.InitH2DataBaseService;
import com.alibaba.fastjson.JSONObject;
import com.ohaotian.plugin.base.bo.RspBaseBO;
import org.junit.*;
import org.mockito.Mockito;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.mock.mockito.MockBean;
import java.util.List;
import static org.junit.Assert.assertEquals;
/**
* 描述: junit单元测试demo
* 公司: www.tydic.com
* @author ningjianguo
* @time 2020/8/27 15:18
*/
public class JunitDemoTest extends BaseJunitTest{
Logger logger= LoggerFactory.getLogger(JunitDemoTest.class);
@Autowired //创建一个实例,简单的说是这个Mock可以调用真实代码的方法,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中
InitH2DataBaseService initH2DataBaseService;
@MockBean //对这个bean进行mock
EsSearchCountService esSearchCountService;
@Before
public void setup() {
logger.info("每个测试运行前的启动方法");
//初始化sql,慎重执行
String sql="DROP TABLE IF EXISTS TEST2;\n" +
"CREATE TABLE TEST2 (\n" +
"\tID INT PRIMARY KEY AUTO_INCREMENT,\n" +
"\tNAME VARCHAR (255)\n" +
");\n" +
"INSERT INTO TEST2(NAME) VALUES('name1');\n" +
"INSERT INTO TEST2(NAME) VALUES('name2');\n" +
"INSERT INTO TEST2(NAME) VALUES('name3');";
initH2DataBaseService.initH2(sql);
}
@Test
public void test1() throws Exception {
String querySql="select * from TEST2 where NAME='name1'";
//mock数据
List<SoHistorySearchBO> list= JSONObject.parseArray("[{\"historySearch\":\"123\",\"searchType\":\"1\"},{\"historySearch\":\"1233\",\"searchType\":\"1\"}]",SoHistorySearchBO.class);
Mockito.when(esSearchCountService.historySearch(Mockito.any(EsSearchCountQueryBO.class))).thenReturn(list);
//代表执行具体某个方法
RspBaseBO result=initH2DataBaseService.query(querySql);
//断言
assertEquals("0",result.getCode());
}
@After
public void cleanup() {
logger.info("每个测试运行后的启动方法");
}
}
4.其他概念
stub,mock,spy

浙公网安备 33010602011771号