Java 단일 void 유형 측정 방법 상세 정보
우리가 자바를 배울 때 선생님이나 일반적인 책에는 자바의 기본 유형은 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 방법 내부의 실행 클래스 호출 상황을 검사할 수 있다.
총결산
이상은 바로 이 글의 전체 내용입니다. 본고의 내용이 여러분의 학습이나 업무에 어느 정도 도움이 되고 의문이 있으면 댓글로 교류하시기 바랍니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
38. Java의 Leetcode 솔루션텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.