样本控制器
public class SampleController {
public void sampleMethod() {
ClassAbc classAbc = new ClassAbc();
classAbc.abcMethod();
//doStuff
}
}
ClassAbc
public class ClassAbc {
public void abcMethod() {
//doStuff
}
}
Junit for SampleController
@RunWith(PowerMockRunner.class)
@PowerMockRunnerDelegate(SpringJUnit4ClassRunner.class)
@PrepareForTest({SampleController.class})
public class SampleControllerTest {
@Autowired
SampleController sampleController;
public void setUp() {
ClassAbc classAbc = PowerMockito.mock(ClassAbc.class);
PowerMockito.whenNew(ClassAbc.class).withAnyArguments()
.thenReturn(classAbc);
doNothing().when(classAbc).abcMethod();
}
@Test
public void testsampleMethod() throws Exception {
sampleController.sampleMethod();
}
}
当我在@PrepareForTest中添加“SampleController.class”时,即:
@PrepareForTest({SampleController.class})
当我运行Sonar工作时,我得到了以下违规行为。
14 more branches need to be covered by unit tests to reach the minimum threshold of 65.0% branch coverage.
那是Iam对该课程的覆盖范围为零。
我想如果有必要将构造函数调用的类放入@PrepareForTest注释而不是正在构造的类中。
或者有人可以找到我解决该Sonar违规行为的解决方案。 提前致谢
答案 0 :(得分:1)
如PowerMockito wiki中所述:
...现在没有办法使用带有JaCoCo实时仪器的PowerMock。 ...使用JaCoCo获取代码覆盖率 - 使用离线检测... 您可以在我们的存储库中找到将PowerMock与JaCoCo Offline Instrumentation和Maven一起使用的示例:jacoco-offline example。