http://blog.youkuaiyun.com/king_is_everyone/article/details/53229929
我的springboot 的测试类
import org.junit.Before;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
@RunWith(SpringRunner.class)//运行器,指定用什么来运行,例SpringJUnit4ClassRunner.class
@SpringBootTest(classes = ApiMain.class)//测试SpringApplication(SpringBoot程序的入口是SpringApplication,并会引入这个boot的配置)
public class PayApiApplicationTests {
protected MockMvc mockMvc;//实现对http请求的模拟,能够直接用网络形式,调用controller,不依赖网络环境,//不用建http client,还提供了一套验证工具来验证统一
@Autowired
private WebApplicationContext context;//web应用上下文,或者就可以理解为spring的Ioc容器,位于springframework.web.context包下
@Before//初始化方法 对于每一个测试方法都要执行一次
public void setup() {
mockMvc = MockMvcBuilders
.webAppContextSetup(context)
//.apply(springSecurity())
.build();
}
}
import org.junit.Test;
import org.springframework.util.LinkedMultiValueMap;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
public class AccountControllerTest extends PayApiApplicationTests {
/**
* 2.1 新用户注册(页面方式)PC
*/
@Test
public void registerForPc() throws Exception {
LinkedMultiValueMap map = new LinkedMultiValueMap<String, Object>();
map.add("mobileNo", "");//手机号(11)
map.add("pageReturnUrl", "");//页面返回 url(256)
String responseString = this.mockMvc.perform(post("/xxxx/account/register/pc")
.characterEncoding("UTF-8")
.params(map))
.andReturn().getResponse().getContentAsString();
System.out.println(responseString);
}
}
https://www.cnblogs.com/xiaohunshi/p/5706943.html 使用MockMvc测试Spring mvc Controller
http://blog.youkuaiyun.com/anders_zhuo/article/details/8955226 JUnit4 中@AfterClass @BeforeClass @after @before的区别对比
JUnit4使用Java5中的注解(annotation),以下是JUnit4常用的几个annotation:
@Before:初始化方法 对于每一个测试方法都要执行一次(注意与BeforeClass区别,后者是对于所有方法执行一次)
@After:释放资源 对于每一个测试方法都要执行一次(注意与AfterClass区别,后者是对于所有方法执行一次)
@Test:测试方法,在这里可以测试期望异常和超时时间
@Test(expected=ArithmeticException.class)检查被测方法是否抛出ArithmeticException异常
@Ignore:忽略的测试方法
@BeforeClass:针对所有测试,只执行一次,且必须为static void
@AfterClass:针对所有测试,只执行一次,且必须为static void
一个JUnit4的单元测试用例执行顺序为:
@BeforeClass -> @Before -> @Test -> @After -> @AfterClass;
每一个测试方法的调用顺序为:
@Before -> @Test -> @After;
ps:
版本要一样
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>1.5.15.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>1.4.5.RELEASE</version>
<scope>test</scope>
</dependency>