Java Lambda表达式条件代码覆盖率的单元测试

Java Lambda表达式条件代码覆盖率的单元测试,java,unit-testing,lambda,Java,Unit Testing,Lambda,我正在使用SonarQube进行静态代码分析,这会引发一个问题,即无法检查第三方库的if条件的替代条件: CountDownLatch connectedSignal = new CountDownLatch(1); zookeeper = new ZooKeeper(connectionString,this.sessionTimeout, event -> { if (event.getState() == KeeperState.SyncConnected) { conn

我正在使用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条件生成一个否定的测试用例?

通过将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);
    }