一、安装插件JUnitGenertor V2.0
File->Setting->Plugins->在搜索框里输入JUintGenerator V2.0
二、导入JUnit相关jar包
1. junit-4.12.jar
2. hamcrest-core-1.3.jar
三、待测试类添加JUnit测试类
打开待测试类,按快捷键 ALT+INSERT,选择JUnit 4
四、编写测试代码
demo展示:
下面是一个单元测试驱动器,根据参数情况分别调用Servlet(待测试类)的方法来进行断言验证。
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import static org.junit.Assert.assertEquals;
/**
* Servlet Tester.
*
* @author <Authors name>
* @since <pre>四月 3, 2019</pre>
* @version 1.0
*/
@RunWith(Parameterized.class)
public class ServletTest {
private Map<String, String> parameters; // 定义参数映射集合
private String result; // 预期结果
@Parameterized.Parameters
public static Collection data() {
// 实例化参数映射集合,参数就是测试用例中的参数
Map<String , String> parameters1 = new HashMap<String , String>(){{
// 查询所有书籍模块参数
put("name", "虚拟");
put("msg", "0");
}};
Map<String , String> parameters2 = new HashMap<String , String>(){{
// 查询某个书籍详情模块参数
put("id", "1");
put("msg", "1");
}};
Map<String , String> parameters3 = new HashMap<String , String>(){{
// 登陆模块参数
put("name", "hey");
put("password", "hey123");
put("msg", "2");
}};
Map<String , String> parameters4 = new HashMap<String , String>(){{
// 借书参数
put("id", "1");
put("msg", "3");
}};
return Arrays.asList(new Object[][]{
{"{\"address\":\"\",\"author\":\"周志明\",\"detail\":\"\",\"id\":1,\"name\":\"无法理解虚拟机\",\"press\":\"北京大出版社\",\"pressdate\":\"2019-03-06\",\"status\":\"\"}",parameters1},
{"{\"address\":\"P0A1\",\"author\":\"\",\"detail\":\"很好\",\"id\":1,\"name\":\"无法理解虚拟机\",\"press\":\"\",\"pressdate\":\"\",\"status\":\"已出馆\"}",parameters2},
{"1",parameters3},
{"1",parameters4},
});
}
public ServletTest(String result,Map<String, String> parameters) {
this.parameters = parameters;
this.result = result;
}
@Before
public void before() throws Exception {
System.out.println("开始测试....");
}
@After
public void after() throws Exception {
}
/**
*
* Method: doPost(HttpServletRequest request, HttpServletResponse response)
*
*/
@Test
public void testDoPost() throws Exception {
//TODO: Test goes here...
}
/**
*
* Method: doGet(HttpServletRequest request, HttpServletResponse response)
*
*/
@Test
public void testDoGet() throws Exception {
assertEquals(result,sendPost(parameters));
}
public static String sendPost(Map<String, String> parameters) {
String result = "";// 返回的结果
BufferedReader in = null;// 读取响应输入流
PrintWriter out = null;
StringBuffer sb = new StringBuffer();// 处理请求参数
String params = "";// 编码之后的参数
try {
// 编码请求参数
if (parameters.size() == 1) {
for (String name : parameters.keySet()) {
sb.append(name).append("=").append(
java.net.URLEncoder.encode(parameters.get(name),
"UTF-8"));
}
params = sb.toString();
} else {
for (String name : parameters.keySet()) {
sb.append(name).append("=").append(
java.net.URLEncoder.encode(parameters.get(name),
"UTF-8")).append("&");
}
String temp_params = sb.toString();
params = temp_params.substring(0, temp_params.length() - 1);
}
String url = "http://localhost:8080/Servlet";
// 创建URL对象
java.net.URL connURL = new java.net.URL(url);
// 打开URL连接
java.net.HttpURLConnection httpConn = (java.net.HttpURLConnection) connURL
.openConnection();
// 设置通用属性
httpConn.setRequestProperty("Accept", "*/*");
httpConn.setRequestProperty("Connection", "Keep-Alive");
httpConn.setRequestProperty("User-Agent",
"Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1)");
// 设置POST方式
httpConn.setDoInput(true);
httpConn.setDoOutput(true);
// 获取HttpURLConnection对象对应的输出流
out = new PrintWriter(httpConn.getOutputStream());
// 发送请求参数
out.write(params);
// flush输出流的缓冲
out.flush();
// 定义BufferedReader输入流来读取URL的响应,设置编码方式
in = new BufferedReader(new InputStreamReader(httpConn
.getInputStream(), "UTF-8"));
String line;
// 读取返回的内容
while ((line = in.readLine()) != null) {
result += line;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (out != null) {
out.close();
}
if (in != null) {
in.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
return result;
}
}