2015-11-19 341 views
0

我有这样的测试,测试的异常处理:为什么Mockito不会抛出异常?

@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); 
     } 

} 

它应该引发和XmlRpcException时的登录方法被调用的publishNew ()。相反,我得到一个错误:

Method PublishTest.testAddPageException()[pri:0, instance:[email protected]] should have thrown an exception of class org.apache.xmlrpc.XmlRpcException 

我不明白为什么它不工作。

回答

3

您正赶上在publishNew ... } catch (XmlRpcException e) { LOGGER.error("Error publishing to confluence", e); }例外”,因为测试结果失败

+0

卫生署 - !我简直不敢相信..谢谢! – eeijlar

相关问题