我希望closeSession()
方法在被调用时抛出一个异常,以便我可以测试看看我的日志记录已完成。我已将Crypto
对象模拟为mockCrypto
并将其设置如下:
@Test
public void testdecrpyMcpDataExceptions() throws Exception {
Crypto mockCrypto = Mockito.mock(Crypto.class);
try {
mockCrypto = CryptoManager.getCrypto();
logger.info("Cyrpto Initialized");
} finally {
logger.info("Finally");
try {
logger.info("About to close Crypto!");
Mockito.doThrow(new CryptoException("")).when(mockCrypto).closeSession();
mockCrypto.closeSession();
} catch (CryptoException e) {
logger.warn("CryptoException occurred when closing crypto session at decryptMcpData() in CipherUtil : esi");
}
}
}
但是,当我运行它时,我得到了错误:
Argument passed to when() is not a mock!
我是在嘲笑课堂错误还是我只是想念一些东西?
最佳答案
你不覆盖你的模拟
mockCrypto = CryptoManager.getCrypto();
经过测试
@Test(expected=RuntimeException.class)
public void testdecrpyMcpDataExceptions() throws Exception {
Crypto mockCrypto = mock(Crypto.class);
doThrow(new RuntimeException()).when(mockCrypto).closeSession();
mockCrypto.closeSession();
}
工作良好。