我有一个字符串显示在我的所有页面上,以指示系统内置的模式(即Debug,Beta,Release等)。该字符串是使用编译器条件(VB中的#If)设置的,因此它将根据我们所处的构建模式自动更改。
我为此编写了一个测试,它也使用编译器条件(与实时代码完全相同),问题是,如果不在我的所有不同构建下运行我的测试,我无法验证它为所有构建生成正确的字符串。< / p>
这是我的代码:
Public Sub AssertHasMessageForBuild()
Dim message As String = Nothing
#If DEBUG Then
message = "DEBUG MODE"
#ElseIf BETA Then
message = "BETA"
#End If
If Not String.IsNullOrEmpty(message) Then
Assert.AreEqual(message, ViewData("DebugMessage"))
Else
CollectionAssert.DoesNotContain(ViewData, "DebugMessage")
End If
End Sub
答案 0 :(得分:1)
您可能希望分离出两个职责 - 检测您所处的模式,并创建消息。然后,您可以TDD创建消息,使模式检测成为您不能轻易TDD的系统的唯一部分。
但你仍然可以手动测试它。有时这是唯一的出路。如果您更改了它,请确保再次手动测试它(您可能需要相应地添加注释)。