實際開發中,除了開發,我想測試也是必不可少的一環吧。從簡單的@Test 、main 方法測試 到 頁面測試 ,斷言,postman。 bug是無處不在,隨時發生的事,高效率的調試、檢測可以節省大量的開發時間。 思路一確定,敲代碼也就花不了多少時間,可是敲完代碼后的調試,檢測往往會花費許多時間。 甚者除了頁面調試(通過jsp,HTML頁面帶參過來到后台,后台返回參數給頁面) 其他的一點都不會。記得去年的時候,公司做個金融產品,是跟外部的團隊合作一起開發的。由於前端頁面是由外部團隊提供給我們的,所以有時候他們還未提供給我們頁面的時候,我們就自己根據接口文檔等把后台業務相關邏輯處理好。 某天上午,公司一個新來的新手跑過來問我:XXX, 代碼寫完啦,沒有頁面怎么測啊。 我當時就感到奇怪,沒有頁面就不能測嗎? 我反問了他一句, 他請我過去幫忙教教他,我也就回了句自己去百度就沒理了。那時候想着就是雖然測試不是我們的主業,有測試,可是我們開發人員自測的手段還是要有一些的吧。剛好現在已經開始寫博客了,今天也有空,也就寫篇相關的博客,記錄記錄
閱讀此篇博客前閱讀本人的junit 常用注解 + junit 斷言詳解 + junit 運行(eclipse + IDEA)
1. @Test , main 方法
這個是最簡單測試了,一般用於測試一些方法,實現,比如你寫了個方法,要想看看能不能用,寫了一個算法,想看看對不對,你就可以通過這些方法來測試。
2. junit 常用注解 + junit 斷言 Assert(請結合junit 常用注解 + junit 斷言詳解這篇博客 理解):
//junit 測試(包括斷言,測試集等)
public class Test3 {
/* @BeforeClass
public static void beforeClass(){
System.out.println("beforeClass");
}
@Before
public void before(){
System.out.println("before");
}*/
@Test(timeout = 10)
public void test1(){
Assert.assertEquals(1,1);
// Assert.fail("fail");
}
@Test(expected = ArithmeticException.class)
public void test2(){
boolean flag = true;
Assert.assertTrue(flag);
Assert.assertEquals(1,1);
}
@Ignore
public void ignore(){
System.out.println("ignore");
}
/* @After
public void after(){
System.out.println("after");
}
@AfterClass
public static void afterClass(){
System.out.println("afterClass");
}
*/
}
3.junit 對SpringMVC 的Controller 進行測試:(注意這是基於ssm 框架 web 工程 的spring MVC,像spring boot 集成的是不一樣的):
// 使用spring 測試集測試
@RunWith(SpringJUnit4ClassRunner.class)
// 配置上下文配置
@ContextConfiguration("classpath*:spring-mvc.xml")
public class TestController {
// 模擬request,response
private MockHttpServletRequest request;
private MockHttpServletResponse response;
// 注入loginController
@Autowired
private LoginController loginController ;
// 執行測試方法之前初始化模擬request,response
@Before
public void setUp(){
request = new MockHttpServletRequest();
request.setCharacterEncoding("UTF-8");
response = new MockHttpServletResponse();
}
/**
* @Title:testLogin
* @Description: 測試用戶登錄
*/
@Test
public void testLogin() {
try {
request.setParameter("userName", "admin");
request.setParameter("password", "2");
Assert.assertEquals("login",loginController.loginTest(request,response)) ;
} catch (Exception e) {
e.printStackTrace();
}
}
}
4. postman 自測 (postman 一般是用於自測 restful 類型的接口, 用於自測前后端對接調用的接口等)(這是postman的基礎功能 ): 請參考 https://blog.csdn.net/fxbin123/article/details/80428216 個人認為講的較詳細了
