2013-07-10 95 views
2

我正在使用istanbul(通過grunt,jasmine和phantomJS)爲我的單元測試生成代碼覆蓋率報告。我得到了一些我稱之爲假陽性的模塊,這些模塊包含我正在測試的模塊作爲調用其方法的依賴項,即代碼覆蓋率 - 消除誤報

module1.js加載module2.js作爲依賴項。模塊1的單元測試調用module1.method,後者又調用module2.method。當我看到代碼覆蓋率報告module2.method以綠色突出顯示時,即使沒有對其進行測試。

這是我應該理解的東西,我該如何避免它?

回答

0

我注意到了這一點,但是,我認爲這是正確的行爲。代碼覆蓋僅意味着代碼在測試過程中被執行。並不是代碼是斷言的一部分。

2

我創造了這個咕嚕任務,以幫助確定未明確由他們自己的測試套件

grunt.registerTask('missingSpecs', 'Missing specs list', function (env, limit) { 
    var specs = getFileList(getSpecs(env)), 
     src = getFileList(getSrc(env)), 
     missingSpecs = []; 

    for (var file in src) { 
     if (specs.indexOf(src[file]) === -1) { 
      missingSpecs.push(src[file]); 
     } 
    } 
    if (missingSpecs.length) { 
     console.log(
      '\n******************************************************************************************************\n' + 
      '*** The following common js files aren\'t covered by any tests. They won\'t write themselves, y\'know ***\n' + 
      '******************************************************************************************************\n' 
      ); 
     missingSpecs.sort(function() { 
      return Math.random() - 0.5; 
     }).slice(0,limit).forEach(function (file) { 
      console.log(file); 
     }); 
    } 

}) 

凡getFileList使用grunt.file.expand和一些正則表達式來獲得模塊名稱的列表覆蓋文件。