1

我的测试类访问 Main 本身(Main.doSomething) 我想模拟 Main 类以避免设置整个过程的所有麻烦我该怎么做?

我正在使用 Powermock 和 Mockito。

4

3 回答 3

3

Main不是 Java 中类的保留字。这意味着您可以像任何其他课程一样进行测试。这取决于doSomethingstatic和/final或不是。

于 2013-02-05T08:23:02.797 回答
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);
于 2013-02-05T08:34:20.783 回答
0

一个更强大的 Mocking 框架是JMockit. 它提供了增强的模拟和存根功能。

查看:http://code.google.com/p/jmockit/

于 2013-02-05T08:47:07.243 回答