我需要对以下方法进行单元测试。如果"message"中的XML无效,validate()方法将引发异常。
我需要两个测试,一个验证失败,一个通过。我试过下面失败的测试,但它不起作用。有人能告诉我怎么做吗?
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)));
}
看起来你正在尝试用mock对象测试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)));
}