摘要 class 的 Jacoco 代码覆盖率部分显示
Jacoco code coverage for abstract class partly shows up
我有一个摘要 class,比方说 MyClassA
,还有一个扩展它的 class,比方说 MyClassB
。
我已经用单元测试覆盖了 MyClassA
(不是抽象)中的一个方法,运行 它们,一切都是绿色的。
然后在我 运行 代码覆盖之后,我看到唯一显示的覆盖部分是 MyClassA
的构造函数,这很奇怪,因为它是在测试的 @Before
部分创建的 class.
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
上的所有存根和修饰符,相同。
结果我不得不使用
@Rule public PowerMockRule mPowerMockRule = new PowerMockRule();
测试内部 class 而不是
@RunWith(PowerMockRunner.class)
注释。虽然不知道为什么。
P. S. 如果您使用的是第一个 - 请注意测试不会调试。
我有一个摘要 class,比方说 MyClassA
,还有一个扩展它的 class,比方说 MyClassB
。
我已经用单元测试覆盖了 MyClassA
(不是抽象)中的一个方法,运行 它们,一切都是绿色的。
然后在我 运行 代码覆盖之后,我看到唯一显示的覆盖部分是 MyClassA
的构造函数,这很奇怪,因为它是在测试的 @Before
部分创建的 class.
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
上的所有存根和修饰符,相同。
结果我不得不使用
@Rule public PowerMockRule mPowerMockRule = new PowerMockRule();
测试内部 class 而不是
@RunWith(PowerMockRunner.class)
注释。虽然不知道为什么。
P. S. 如果您使用的是第一个 - 请注意测试不会调试。