我正在尝试使用JaCoCo生成代码覆盖率报告。我的公司是具体的,我必须只使用JaCoCo。不幸的是,有一个测试用例,我需要使用PowerMock来模拟私有方法。所以我必须使用@PrepareFor注释和@RunWith(PowerMockRunner.class)注释。当我尝试使用gradle clean build jacocoTestReport在gradle中生成报告时,由于注释,代码覆盖率并未涵盖此测试用例。 有解决方法吗?
答案 0 :(得分:0)
您有两种方式:
答案 1 :(得分:0)
我接受了PowerMockito的报道,但我认为它并不适用于所有情况。它只有在要测试的类具有超类时才有效。让我解释一下。
这可能是您要测试的课程
class ClassToBeTested extends/implements SuperClass/interface {
//Code
}
例如,如果要为名为“ClassToBeTested”的类编写单元测试,并且它有一些必须模拟的私有方法或构造函数。因此,通常您会尝试使用PowerMockito来模拟私有方法,它大致如下所示。
@RunWith(PowerMockRunner.class)
@PrepareForTest(ClassToBeTested.class)
class ClassToBeTestedTest {
//Lots or some test code here
}
现在您不会获得“ClassToBeTested”的代码覆盖率。但是在PrepareForTest注释中,如果我们使用超类或由待测试类实现的接口而不是如下所示的原始类。
@RunWith(PowerMockRunner.class)
@PrepareForTest(SuperClass.class)
class ClassToBeTestedTest {
//Lots or some test code here
}
我得到了代码覆盖率。但是只有当classToBeTested有一些超类时,这才有效。这只是一个快速而肮脏的修复,但不是烫发。适合所有人的解决方案。