单元测试,自动显示集合中每个对象的断言结果
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
测试方法应该相互独立。不要从其他测试方法中调用测试方法。
根据定义,在您的第一个断言失败时测试失败,这就是为什么您只看到一个测试失败的原因。
如果您想测试所有枚举值,请为每个值编写单独的测试。
我是单元测试实践的新手,我遇到的问题是在下面的代码中,方法 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
测试方法应该相互独立。不要从其他测试方法中调用测试方法。
根据定义,在您的第一个断言失败时测试失败,这就是为什么您只看到一个测试失败的原因。
如果您想测试所有枚举值,请为每个值编写单独的测试。