[英]Mocking a void method - is this correct?
我需要对以下方法进行单元测试。 如果'message'中的XML无效,validate()方法将引发异常。
我需要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)));
}
看起来您正在尝试使用模拟对象测试XMLSupport.validate()方法并期望它引发异常,要实现此目标,您不能使用Mock XmlSupport对象,如果可能,请创建一个正确的XMLSupport对象并对其进行测试,它应该工作,否则,如果您必须使用Mocked 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)));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.