以某種方式可以做到這一點嗎?在Visual Studio和.NET中進行測試的條件
[Conditional("TEST")]
...
或
#if TEST
#end if
的原因是,我想封裝了一些測試邏輯在libray,而無需將邏輯解壓縮到它自己的測試libray。
謝謝!
以某種方式可以做到這一點嗎?在Visual Studio和.NET中進行測試的條件
[Conditional("TEST")]
...
或
#if TEST
#end if
的原因是,我想封裝了一些測試邏輯在libray,而無需將邏輯解壓縮到它自己的測試libray。
謝謝!
是的,這是可能的。
創建構建配置名爲TEST和
[Conditional("TEST")]
上你的方法
。
要在Visual Studio中創建構建配置,請轉到「構建」菜單 - >配置管理器。在「主動解決方案配置:」下選擇「新...」。給一個名字(在你的情況下測試),你可能想要在「複製設置來自:」中設置調試。
這也將讓您使用:
#if TEST
...
#end if
但是使用#如果隱藏了編譯器,它在我的經驗是很痛苦的根源構建配置間切換時的部分,由於重構的代碼這打破了其他配置。
編輯
@Aaronaught提到,有條件的屬性將不工作。我認爲天真的解決方案是使用#if
。在這種情況下,你可能想要做這樣的事情:
#if TEST
[TestMethod()]
#endif
測試方法前
避免隱藏的不僅僅是從編譯器TestMethod()
屬性更多。
聽起來你想使用預處理器指令(available in C#,可能還有其他語言)。具體來說,在源代碼中使用#define和/ define編譯器選項以及#if語句。您沒有說明您使用的是哪個版本的.NET,但是MSDN表明它一直回到.NET 1.1,至少使用Visual Studio 2003.
只需創建一個新的生成配置, steenhulthin並添加編譯符號TEST。
構建配置的名稱並不重要,但你必須設置這個configaration條件編譯符號包括TEST
(項目設置,頁面「構建」 IIRC)。您也可以在每個要使用它的文件中定義編譯符號,而不是項目設置。 (#define TEST
)
這不起作用。無論如何使用ConditionalAttribute,無論如何MSTest都會運行測試,正如此問題所述:[使MSTest遵守條件屬性?](http://stackoverflow.com/q/3133988) – Aaronaught 2011-06-19 17:21:26