单元测试,自动显示集合中每个对象的断言结果

Unit Testing, automate to display Assert result for every object in collection

我是单元测试实践的新手,我遇到的问题是在下面的代码中,方法 TestEnums 似乎 stop/break 第一个 Assert 失败时的迭代,我的意思是,它仅在 Test Explorer.

中显示一条失败的错误消息

我想修改此代码以显示 所有 Test Explorer 中的失败断言,即每个测试的枚举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

测试方法应该相互独立。不要从其他测试方法中调用测试方法。

根据定义,在您的第一个断言失败时测试失败,这就是为什么您只看到一个测试失败的原因。

如果您想测试所有枚举值,请为每个值编写单独的测试。