我正在寻找一个好的单元测试框架,我可以使用它来模拟可以在 JDK 1.4.2 下运行的私有方法。
干杯,
答案 0 :(得分:11)
试试Mockito,你一定会喜欢它!
您可以在此blog post中查看此库,其中显示了6个简单的Mockito用法示例。
一个简短的例子:
@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);
}
答案 1 :(得分:3)
Java提供了各种各样的模拟库:
...而且很可能是其他一些我从未听说过的较少使用的库。
由于您的要求是 JDK 1.4.2支持,不幸的是,您可以选择旧版本的EasyMock或旧版本的jMock。甚至Java5的支持也将在两天后结束(30 October 2009, that is!),所以如果可能的话,尝试从1.4.2时代开始 - 你(和/或你的公司)只是远远的在其他人之外,在任何一种严肃的技术支持之外。
答案 2 :(得分:2)
你为什么不试试Easymock或Mockito
答案 3 :(得分:1)
答案 4 :(得分:1)
没有人选择了这个,但你为什么试图模仿私人方法呢?这几乎总是一个坏主意,因为它破坏了封装。