如何解决调用类的共享成员时,Gallio中为TypeInitializationException和NullReferenceException
| 我正在尝试使用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
我意识到共享方法不应该有这样的例外,这就是为什么它让我感到非常困惑。
谢谢
解决方法
静态/共享方法
IsBool
是类CMS.Utility
的一部分,CMS.Utility
类很可能具有静态构造函数(在Utility.vb的第12行附近)。
在首次使用该类型之前(即在执行called3ѭ之前),静态构造函数被调用一次。似乎其中存在导致空引用异常的错误。您可以在第12行附近张贴该方法的代码吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。