【发布时间】:2009-10-28 06:14:46
【问题描述】:
我正在寻找一个好的单元测试框架,我可以用它来模拟可以在 JDK 1.4.2 下运行的私有方法。
干杯,
【问题讨论】:
标签: java unit-testing mocking
我正在寻找一个好的单元测试框架,我可以用它来模拟可以在 JDK 1.4.2 下运行的私有方法。
干杯,
【问题讨论】:
标签: java unit-testing mocking
试试Mockito,你会喜欢的!
您可以在blog post 中查看这个库,其中展示了 Mockito 使用的 6 个简单示例。
一个简短的例子:
@Test
public void iteratorWillReturnHelloWorld(){
//arrange
Iterator i = mock(Iterator.class);
when(i.next()).thenReturn("Hello").thenReturn("World");
//act
String result = i.next() + " " + i.next();
//assert
assertEquals("Hello World", result);
}
根据您的要求进行编辑:
Mockito 似乎在 Java 1.4 和 JUnit 3 上运行良好,如 blog post 中所述。
与上面的示例相同,但适用于 Java 1.4:
public void testIteratorWillReturnHelloWorld(){
//arrange
Iterator i = Mockito.mock(Iterator.class);
Mockito.when(i.next()).thenReturn("Hello").thenReturn("World");
//act
String result = i.next() + " " + i.next();
//assert
assertEquals("Hello World", result);
}
【讨论】:
有一整套可用于 Java 的模拟库:
...很可能还有一些我什至没听说过的不太常用的库。
由于您的要求是JDK 1.4.2 支持,不幸的是,这意味着您可以选择旧版本的 EasyMock 或真正旧版本的 jMock。甚至 Java5 的支持也将在两天内结束 (30 October 2009, that is!) 所以如果可能的话,尽量摆脱 1.4.2 时代 - 你(和/或你的公司)远远落后于其他人并且在任何形式的严肃技术支持之外。
【讨论】:
你为什么不试试 Easymock 或 Mockito
【讨论】:
没有人知道这个,但你为什么要模拟私有方法?这几乎总是一个坏主意,因为它破坏了封装。
【讨论】: