2008-11-06 191 views
14

在.NET中,您應該將單元測試項目與解決方案的其餘部分一起放置嗎?還是應該有一個容納所有測試項目的測試解決方案?在解決方案中測試項目

我們有我們的代碼庫解決方案中的所有測試項目...它似乎有點麻煩。

你通常做什麼?

回答

7

在我們當前的項目中,我們決定將所有單元測試放在單獨的項目中。應用程序代碼和測試使用相同的解決方案,但至少我們可以構建(並部署)不帶單元測試代碼的版本。

這個問題的缺點是 - 有時候你的單元測試不能到達應用程序代碼的某些成員(受保護的和內部的),但是這通常會讓我們發現我們的設計可以得到改進。

我想我應該指出類似的線程Here與相同/相似的主題更多的答案。

+1

嘗試InternalsVisibleToAttribute(目標程序集),然後您的單元測試可以訪問內部成員。私人需要使用反射的hackarounds,所以如果他們需要獨立測試,我總是將它們標記爲內部。 – cfeduke 2008-11-06 18:24:26

+0

(我認爲OP已經按照你的建議做了,他想知道該解決方案是否應該有多個測試項目,或者應該有一個單獨的解決方案,其中只包含測試項目。) – cfeduke 2008-11-06 18:27:09

+0

cfeduke:謝謝指向InternalsVisibleToAttribute! – FOR 2008-11-06 18:49:47

2

我一直把它們作爲解決方案的一部分,畢竟它們是解決方案的一部分。不過,對於查看項目的不同方法,您可以有多種解決方案,因此無需解決方案可能是您希望爲某些情況創建的解決方案。

0

我不使用.NET,但是當我開發任何類型的測試用例時,我將它們與代碼的其餘部分隔離,以便我可以在不進行測試的情況下部署應用程序。用戶不需要,甚至不需要那些東西。

1

我們的測試代碼沒有出貨,但它們是整個解決方案的一部分。我們的構建器分離出測試組件和核心組件。從解決方案管理角度來看,140多個項目的解決方案看起來非常令人難以置信。

1

我們總是在同一解決方案中使用單獨的項目。

這意味着我們可以確定(使用引用)單元測試代碼也測試我們的明確引用(而不是隱式地獲取某些東西的可見性,因爲它在同一個程序集中 - 例如「Internal」)

0

看看你的項目的設計。如果它接近MVC佈局或其中一個替代方案,那麼您應該擁有不同級別的不同裝配。爲您的設計的每個級別製作一個測試組件。

我們的測試項目通常運行在創建EXE的項目的位置。我們的EXE項目是一個精簡的shell,它將事件和信息傳遞給一個裝有控制器類的程序集,其中大部分人都將代碼放入EXE項目中。這使得測試項目可以假裝爲正常測試過程90%的EXE。

我們仍在制定實際測試案例的最佳安排。現在我們有幾個主要級別的框架實用工具,應用程序對象,UI框架,命令,UI控制器和EXE。除EXE(手動測試)外,我們還爲每個級別提供了一個程序集。當我們編輯一個程序集時,我們加載該級別的測試程序集。當我們需要做一些觸及每個級別的事情時,我們必須加載所有的測試程序集。

在我們的一個按鈕構建過程中,我們運行測試項目exe。 (我們有一個單獨的實用程序)。

1

通常我會在自己的項目中進行單元測試,並在應用程序解決方案中的自己的項目中進行集成測試。

我在哪裏工作,我們正在考慮把Web測試放在一個單獨的解決方案中。我們計劃與QA團隊分享網絡測試創作,我們不希望這些測試成爲構建責任。