Java的Sevice层会有很多void类型的方法,比如save*、update*,这类方法只是做一些更新,不会有返回值,其单测不能根据方法的返回值来编写,只能采用特殊方法;本方法环境:Mockito、testng被测试的方法:@Override
public void updateRuleName(Long ruleId, String newRuleName, Long ucId) {
Assert.notNull(ruleId, "规则ID不能为Null");
Assert.notNull(newRuleName, "规则名称不能为Null");
Assert.notNull(ucId, "操作人的UCID不能为Null");
String cleanNewRuleName = StringUtils.trim(newRuleName);
if (StringUtils.isBlank(cleanNewRuleName)) {
throw new IllegalArgumentException("新的规则名称不能为空");
}
// 查询规则对象
Rule rule = queryRuleById(ruleId);
if (null == rule) {
throw new IllegalDataException("没有查到该规则");
}
rule.setRuleId(ruleId);
rule.setRuleName(cleanNewRuleName);
rule.setUpdateUcid(ucId);
rule.setUpdateTime(new Date());
ruleDao.updateSelective(rule);
}测试的方法:@Test
public void testUpdateRuleName() {
Long ruleId = 1L;
String newRuleName = "newRuleName";
Long ucId = 123L;
List rules = new ArrayList();
Rule rule = new Rule();
rule.setRuleStatus((byte) DBValueSetting.RULE_STATUS_TAKE_EFFECT);
rules.add(rule);
// 查询规则对象
Map params = new HashMap();
params.put("ruleId", ruleId);
Mockito.when(ruleDao.queryRulesByCondition(params)).thenReturn(rules);
Mockito.doAnswer(new Answer