Java 단일 void 유형 측정 방법 상세 정보

3212 단어 javavoid유형
앞말
우리가 자바를 배울 때 선생님이나 일반적인 책에는 자바의 기본 유형은 8가지라고 쓰여 있다.각각:byte,int,short,long,float,double,char,boolean.그러나 오늘 아침 나는 자바의 성경인 씽킹 인 자바를 보았을 때 작가가 데이터 유형을 설명할 때void도 올렸다는 것을 발견했다.이렇게 하면 아홉 가지가 된다.바이두에서 보니까 어떤 책도 Java는 9가지 기본 유형이 있어요.
자바의 서비스 층에는 많은void 유형의 방법이 있을 것이다. 예를 들어save*,update*와 같은 방법은 약간의 업데이트만 할 뿐 되돌아오는 값은 없다. 그 측정은 방법의 되돌아오는 값에 따라 작성할 수 없고 특수한 방법만 사용할 수 있다.
이 메서드 환경: Mockito, testng
테스트 방법:
테스트 받고 싶은 VOID 메소드 자바

@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);
 }
테스트 방법:
void 반환 방법 테스트 Java

 @Test
 public void testUpdateRuleName() {
 Long ruleId = 1L;
 String newRuleName = "newRuleName";
 Long ucId = 123L;
 
 List<Rule> rules = new ArrayList<Rule>();
 Rule rule = new Rule();
 rule.setRuleStatus((byte) DBValueSetting.RULE_STATUS_TAKE_EFFECT);
 rules.add(rule);
 
 //  
 Map<String, Object> params = new HashMap<String, Object>();
 params.put("ruleId", ruleId);
 Mockito.when(ruleDao.queryRulesByCondition(params)).thenReturn(rules);
 
 Mockito.doAnswer(new Answer<Object>() {
  public Object answer(InvocationOnMock invocation) {
  //  2: 
  Rule rule = (Rule) invocation.getArguments()[0];
  Assert.assertTrue(rule.getRuleName().equals("newRuleName"));
  return null;
  }
 }).when(ruleDao).updateSelective(Mockito.any(Rule.class));
 
 //  1: 
 ruleService.updateRuleName(ruleId, newRuleName, ucId);
 }
주석에서 보듯이 두 개의 단점을 추가하면 실행하는 과정에서 마지막 호출 줄을 먼저 실행하고 단점 1이 실행하는 과정에서 단점 2의 stub를 실행한다. 이때 단점 2에서 방법이 실행하는 인삼을 얻을 수 있고 인삼에 대해 Assert 검사를 하면 목적을 실현할 수 있다.
new Anwer는 하나의 방법으로 호출된 프록시 실행 입구를 설정하는 인터페이스입니다.
doAnswer 구현 Java

public interface Answer<T> {
 /**
 * @param invocation the invocation on the mock.
 *
 * @return the value to be returned
 *
 * @throws Throwable the throwable to be thrown
 */
 T answer(InvocationOnMock invocation) throws Throwable;
}
코드가 "ruleDao.updateSelective(rule); "에 실행될 때mock 대상에 대한 호출 차단기를 터치합니다. 차단기에서 동적 에이전트를 만듭니다. 동적 에이전트의 invocation은 new Answer에서 덮어쓰는 방법입니다.
차단, 프록시 두 가지 방법을 사용하여 mock 대상 방법에 대한 입참, 출참의 설정과 획득을 실현했다. 이런 방식을 사용하면 VOID 방법 내부의 실행 클래스 호출 상황을 검사할 수 있다.
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.

좋은 웹페이지 즐겨찾기