2009-06-11 44 views
3

在測試的上下文中是否有任何好方法使用條件屬性?C#:使用條件屬性進行測試

我的想法是,如果你能做到這一點:

[Conditional("Debug")] 
public void DebugMethod() 
{ 
    //... 
} 

也許你可以有一定的使用:(?)

[Conditional("Test")] 
public void TestableMethod() 
{ 
    //... 
} 

回答

4

我沒有看到一個使用時有一個更好的替代方案:測試項目。

使用NUnit或MSTest以更優雅的方式實現此功能。

+0

請詳細說明。這只是一個頭腦風暴的事情。我只是把它扔到那裏,我不知道。 – 2009-06-11 09:11:47

1

我會接受邁赫達德的答案 - 我只是想給的,當你可能使用這些屬性的詳細背景:

之類的東西[Conditional]更通常用於控制之類的記錄/追蹤,或與互動執行調試器;這些調用在常規代碼的中間是有意義的,但在特定的構建中您可能不需要這些調用(並且#if ...等等很難被忽略)。

1

如果測試代碼不是產品的一部分,它不應該在產品代碼庫中。我看到一些項目試圖將單元測試包含在與測試對象相同的項目中,並且使用#if語句將它們僅包含在調試版本中,以便稍後對其進行後悔。

一個顯而易見的問題是應用程序項目獲得對單元測試框架的引用。儘管您可能不需要將該框架作爲產品的一部分發布(如果您可以保證發佈版本中沒有代碼可以引用它),它仍然會讓我感到有趣。

設測試代碼爲測試代碼,生產代碼爲生產代碼,,讓生產代碼不知情

1

這樣做的另一個問題是你可能想在你的發佈版本上運行你的單元測試。 (我們當然會這樣做)。