【问题标题】:JMockit: Testing Methods that override an Abstract MethodJMockit:覆盖抽象方法的测试方法
【发布时间】:2018-08-12 20:57:00
【问题描述】:

我目前有以下课程:

public abstract class superClass {
    abstract void abstractTest();
}

public class classForTesting extends superClass {
    @Override
    void abstractTest() {
        ...
    }
}

我目前正在为 classForTesting 编写单元测试(使用 JUnit + JMockit),但我不确定如何测试 abstractTest()。我尝试模拟超类,但仍然无法调用 abstractTest()。

任何想法将不胜感激。

谢谢!

【问题讨论】:

  • 你没有模拟 被测类。您通常会模拟 依赖项。所以只需调用方法abstractTest 并测试所需的行为。
  • 感谢@Seelenvirtuose 的建议。但是,abstractTest 对任何人都是不可见的(根据设计),因此不能直接调用它。您对如何处理此类案件有什么建议吗?

标签: java unit-testing junit jmockit


【解决方案1】:

如果您不想公开 abstractTest,请测试调用 abstractTest 的方法。我还将类名更改为以大写字母开头。

public abstract class SuperClass {
    abstract void abstractTest();
}

public class ClassForTesting extends SuperClass {
    @Override
    void abstractTest() {
        ...
    }

    public void publicMethod() {
        abstractTest() 
    }

}

现在测试publicMethod:

public class PublicTest {

    private ClassForTesting classForTesting;

    @Before
    public void setUp(){
        classForTesting = ClassForTesting();
    }

    @Test
    public void testMethod() {
        classForTesting.publicMethod();
        ...
    }
}

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    相关资源
    最近更新 更多