gpt4 book ai didi

java - 抽象类的 Jacoco 代码覆盖率部分显示

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:51 25 4
gpt4 key购买 nike

我有一个抽象类,比如说MyClassA,以及一个扩展它的类,比如说MyClassB。我已经用单元测试覆盖了 MyClassA (非抽象)中的一个方法,运行它们,一切都是绿色的。然后,在运行代码覆盖率之后,我发现唯一显示的覆盖部分是 MyClassA 的构造函数,这很奇怪,因为它是在测试类的 @Before 部分中创建的。

MyClassBUnitTests@Before 部分看起来像这样:

@Before
public void setUp() throws Exception {
Context applicationContext = mock(Context.class);
MemberModifier.stub(MemberMatcher.method(MyClassB.class,
"someFunction")).toReturn(null);
classBInstance = new MyClassB(applicationContext, ...);
//calls the constructor of MyClassA through super()
}

@Test 部分看起来像:

 @Test
public void someTest() throws Exception {
classBInstance = spy(classBInstance);
MemberModifier.field(MyClassB.class, "somefield").set(classBInstance, someFieldStub);
classBInstance.methodToTest();
// actually calls a method implemented in MyClassA
}

是的,我尝试调用 MyClassA 上的所有 stub 和修饰符,同样。

最佳答案

结果我不得不使用

@Rule public PowerMockRule mPowerMockRule = new PowerMockRule();

在测试类内部而不是

@RunWith(PowerMockRunner.class)

注释。但无法说出原因。

P。 S. 如果您使用第一个 - 请注意测试不会进行调试。

关于java - 抽象类的 Jacoco 代码覆盖率部分显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50903906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com