2013-03-15 74 views
0

這似乎是一個敏感的問題,所以我可能只是會得到很多的恨這一個,但在這裏不用什麼:條件的單元測試

我大量工作的應用程序依賴於外部API,並且該API需要一個個性化的開發人員密鑰才能完成任何操作。這讓單元測試像我這樣的新手特別難以編寫測試,我可以重新分配測試,而不必擔心開發人員密鑰可能會受到影響。

我的觀點是:我想阻止我的單元測試運行,如果沒有提供開發人員密鑰。還應該清楚,如果發生這種情況,它不是應用程序錯誤,而是用戶錯誤。

這是我可以輕鬆使用MSTest框架嗎?

我到目前爲止已經試過(VB)

現在,我只是告訴如果一個開發人員鍵不我的測試失敗:

<TestClass()> Public Class Tests 

    Private Shared DeveloperKey As NMAKey 

    <ClassInitialize> 
    Public Shared Sub Initialize(context As TestContext) 
     DeveloperKey = NMAKey.TryParse("Your developer key") 
    End Sub 

    <TestMethod> 
    Public Sub Example() 
     ' test condition 
     Assert.IsNotNull(DeveloperKey) 

     ' 
     ' actual test code that relies on 'DeveloperKey' being set 
     ' 
    End Sub 

End Class 

我這個問題是用戶錯誤和實際的設備故障之間沒有區別。

回答

0

您應該將開發人員密鑰放在配置文件中,並忽略版本控制中的文件。您可以檢查是否在測試類的初始化中找到該鍵,而不是單個測試。另一種可能是編寫測試來檢查配置文件中是否存在密鑰。我不明白爲什麼你認爲重要的是要區分用戶錯誤和應用程序錯誤,破碎是壞:) :)

+0

感謝您的建議。我認爲區分這兩者是很重要的,因爲代碼可能沒有問題,但如果沒有提供開發人員密鑰,單元測試仍然會在100%的時間內失敗。在這種情況下,破碎在我看來並沒有真正被打破。這只是一個似乎沒有被MSTest框架覆蓋的場景(據我所知)。 – 2013-03-20 13:26:38

+0

我正在將此標記爲答案。配置文件是一個好主意。我還將測試條件移動到了您所建議的初始化方法中,並用'Assert.Inconclusive'替換了'Assert.IsNotNull'來作出區分。到目前爲止,這似乎工作得很好,我不需要在每個程序中編寫測試條件。 – 2013-03-20 14:17:44