我正在尝试为我的项目编写自动化测试。
我无法控制以下代码的编写方式,也无法修改此代码:
Public Class IAmASignleton
Private Shared ReadOnly _Instance As ISomeInterface
Shared Sub New()
_Instance = New ConcreteVersionOfInterface()
End Sub
End Class
我是否有覆盖/替换此类中的实例属性,以便我可以创建此接口的测试版本,当我在Test项目中时,该接口将用于代替硬编码类?
我可以使用工具拦截对此类的调用并插入我自己的吗?
用我自己的类替换ConcreteVersionOfInterface的任何其他方法吗?
答案 0 :(得分:2)
尝试这样的事情:
GetType(IAmASignleton).GetField("_Instance", _
Reflection.BindingFlags.NonPublic Or Reflection.BindingFlags.Static _
).SetValue(Nothing, New ConcreteVersionOfInterface_Test)
(我在我自己的“玩具项目”中,使用你的例子IAmASignleton
等,并在那里工作。)
答案 1 :(得分:0)
根据documentation,你不能这样做:
只能在声明中为ReadOnly变量赋值 或者在定义它的类或结构的构造函数中。