Java對WebService實現類的方法做單元測試
阿新 • • 發佈:2019-01-02
作者:Java兔
學會了使用Junit4對webService介面做單元測試後,這次在service實現類中寫了個方法,不是介面,寫好方法後想寫個單元測試測試一下,卻忽然不知道該如何測試起來。由於這是個獨立的方法,不是個介面,以為只要new一個實現類呼叫下這個方法即可,卻發現方法中涉及到的mapper物件均為null,即注入失敗,不知該如何是好來。後發現,不需要new這個實現類,而是要注入這個實現類,就能成功進行單元測試了。工作中只做過注入介面,現在才發現實現類也是可以注入的,真是慚愧。由此,聯想到既然實現類也能注入使用,那我們寫介面的好處是啥呢?心中答案有很多,但總覺得沒有抓住這個問題的核心,便上網百度了一下,尋尋覓覓算是找到了自認為滿意的答案:多型,雖然現在公司的介面99%都只對應一種實現吧,意義似乎不是很大哎,懶得去糾結了=。=下面是這次單元測試的示例:
待測試的方法
@Autowired
private DeptMapper deptMapper;
/**
* 獲取諮詢電話
* @param deptCode 部門編碼
* @return 諮詢電話
*/
public String getPhoneNumber(String deptCode) {
DeptEntity deptEntity = null;
if (deptCode == null || deptCode.equals("")) {
log.error("部門編碼為空,獲取諮詢電話失敗,預設返回空字串");
return "";
}
int length = deptCode.length();
//如果是總公司,則直接獲取總公司的諮詢電話
if (length == 4) {
deptEntity = deptMapper.getDeptInfo(deptCode);
//如果是分公司及以下,則優先選擇分公司的諮詢電話
} else {
DeptEntity deptEntity1 = deptMapper.getDeptInfo(deptCode.substring(0,4));
DeptEntity deptEntity2 = deptMapper.getDeptInfo(deptCode.substring(0 ,6));
if (deptEntity2 == null || StringUtils.isEmpty(deptEntity2.getDeptTelephone())) {
deptEntity = deptEntity1;
} else {
deptEntity = deptEntity2;
}
}
if (deptEntity == null) {
log.warn("該部門的諮詢電話為空:{},預設返回空字串", deptCode);
return "";
} else {
String phoneNumber = deptEntity.getDeptTelephone();
log.info("部門:{}的諮詢電話為:{}",deptCode,phoneNumber);
return phoneNumber;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
測試方法
/**
* @Author huangjp
* @create in 2017-8-15 17:01
* @Description : 獲取諮詢電話介面測試類
**/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = {"classpath:spring-core.xml","classpath:spring-mybatis.xml",
"classpath:spring-ht.xml","classpath:spring-task.xml"})
public class BillingDispatchServiceImplTest {
@Autowired
private BillingDispatchServiceImpl billingDispatchServiceImpl;
@Test
public void testGetPhoneNumber() throws Exception {
String deptCode = "000101";
String phoneNumber = billingDispatchServiceImpl.getPhoneNumber(deptCode);
Assert.assertNotNull("獲取諮詢電話介面返回null,測試失敗",phoneNumber);
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22