JMockit mock没有被破坏

时间:2016-08-31 08:10:09

标签: java unit-testing mockito jmockit

使用JUnit测试类 -

有一个班级TestAccess.java

static private TestAccess instance = new TestAccess();
public static TestAccess getTestAccess() {
    returns instance;
}

用于测试测试类A.java使用JMockit来模拟getTestAccess方法

@Mock
TestAccess mockTestaccess;    

@Test
public void testMethod() {
    new MockUp<TestAccess>() {
        @mockit.Mock
        public TestAccess getTestAccess() {
            return mockTestaccess;
        }
    };

    TestAccess test=TestAccess.getTestAccess();
}

在另一个课程B.java中,我不想使用模拟和通话 TestAccess.java如下

@Test
public void doTest()
{ 
    TestAccess test=TestAccess.getTestAccess();
}

B.java如果独立运行,则返回真实的TestAccess实例并且正常工作。

然而,在maven运行期间,它甚至在B.java中失败了 TestAccess.getTestAccess()返回A.java中定义的模拟,而不是预期的实例。

任何人都可以指导如何解决这个问题。

1 个答案:

答案 0 :(得分:1)

afair您的示例甚至不会运行,因为mockTestaccess字段上的@Mock注释无效。我想它应该是@Mocked?如果是这样,则无需另外使用new MockUp(),因为@Mocked上的mockTestaccess已经在该测试类的测试期间模拟了TestAccess的所有实例之后将自动恢复。如果你有问题,getTestAccess()返回TestAccess的某个子类,然后它不是一个模拟的实例,你可能想看看@Capturing,它也会模拟子类的实例。