spring框架_03 junit單元測試
阿新 • • 發佈:2019-02-15
單元測試不是頭一次聽說了,但只是聽說從來沒有用過。一個模組怎麼測試呢,是不是得專門為一單元寫一個測試程式,然後將測試單元程式碼拿過來測試? 我是這麼想的。學到spring框架這才知道單元測試原來是這麼回事兒。
下面以上一篇文章中set注入的第一個例項為測試物件。進行單元測試。
1,拷貝jar包
junit-3.8.2.jar(4.x主要增加註解應用)
2,寫業務類
[java] view plaincopyprint?- public class User{
- privateString username;
- publicString getUsername() {
- returnusername;
- }
- publicvoid setUsername(String username) {
- this.username= username;
- }
- //新增方法
- publicString login() throws Exception{
- if("admin".equals(username){
- return"success";
- }else{
- return"error";
- }
- }
- }
<span style="font-size:18px;">public class User{ privateString username; publicString getUsername() { returnusername; } publicvoid setUsername(String username) { this.username= username; } //新增方法 publicString login() throws Exception{ if("admin".equals(username){ return"success"; }else{ return"error"; } } }</span>
3,定義測試類
測試類最好單獨建立專案,或者單獨定義資料夾儲存,需要繼承junit.framework.TestCase
4,增加測試方法
測試方法必須是public,不應該有返回值,方法名必須以test開頭,無引數
測試方法是有執行先後順序,按照方法的定義先後順序
多個測試方法對同一個業務方法進行測試,一般每個邏輯分支結構都有測試到。
[java] view plaincopyprint?- public class TestUserextends TestCase{
- publicvoid testUser_Success() throws Exception{
- //準備資料
- Useraction = new User();
- action.setUsername("admin");
- //呼叫被測試方法
- Stringresult = action.login();
- //判斷測試是否通過
- assertEquals("success",result);
- }
- }
<span style="font-size:18px;">public class TestUserextends TestCase{
publicvoid testUser_Success() throws Exception{
//準備資料
Useraction = new User();
action.setUsername("admin");
//呼叫被測試方法
Stringresult = action.login();
//判斷測試是否通過
assertEquals("success",result);
}
}</span>
執行程式,如果測試成功會出現如下圖所示的結果
如果執行失敗,有方法沒有通過測試,那麼就會顯示出在哪個方法出錯了。上圖中綠色的條會變成紅色的。
5,測試類的生命週期方法
[java] view plaincopyprint?- //用來進行初始化操作
- @Override
- protectedvoid setUp() throws Exception {
- System.out.println("setUp...");
- }
- //用來做銷燬操作
- @Override
- protectedvoid tearDown() throws Exception {
- System.out.println("tearDown...");
- }
<span style="font-size:18px;">
//用來進行初始化操作
@Override
protectedvoid setUp() throws Exception {
System.out.println("setUp...");
}
//用來做銷燬操作
@Override
protectedvoid tearDown() throws Exception {
System.out.println("tearDown...");
}</span>
setUp方法會在每一個測試方法前執行一次。tearDown方法會在每一個測試方法後執行一次