我需要测试一个调用另一个私有方法的方法,问题不是试着模拟私有方法返回的结果,而是这样做不是要获得jacoco或声纳的覆盖范围。我使用Powermock和EasyMock进行了测试,但是当使用间谍时,使用间谍时,声纳或jacoco并未涵盖该测试。进行调用的私有方法和公共方法在同一类上。
测试情况:
public class ClassOne {
private Object methodOne () {
.....
return object;
}
private Object mehodTwo () {
return Object name = mehtodOne ();
}
}
测试示例:
package foo.bar;
import static org.junit.Assert.*;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mockito;
import org.powermock.api.mockito.PowerMockito;
import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
@PrepareForTest(VlcPlayerMinimal.class)
public class VlcPlayerMinimalTest {
@Test
public void getVlcRcStatusTest() {
VlcPlayerMinimal vlcPlayerSpy = PowerMockito.spy(new VlcPlayerMinimal());
try {
PowerMockito.doReturn("{status: stopped, id: 2}").when(vlcPlayerSpy, "executeGetRequest", Mockito.any(), Mockito.any());
String vlcRcStatus = vlcPlayerSpy.getVlcRcStatus();
System.out.println(vlcRcStatus);
} catch (Exception e) {
e.printStackTrace();
fail("Unexpected exception thrown.");
}
}
}
不,不可能。选择一个或另一个。
这种“覆盖范围”甚至可以证明什么?您实际上并没有覆盖它。代码覆盖率是一项度量标准,可以帮助您识别未经过良好测试的斑点,而不应该尝试诱使它们显示出高于实际水平的斑点。