Mat*_*man 9 junit unit-testing mocking mockito powermock
我有一个实现InvocationHandler的类,如下所示:
public class MyProxyClass implements InvocationHandler
{
public Object invoke (Object proxy, Method method, Object[] args) throws Throwable
{
//Do something interesting here
}
}
Run Code Online (Sandbox Code Playgroud)
使用PowerMock和Mockito,我试图在我的单元测试类中传入一个模拟的方法对象:
@RunWith(PowerMockRunner.class)
@PrepareForTest({Method.class})
public class MyProxyTest
{
MyProxy underTest;
@Test
public void testInvoke() throws Throwable
{
Method mockMethod = mock(Method.class);
//...
}
}
Run Code Online (Sandbox Code Playgroud)
由于方法是final,我已经完成了@PrepareForTest诀窍,但似乎没有削减它.这是因为它是自助的吗?我只是错了吗?
我一直在看下面的链接,但那里没有任何确定性:
使用PowerMock可以模拟最终的类,但是,尽管我不相信有记载,但java.lang和java.lang.reflect包中有些类是您无法模拟的,因为它们对于如何模拟框架就是这样。
我认为这些包括(但可能不限于)java.lang.Class,java.lang.reflect.Method和java.lang.reflect.Constructor。
但是,您要做什么需要模拟方法呢?您可以很容易地创建一个真实的方法对象。您甚至可以在虚拟类上创建一个真实的方法对象,然后可以检查该对象是否曾经被调用以及带有什么参数。您只是无法使用Mockito和Powermock来做到这一点。看看您的问题是否与此问题相似。
| 归档时间: |
|
| 查看次数: |
8907 次 |
| 最近记录: |