1

我有一个字符串显示在我的所有页面上,以指示系统内置的模式(即调试、测试、发布等)。该字符串是使用编译器条件(VB 中的#If)设置的,因此它会根据我们所处的构建模式自动更改。

我为此编写了一个测试,它也使用编译器条件(就像实时代码一样),问题是,如果不在我所有不同的构建下运行我的测试,我无法验证它为所有构建生成正确的字符串。

这是我的代码:

        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
4

1 回答 1

1

TDD 并不是真正的出色测试机制。它是一种帮助你思考类的设计和责任的机制。

您可能希望将这两个职责分开 - 检测您所处的模式并创建消息。然后,您可以对消息的创建进行 TDD,使模式检测成为系统中唯一不能轻易进行 TDD 的部分。

不过,您仍然可以手动测试它。有时这是唯一的出路。如果您更改它,请确保再次手动测试它(您可能需要相应地添加评论)。

于 2012-07-12T13:31:22.783 回答