JaCoCo/EclEmma 的 Source 突出显示功能在使用 PowerMock 模拟构造函数时不起作用



我用PowerMock来模拟构造函数.Afer启动应用程序,我认为所有的行都应该是绿色的。但是,实际上所有行都是红色的。
我认为模拟构造函数导致了这种现象。因为嘲笑别人,比如期末课,是可以的。如何解决这个问题?

//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);
    }
}

你不应该使用@PrepareForTest,除非你在那个类中模拟静态方法。

我相信你的问题是,当你使用 Powermocks 运行器准备一个测试类时,它会对字节码做一些时髦的事情,EclEmma 用它来覆盖线路。由于您没有模拟家庭类中的任何静态方法,请尝试将其从@PrepareForTest中删除。

相关内容

  • 没有找到相关文章

最新更新