【问题标题】:How do I test a class using JUnit 4 that extends an abstract class?如何使用扩展抽象类的 JUnit 4 测试一个类?
【发布时间】: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


【解决方案1】:

答案是我需要包含库,JMockit 不以这种方式处理对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2019-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多