【问题标题】:Why will Mockito not throw an exception?为什么 Mockito 不会抛出异常?
【发布时间】:2015-11-19 10:39:44
【问题描述】:

我有这个测试,来测试异常处理:

@BeforeTest
public void setup() throws XmlRpcException {
confluence1 = Mockito.mock(XWikiXmlRpcClient.class);
confluence2 = Mockito.mock(XWikiXmlRpcClient.class);
XWikiPage testPage = new XWikiPage();
testPage.setContent("Test");
testPage.setTitle("Page Title");
testPage.setUrl("http://confluence:8080/Test");
Mockito.when(confluence1.storePage(Mockito.any(Page.class))).thenReturn(testPage);
Mockito.when(confluence2.getPage(Mockito.anyString())).thenReturn(testPage);
publish = new Confluence(confluence1, confluence2); 
}


@Test(expectedExceptions = XmlRpcException.class)
public void testAddPageException() throws XmlRpcException {
    Mockito.doThrow(new XmlRpcException("Error")).when(confluence1).
                            login(Mockito.anyString(), Mockito.anyString());
    publish.publishNew();

}

测试此代码:

public void publishNew() throws XmlRpcException {
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
    Date today = Calendar.getInstance().getTime(); 

    try {
        if (parentPageId == null) {
            LOGGER.error("Unable to publish to confluence - required page id of parent confluence page is not set");
        }
        LOGGER.info("Logging in to Confluence");
        rpcConfluence1.login(userName, passWord);
        Page page = new Page();                    
        page.setSpace(owrConf.getString(ConfigKeys.CONFLUENCE_SPACE));
        page.setTitle(owrConf.getString(ConfigKeys.CONFLUENCE_NEW_PAGE_TITLE) + "_" + df.format(today));
        LOGGER.info("Adding new page: " + page.getTitle() + " to space " + page.getSpace());            
        page.setContent(reformatMarkup());
        page.setParentId(parentPageId);            
        Page newPage = rpcConfluence1.storePage(page);          
        LOGGER.info("New page: " + newPage.getUrl());
        savePageUrl(newPage);
        } catch (XmlRpcException e) {
            LOGGER.error("Error publishing to confluence", e);
        }

}

在 publishNew() 中调用 login 方法时应该抛出 XmlRpcException。相反,我得到一个错误:

Method PublishTest.testAddPageException()[pri:0, instance:com.report.publish.PublishTest@6b4886d3] should have thrown an exception of class org.apache.xmlrpc.XmlRpcException

我不知道为什么它不起作用。

【问题讨论】:

    标签: java testng mockito


    【解决方案1】:

    您在 publishNew ... } catch (XmlRpcException e) { LOGGER.error("Error publishing to confluence", e); }" 中捕获了异常。因此测试失败。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-28
      • 2013-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      相关资源
      最近更新 更多