我正在尝试使用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
我意识到共享方法应该没有这样的异常,这就是为什么它让我非常非常困惑。
由于
答案 0 :(得分:1)
您的静态/共享方法IsBool
是类CMS.Utility
的一部分,其中很可能是static constructor( Utility.vb 中的第12行)。
静态构造函数在第一次使用之前(即IsBool
执行之前)之前调用一次。似乎它中存在导致空引用异常的错误。你能在第12行附近发布方法的代码吗?