JMockit - 部分嘲弄和嘲笑父母

时间:2015-08-27 15:08:21

标签: java unit-testing mocking jmockit partial-mocks

我想测试(使用JMockit)一个看起来像这样的类:

class MyClass extends ComplexParentClass {

    public void testedMethod() {
        ...
    }

    private int complexPrivateMethod() {
        ...
    }

}

我不能改变班级。问题是ComplexParentClass有一个复杂的构造函数,这使得它很难测试。所以我想模仿父类。我还想模仿复杂的私有方法。但这样的事情是否可能?

我尝试了以下内容:

class MyClassTest {

    @Tested
    MyClass myClass;

    // mock the parent
    @Mocked
    ComplexParentClass complexParentClass;

    @Test
    public void test() {
        new Expectations(myClass) {{
            // partially mock the private method
            Deencapsulation.invoke(myClass, "complexPrivateMethod"); result = 0;
        }};

        myClass.testedMethod();
    }

}

这会导致“已经嘲笑”的例外情况。

有人知道如何处理这个问题吗?

1 个答案:

答案 0 :(得分:0)

您是否尝试过使用MockUps?这样的事情只会模仿complexPrivateMethod

@Test public void test() {
  new MockUp<ComplexParentClass> () {
    @Mock private int complexPrivateMethod() { return 0; }
  };

  //do something with MyClass
}