嘲弄虚空方法 - 这是正确的吗?

时间:2014-04-27 17:41:32

标签: java mockito

我需要对以下方法进行单元测试。如果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)));
    }

1 个答案:

答案 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)));
    }