我正在使用SonarQube进行静态代码分析,并且由于无法检查第三方库的if
条件的备用条件而引发了一个问题:
CountDownLatch connectedSignal = new CountDownLatch(1);
zookeeper = new ZooKeeper(connectionString,this.sessionTimeout, event -> {
if (event.getState() == KeeperState.SyncConnected) {
connectedSignal.countDown();
}});
connectedSignal.await();
Sonarqube的错误: “需要通过单元测试再覆盖1个分支,以达到65.0%分支覆盖率的最低阈值。”这是因为我没有覆盖单位测试案例中的否定if条件。问题是,如何在我的单元测试用例中为上述if条件生成否定测试用例?
答案 0 :(得分:1)
通过将keeperstate传递给方法并从方法外部设置不同的keeperstate以测试负的if条件来解决。
public ZooKeeper connect(String connectionString,
String sessionTimeout, KeeperState keeperState) {
zookeeper = new ZooKeeper(connectionString,sessionTimeout, event -> {
if (event.getState() == keeperState) {
connectedSignal.countDown();
}
}
);
connectedSignal.await(this.sessionTimeout, TimeUnit.MILLISECONDS);
}