我的测试类访问 Main 本身(Main.doSomething) 我想模拟 Main 类以避免设置整个过程的所有麻烦我该怎么做?
我正在使用 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 框架是JMockit
. 它提供了增强的模拟和存根功能。
查看:http://code.google.com/p/jmockit/