0
我使用了PowerMock來模擬Constructor.Afer啓動應用程序,我認爲所有行都應該是綠色的。但實際上所有行都是紅色的。
我認爲模仿構造函數會導致這種現象。因爲嘲笑其他人,比如最終類,確定。如何解決這個問題?使用PowerMock模擬構造函數時JaCoCo/EclEmma的源高亮函數不起作用
//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'。你可以看到[MockConstructor](https://github.com/jayway/powermock/wiki/MockConstructor) – niaomingjian
但你並沒有嘲笑家庭課...... – Lencalot
雖然我沒有嘲笑家庭課,但我認爲它需要基於[MockConstructor](https://github.com/jayway/powermock/wiki/MockConstructor)文件。在本文中,它說**我們沒有準備File.class的原因是,一個新的在執行expect之前永遠不會創建File實例newNew,PowerMock只是攔截來自新的類的新的調用,因此您需要在此示例中準備PersistenceManager類**我正在嘲笑在類中使用的People類family class,所以我在類級別添加了'@PrepareForTest(Family.class)'。 – niaomingjian