我有以下代码获取的Mockito以及Powermock抛出错误正确
@PrepareForTest({Mongo.class, XYMongo.class, DB.class})
public class XYMongoTest extends UnitTest{
String host = Play.configuration.getProperty("mongo.host");
int port = Integer.parseInt(Play.configuration.getProperty("mongo.port"));
String name = Play.configuration.getProperty("mongo.name");
@Test
public void testRetrieveMongoDBSuccessful() throws UnknownHostException, MongoException, Exception
{
Mongo mongoMock = mock(Mongo.class);
DB mockDB = mock(DB.class);
PowerMockito.whenNew(Mongo.class).withArguments(host, port).thenReturn(mongoMock);
when(mongoMock.getDB(name)).thenReturn(mockDB);
XYMongo.getMongoDB();
verify(mongoMock.getDB(name));
}
@Test
public void testRetrieveMongoDBFailUnkownHost() throws Exception
{
try
{
PowerMockito.mockStatic(Mongo.class);
PowerMockito.whenNew(Mongo.class).withArguments(host, port).thenThrow(new UnknownHostException("Test Exception"));
XYMongo.getMongoDB();
PowerMockito.verifyNew(Mongo.class).withArguments(host, port);
}
catch (Exception e)
{
assertEquals("Test Exception", e.getMessage());
}
}}
第一测试通过精细和第二失败测试误差是
失败,预期:< [试验异常] >但是:< [在这里缺少验证(模拟)的方法调用: - >在org.powermock.api.mockito.internal.invocationcontrol.MockitoNewInvocationControl.expectSubstitutionLogic(MockitoNewInvocationControl.java:65)正确验证的示例:verify(mock) .doSomething()另外,这个错误可能会显示出来,因为您验证了以下任一项:f inal/private/equals()/ hashCode()方法。那些方法不能被钉住/验证。 ]>
有关如何解决此问题的任何想法?尝试了我能想到的一切。
感谢
保罗