2012-01-24 37 views
7

在處理較大的項目時,編譯和啓動單元測試框架可能需要至少10秒鐘的時間。有沒有有效的方法來縮短反饋循環時間?我打算在測試運行之間對一個單元測試類和另一個類進行小的更改。在C#中,改進單元測試反饋循環的好方法是什麼?

我考慮過其他一些方法。我沒有看到編譯和運行單個測試類和依賴項的方法。我可以增加解決方案中的項目數量,以便每個程序集編譯所需的時間更少,但這會導致其他問題。 NCrunch似乎減少了手動運行測試的需求,但它仍編譯完整的程序集。

澄清: 10秒鐘包括編譯單元測試類和被測試類的時間。我對NCrunch的問題可能是因爲電腦不夠強大。

回答

7

您必須將每個測試類放入單獨的程序集中 - 程序集實際上是編譯單元。如果在之後需要10秒重新編譯更改爲測試類,這表明您在一個程序集中有太多的測試,或者您的計算機非常慢。很可能,獲得更好的機器(或者改進具有更多內存或SSD的現有機器)是最好的方法。

我自己使用NCrunch,儘管它仍然編譯完整的程序集,但它在後臺執行這一事實意味着通常在我精神煥發的時候,測試已重建並正在運行。如果你擁有多個處理器和一個ramdisk,NCrunch運行良好 - 你可以設置它的構建位置,以及它可以使用多少個處理器。

如果你只考慮 NCrunch(或The Mighty Moose等 - 類似的東西),但實際上沒有嘗試過,假設它不會給你足夠快,之前應該給它一個去。

+0

我並不清楚一點。 10秒之後是對正在測試的班級進行更改。我嘗試了NCrunch,但我認爲我的電腦缺乏動力。 – BenMaddox

+0

我使用NCrunch並且運行平穩。當然,我有一臺最近的電腦和一個SSD。 –

+0

@BenMaddox:你的機器是什麼規格,改進它有多現實? –

2

您可能會檢出AutoTest.Net,它是Visual Studio的附件,可在您編寫代碼時在後臺運行單元測試。

通過這種方式,您可以將單元測試更像編譯器錯誤/警告,並獲得相對實時的反饋。

0

聲明式單元測試將有效地清除編譯時間,但前提是您的架構允許。例如,將單元測試移動到數據庫對於我們在大型項目中運行良好。

+0

我仍然會對正在測試的課程進行更改。我從未考慮將單元測試移動到數據庫。 – BenMaddox

+0

是的,只有在添加新測試時纔會有所改進。 – henginy

相關問題