是否有可能模拟私有方法的结果,并同时获得声纳或雅各布的覆盖率?

问题描述 投票:0回答:1

我需要测试一个调用另一个私有方法的方法,问题不是试着模拟私有方法返回的结果,而是这样做不是要获得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.");
    }
  }
}
java junit java-8 mockito powermock
1个回答
1
投票

不,不可能。选择一个或另一个。

这种“覆盖范围”甚至可以证明什么?您实际上并没有覆盖它。代码覆盖率是一项度量标准,可以帮助您识别未经过良好测试的斑点,而不应该尝试诱使它们显示出高于实际水平的斑点。

© www.soinside.com 2019 - 2024. All rights reserved.