我有一个无效的方法,做一些事情。我不在乎它在我的单元测试课上做了什么。然而,当我从我的单元测试类调用它并引发我的测试用例失败时,它会抛出异常。如何忽略使用easymock的私有void方法抛出的异常?
我该如何使用EasyMock模拟此对象,以便在调用这个void方法时忽略它在单元测试中的作用?
例如,假设该对象被称为myObject
,并且它有一个名为doSomething()
的无效方法。 EasyMock不让我使用'expect',因为它是一个无效的方法,它不返回任何内容。但是当我在测试用例中调用这个方法时,它会抛出一个异常(我想完全忽略它)。
我知道这可以通过使用mockito或其他库来实现,但我想使用EasyMock。
UPDATE
所讨论的方法是它获取由其他进程称为私人无效方法。我不能直接调用它,但我仍然想忽略该私有无效方法引发的异常。
我已经尝试使用漂亮的模拟,如下建议。
MyObject obj = EasyMock.createNiceMock(MyObject.class);
EasyMock.replay(obj);
然后我在另一个包含它作为私有变量的对象中设置此obj。
MyObject2 obj2 = new MyObject2();
obj2.setMyObject(obj);
并且我调用一些方法在内部调用private void方法。
obj2.methodThatCallsPrivateVoidMethod();
并且这不起作用。
如果你想要模拟的方法是私人的,那么你将无法用EasyMock模拟它,你需要使用[PowerMock](https://code.google.com/p/powermock/ )。话虽如此,从你问题的其余部分看,在MyObject上有一个可访问的方法(public,protected,default),你可以模拟出正确的方法吗? – 2014-10-20 07:00:55
是的,但公共方法是我想单元测试的东西。这只是为了让我可以忽略private void方法的结果(特别是在本质上存在的异常) – user3590506 2014-10-20 17:52:29
在这种情况下,您必须使用PowerMock生成MyObject的部分模拟来模拟私有方法。这是可能的,但有点尴尬。 [这是它的文档](https://code.google.com/p/powermock/wiki/MockPrivate) – 2014-10-21 07:16:01