我的类在测试中访问Main本身(Main.doSomething)我想模拟Main类,以避免用所有的hasltle设置整个过程我怎么能这么做?
我正在将Powermock与Mockito一起使用。
Main
不是Java中类的保留字。这意味着您可以像其他类一样进行测试。这取决于doSomething
是否为static
和/或final
。
假设必须模拟静态方法是一种糟糕的做法(如果应该模拟,则方法不应该是静态的:如果类很难测试,则重构类——http://monkeyisland.pl/2008/01/14/mockito/)。
尽管如此,以下是使用powermock的方法:
PowerMockito.mockStatic(Main.class);
PowerMockito.when(Main.doSomething()).thenReturn(something);
文件如下:http://code.google.com/p/powermock/wiki/MockStatic
对于嘲笑静态成员做:
Whitebox.setInternalState(Main.class, doSomething);
一个更强大的Mocking Framework是JMockit
。它提供了增强的嘲讽和存根功能。
签出:http://code.google.com/p/jmockit/