2014-04-27 2 views
0

다음과 같은 방법으로 단위 테스트를해야합니다. validate() 메서드는 'message'내부의 XML이 유효하지 않은 경우 예외를 throw합니다.void 메소드 조롱 - 정확합니까?

2 개의 테스트가 필요합니다. 하나는 유효성 검사에 실패하고 다른 하나는 통과합니다. 나는 아래의 실패한 테스트를 시도했지만 작동하지 않습니다. 아무도 이걸하는 방법을 말해 줄 수 있습니까?

public Boolean validateXML(Message message, Mediation mediation){ 

    try{ 
      mediation.getXMLSupport().validate(message,"mySchema.xsd"); 
      return true; 
     } catch(Exception e) { 
      return false; 
     } 
    } 


    @Mock 
    private Message message; 
    @Mock 
    private Mediation mediation; 

    @Mock 
    XMLSupport xmlSupport; 

    @Test 
    public void test() { 
     given(message.getCurrentPayload()).willReturn(new StringMessage("<MalformedXML/>")); 
     given(mediation.getXMLSupport()).willReturn(xmlSupport); 

     assertFalse((validationSequence.validateXML(message, mediation))); 
    } 
+0

개체 수준 공동 작업자 만 사용해야합니까? –

+0

@MingtaoZhang 당신은 무엇을 의미합니까? – TheCoder

+0

질문과 직접적인 관련이 없습니다. validateXML 메소드를 unit-test 할 때, 이러한 파라미터를 조롱하면 안됩니다. test() 메서드에서 메시지/약물을 만들거나 데이터 메서드를 사용하여 메시지/약물을 제공 할 수 있습니다. –

답변

0

당신이 XMLSupport.validate() 모의 객체와 방법을 테스트하기 위해 노력하고 적절한 XMLSupport 객체를 생성 가능하다면, 이것은 당신이 모의 XmlSupport 개체를 사용할 수 없습니다 달성하기 위해 예외를 던져 그것을 기대 것 같습니다 그리고 똑같은지 테스트 해봐야합니다. 그렇지 않으면, 조롱 된 XMLSupport를 사용해야하는 경우 XMLSupport에 명시 적으로 예외를 던지기 위해 다른 것을 제공해야하지만 그런 테스트가 필요한 시점은 없습니다.

private XMLSupport xmlSupport = new XMLSupport(); 

    @Test 
    public void test() { 
     given(message.getCurrentPayload()).willReturn(new StringMessage("<MalformedXML/>")); 
     given(mediation.getXMLSupport()).willReturn(xmlSupport); 

     assertFalse((validationSequence.validateXML(message, mediation))); 
    } 
관련 문제