使用PowerMock到Mock构造函数时,JaCoCo / EclEmma的源突出显示功能不起作用

时间:2016-01-28 10:16:16

标签: highlight powermock jacoco

我使用PowerMock来模拟构造函数。启动应用程序后,我认为所有行都应该是绿色的。但是,实际上所有行都是红色的。
我认为Mocking Constructor会导致这种现象。因为嘲笑其他人,比如最后的类,就可以。如何解决这个问题?

//code:
public class People {
    public String sayHello(){
        return "hello";
    }
}

public class Family {
    public String doEvent() {
        People p = new People();
        String str = p.sayHello();
        System.out.println(str);
        return str;
    }
}

@RunWith(PowerMockRunner.class)
@PrepareForTest(Family.class)
public class FamilyTest {
    @Test
    public void test() throws Exception {
        Family f = new Family();

        String str = "hello mock";
        People p = PowerMock.createMock(People.class);

        PowerMock.expectNew(People.class).andReturn(p);

        EasyMock.expect(p.sayHello()).andReturn(str);
        PowerMock.replay(p, People.class);

        String strActual = f.doEvent();

        Assert.assertEquals(str, strActual);
        PowerMock.verify(p, People.class);
    }
}

1 个答案:

答案 0 :(得分:1)

除非您在该类中模拟静态方法,否则不必使用@PrepareForTest

我相信你的问题是,当你准备一个使用Powermocks跑步者进行测试的课程时,它会使用字节代码做一些时髦的事情,EclEmma将其用于线路覆盖。由于您没有在家庭类中嘲笑任何静态方法,请尝试从@PrepareForTest中删除它。