我使用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);
}
}
答案 0 :(得分:1)
除非您在该类中模拟静态方法,否则不必使用@PrepareForTest
。
我相信你的问题是,当你准备一个使用Powermocks跑步者进行测试的课程时,它会使用字节代码做一些时髦的事情,EclEmma将其用于线路覆盖。由于您没有在家庭类中嘲笑任何静态方法,请尝试从@PrepareForTest
中删除它。