我用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
中删除。