2016-12-14 5 views
1

私はユニットテストの慣行に慣れていません。以下のコードで問題があります。メソッドTestEnums最初のAssert失敗すると、テストエクスプローラにエラーメッセージが1つだけ表示されます。ユニットテスト、コレクション内のすべてのオブジェクトのAssert結果を表示するように自動化

私はテストエクスプローラにアサート失敗すべて、つまり、EnumHasRepeatedValues方法のアサートに失敗したすべてのテストのEnumを表示するには、このコードを適応したいと思います。

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

試験方法は互いに独立しているべきである。他のテストメソッドからテストメソッドを呼び出さないでください。

最初のアサーションが失敗したときに定義によるテストが失敗するため、テストに失敗したのは1回だけです。

すべての列挙型の値をテストする場合は、それぞれ別のテストを作成します。

+0

答えがありがとうございますが、できません。すべてのアセンブリをテストします。そのため、私は公開された方法で列挙型テストを自動化する必要があります。 – ElektroStudios

+0

まあ、テストが一度だけ失敗したとしたら、ただ一つのメッセージだけを表示し、そのエラーを修正してからテストを再実行し、再び失敗します。生産性ではないので、私はすべてのエラー/失敗したテストを1回に1回だけではなく、一度に知るほうが常に良いです。 (私の悪い英語のために申し訳ありません) – ElektroStudios

関連する問題