2017-02-27 126 views
1

我使用SonarQube靜態代碼分析的代碼覆蓋它提出的不是一個問題,可以檢查備用狀態的if條件的第三方庫:單元測試Lambda表達式條件

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%分支覆蓋的最低閾值。」這是因爲我沒有在單元測試案例中報道負面的條件。問題是,如果在我的單元測試用例中爲上述條件生成一個否定測試用例?

回答

1

通過將keeperstate傳遞給方法並設置不同的keeperstate從外部方法來解決以測試否定條件。

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); 
    }