模仿一个空洞的方法——这是正确的吗



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

相关内容

  • 没有找到相关文章

最新更新