2016-02-24 21 views
2

我遇到了一些性能問題,試圖用我的chutzpah.json文件運行chutzpah.console.exe。對於這個項目,我使用TypeScript並在運行測試之前將TypeScript文件預編譯爲.js文件。每個測試文件通常都會引用一個依賴於其他TypeScript文件 - 這是Visual Studio很高興,因此Chutzpah擴展工作。例如,我的drawerBusiness.spec.ts文件包含此引用:性能問題 - Chutzpah Console.exe和TypeScript

/// <reference path="../../../../app/business/documents/drawerBusiness.ts"/> 

我chutzpah.json文件如下:

{ 
    "Compile": { 
    "Mode": "External", 
    "Extensions": [ ".ts" ], 
    "ExtensionsWithNoOutput": [ ".d.ts" ] 
    }, 
    "Framework": "jasmine", 
    "TestHarnessReferenceMode": "Normal", 
    "TestHarnessLocationMode": "SettingsFileAdjacent", 
    "References": [ 
    { "Path": "./lib/jquery/jquery.js" }, 
    { "Path": "./lib/angular/angular.js" }, 
    { "Path": "./lib/angular-mocks/angular-mocks.js" }, 
    { "Path": "./lib/jasmine-jquery/jasmine-jquery.js" }, 
    { "Path": "./lib/underscore/underscore.js" }, 
    { "Path": "./lib/angular-bootstrap/ui-bootstrap-tpls.js" }, 
    { "Path": "./tests/dependencies.js" } 
    ], 
    "Tests": [ 
    { "Include": "*/tests/specs/*.ts", "ExpandReferenceComments": "true" } 
    ] 
} 

正如你可以從上面看到的,我需要加載一些外部庫。我認爲這些加載一次,然後用於每個測試?

當我使用純JavaScript時,這種配置非常快。它在Visual Studio中完成得非常快,並且通過從chutzpah.console.exe運行測試。但是,因爲我已經切換到放肆,測試是要慢得多:

Tests complete: 263 
=== 263 total, 0 failed, took 74.64 seconds === 

這些結果甚至我們的構建機器上糟糕的是,它選擇的時機了。看來每個運行的spec文件之間有很大的延遲,我認爲這會導致整體緩慢 - 一旦spec文件開始運行,它會以幾百分之一秒完成。有沒有人有任何想法可能配置不正確?

+0

經過進一步的測試,我甚至嘗試刪除「編譯」部分,並使用純JavaScript文件,而且我仍然遇到了經濟下滑的情況。我相當肯定每個文件的測試工具創建都會導致這些問題,並且我相信在升級到支持非JS文件的Chutzpah版本後會出現放緩。但也許我只是在做配置錯誤。 –

回答

0

這裏有一些東西,你可以嘗試,以幫助這個問題的底部:

  1. 你可以嘗試在你的chutzpah.json文件enableding "EnableTestFileBatching": true,看看是否有幫助?如果你有很多測試文件,速度會很慢,這個設置告訴chutzpah將它們分配到一個線束中。

  2. 您可以提供/跟蹤選項的輸出,以便我可以看到所有的時間嗎?

  3. 你能提供一個我可以在本地運行的repro嗎?

+0

1.)EnableTestFileBatching允許它在大約5秒鐘內運行,但是我將不得不排除我的衝突,因爲它並不真正獨立地運行測試。但是,由於我使用的是Angular,因此我應該能夠隔離這些測試。我會試試這個。 –

+0

2./trace選項顯示每個測試運行,每個測試運行0.02到0.03秒。所以,我認爲個人線束創造是一直需要的。我認爲EnableTestFileBatching可能是唯一對我來說很好的解決方案。 –

+0

您100%正確,交易是EnableTestFileBatching交易隔離性能。您也可以嵌套chutzpah.json文件以允許更精細的批處理。 –