我需要对以下方法进行单元测试。如果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)));
}
答案 0 :(得分:0)
看起来您正在尝试使用模拟对象测试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)));
}