2015-08-13 54 views
0

我正在寫我的UnitTests在一個單獨的項目從我的項目在測試。爲了能夠測試Internal類/成員,我在我的項目中使用了[InternalsVisibleTo]屬性。單元測試,構建配置和內部

#if "BUILD_CONFIGURATION" 
[assembly: InternalsVisibleTo("Tests_ProjectUnderTest")] 
#endif 

以下問題出現了:

我應該使用

哪個構建配置單元測試? Internal不應該在我的發佈代碼中可見,所以#if RELEASE是不可能的。另一方面#if DEBUG並不真正測試我想要發佈的內容。 你應該有一個獨特的UNIT_TEST - 配置?或者你會如何做到這一點?

+4

只需在這裏留下'InternalsVisibleTo'屬性。在一天結束的時候,如果人們想要了解你的內部,他們可以通過反思來完成。 –

回答

0

我通常不會使[InternalsVisibleTo()]屬性成爲有條件的,因爲內部元素只能對指定程序集可見。你可以通過強大的命名組件來增強安全性,所以沒有人可以「僞裝」你的單元測試程序集。但是,如果你擔心這個問題,你應該可能會混淆你的程序集,否則逆向工程是微不足道的。我通常認爲私人/內部是一種意圖聲明而不是安全特徵,因爲它總是可以通過反思來繞過。

我通常會對我的調試配置進行單元測試,因爲我想在我的單元測試結果中看到診斷輸出。這可能取決於您使用的是哪一個跑步者,我使用ReSharper跑步者,並將調試/追蹤輸出捕獲到單元測試窗口中。由於在發佈版本中跟蹤詳細程度降低了,所以我更願意單元測試調試版本。不過,我認爲這是一個判斷。