1

我正在尝试使用 Gallio 和 MbUnit(版本 3.2.750)。

根据教程(http://gallio.org/wiki/doku.php?id=getting_started:my_first_tests),我创建了一个新的类项目,引用了我想测试的另一个项目(另一个类库),写了一些测试,然后运行它们。

我的每一个测试都非常非常简单。而且我测试的方法也很简单。

这是一个例子。测试功能:

    Public Shared Function IsBool(ByVal data As Object) As Boolean
        Dim retour As Boolean = True
        Try
            If data.ToString IsNot Nothing Then
                If data.ToString = "1" Or data.ToString = "0" Then
                    retour = True
                Else
                    Boolean.Parse(data.ToString)
                End If

            End If

        Catch ex As Exception
            retour = False
        End Try

        Return retour
    End Function

和测试:

    <Test()> _
    Public Sub IsBool_trueString()
        Dim result As Boolean = IsBool("true")
        Assert.AreEqual(True, result)
    End Sub

和错误:

System.TypeInitializationException: Une exception a été levée par l'initialiseur de type pour 'CMS.Utility'. ---> System.NullReferenceException: La référence d'objet n'est pas définie à une instance d'un objet.
   à CMS.Utility..cctor() dans C:\...\Utility.vb:ligne 12
   --- End of inner exception stack trace ---
TypeName: CMS.Utility
   à CMS.Utility.IsBool(Object data)
   à KoamaOPTests.CMS.Tests.Utility.IsBool_trueString() dans C:\...\Tests\Utility.vb:ligne 34

我意识到共享方法不应该有这样的例外,这就是为什么它让我非常非常困惑。

谢谢

4

1 回答 1

1

您的静态/共享方法IsBoolCMS.Utility最有可能具有静态构造函数的类的一部分(在Utility.vb中的第 12 行附近)。

在第一次可以使用该类型之前调用静态构造函数一次IsBool甚至在执行之前)。似乎其中存在导致空引用异常的错误。您可以在第 12 行附近发布该方法的代码吗?

于 2011-05-31T20:53:17.170 回答