Unit testing 如何使用扩展抽象类的JUnit4测试类?
我正在尝试为扩展抽象类的java类编写一个单元测试?java类看起来有点像:Unit testing 如何使用扩展抽象类的JUnit4测试类?,unit-testing,junit,mocking,jmockit,Unit Testing,Junit,Mocking,Jmockit,我正在尝试为扩展抽象类的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 s
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));
}
}
因此,我对抽象DataFilter有一个问题,它是由Filter类和Model类扩展的。我相信我需要使用JMockit来模拟这些对象,但是我在弄清楚如何做到这一点上遇到了很多困难。任何建议都非常感谢。答案是我需要包含库,JMockit不会以那种方式处理对象。jUnit只是纯Java。将调用类
Filter
中的方法filterItem()
。你真正的问题是什么?在我看来,你的考试会成功的。不过我不是这个意思。这里显示的类将被调用,您的问题是什么?如果要测试它,它需要编译,对吗?扩展一个不可用的类是没有意义的。确保它在类路径上可用。你错了。要测试类,类必须存在,并且必须已编译。模拟框架不会将不可编译的Java源代码转换为可运行的类。特别是,任何要引用的类都需要在编译时和运行时使其层次结构中的每个类都可解析。此外,模仿的目的通常(几乎完全)是为了模仿合作者。