2016-12-14 20 views
1

我是新來的單元測試實踐,我遇到的問題是在下面的代碼中,方法TestEnums它似乎停止/打破迭代當第一個斷言失敗,我的意思是,它只顯示測試瀏覽器中的一個失敗的錯誤消息。單元測試,自動顯示集合中的每個對象的斷言結果

我想適應這個代碼顯示所有失敗的斷言在測試資源管理器,也就是說,每一個測試枚舉失敗EnumHasRepeatedValues方法的斷言。

Imports Microsoft.VisualStudio.TestTools.UnitTesting 
Imports System.Reflection 

<TestClass()> 
Public Class Application 

    <TestMethod()> 
    Public Sub TestEnums() 
     Dim ass As Assembly = Assembly.Load("Elektro.Application") 

     Dim types As IEnumerable(Of Type) = 
      From t As Type In ass.GetTypes() Where t.IsEnum 

     For Each t As Type In types 
      EnumHasRepeatedValues(t) 
     Next 
    End Sub 

    Public Sub EnumHasRepeatedValues(ByVal t As Type) 
     Assert.AreEqual([Enum].GetValues(t).Length, 
         [Enum].GetNames(t).Length, 
         String.Format("Enum {0}.{1} has defined repeated values.", 
             t.Namespace, t.Name)) 
    End Sub 

End Class 
+0

您是否閱讀過關於使用數據源的[this](https://msdn.microsoft.com/en-us/library/ms182527.aspx)? –

+0

@Pro Grammer感謝評論,但是,我不確定這種解決方案是否可以幫助我實現這一點,有必要像MSDN示例中那樣生成一個數據庫? – ElektroStudios

+0

從我所見過的內容可以將[CSV,XML或本地數據源](http://stackoverflow.com/a/14139050/6144259)嵌入到測試庫中。它不一定是一個完整的數據庫。我還發現[this](http://stackoverflow.com/a/13710788/6144259)可能更有幫助 –

回答

2

測試方法應該是相互獨立的。不要從其他測試方法調用測試方法。

根據定義的測試在第一次斷言失敗時失敗,這就是爲什麼您只能看到一次測試失敗的原因。

如果你想測試所有的枚舉值,爲每個測試編寫一個單獨的測試。

+0

感謝您的回答,但我不能這樣做,實際上超過200個枚舉數所有要測試的程序集。出於這個原因,我需要以暴露的方式自動化枚舉測試。 – ElektroStudios

+0

好吧,設想一次測試失敗,它只顯示一條消息,然後你修復那個錯誤,然後再次運行測試,然後再次失敗,總是有一個單一的錯誤消息,這是一個很寬鬆的時間,那就是沒有生產力,對我來說總是比一次只知道一次更好地瞭解所有錯誤/失敗的測試。 (對不起,我的英語不好) – ElektroStudios

相關問題