Java Lambda表达式条件代码覆盖率的单元测试
我正在使用SonarQube进行静态代码分析,这会引发一个问题,即无法检查第三方库的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
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);
}