【发布时间】:2013-04-16 18:44:33
【问题描述】:
我正在尝试为扩展抽象类的 java 类编写单元测试? java 类看起来有点像:
public class XYZFilter extends XYZDataFilter{
@Override
protected boolean filterItem(Model d, String sector) {
//method code
return true;
}
}
junit 测试类如下所示:
import org.junit.Test;
import static org.junit.Assert.assertTrue;
public class XYZFilterTest {
Model m = new Model();
String sector = "SECTOR";
@Test
public void testFilterItem() throws Exception {
System.out.println("\nTest filterItem method...");
XYZFilter f = new XYZFilter();
assertTrue(f.filterItem(m, sector));
}
}
所以我遇到了由 Filter 类以及 Model 类扩展的抽象 DataFilter 的问题。我相信我需要使用 JMockit 模拟这些对象,但我在弄清楚如何做到这一点时遇到了很多麻烦。任何建议表示赞赏。
【问题讨论】:
-
jUnit 只是纯 Java。将调用类
Filter中的方法filterItem()。你真正的问题是什么?在我看来,你的测试会成功。 -
我不是这个意思。你在这里展示的类将被调用,你的问题是什么?
-
好吧,如果你要测试它,它需要编译,对吧?扩展一个不可用的类是没有意义的。确保它在类路径中可用。
-
你错了。要测试类,类必须存在,因此必须已经编译。模拟框架不会将不可编译的 Java 源代码转换为可运行的类。
-
特别是,您要引用的任何类都需要在其层次结构中的每个类在编译时和运行时都可解析。此外,嘲笑的目的通常(几乎完全)是为了嘲笑合作者。
标签: unit-testing junit mocking jmockit