我的课程Under Test access Main(Main.doSomething) 我想模拟Main类,以避免使用所有的hasltle来设置整个过程 我怎么能这样做?
我正在和Mockito一起使用Powermock。
答案 0 :(得分:3)
Main
不是Java中类的保留字。这意味着你可以像任何其他类一样进行测试。这取决于doSomething
是否为static
和/或final
。
答案 1 :(得分:2)
前提是必须使用模拟静态方法是一种不好的做法(如果应该模拟它,你的方法不应该是静态的:如果类很难测试 - 重构类 - 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);
答案 2 :(得分:0)
更强大的模拟框架是JMockit
。它提供增强的模拟和存根功能。
CheckOut:http://code.google.com/p/jmockit/