我正在编写一个单元测试来访问隔离数据存储中的文件。文件名存储在类中的私有const字符串中,因为我不在整个应用程序中的任何其他位置使用它。
然而,当我运行单元测试时,当我调用PrivateObject类实例的GetField(“fieldName”)方法时,我收到“找不到字段”错误。
string historyFileName = (string)history.GetField("ISOLATED_HISTORY_FILE");
答案 0 :(得分:5)
使用您可以传递 BindingFlags
并传递BindingFlags.NonPublic | BindingFlags.Instance
的重载。
看看here。
我以为你有一个领域。在编译时,Const
确实被文字替换。更改为static readonly
并传递BindingFlags.NonPublic | BindingFlags.Static
。
如果您无法更改来源,则无法
答案 1 :(得分:2)
使用PrivateType然后调用GetStaticField方法来检索私有const的值。
答案 2 :(得分:0)
我发现任何可能遇到同样问题的人都有问题。我将字段从私有const字符串更改为私有字符串。显然,反射不能识别用const标记的字段。这不是我提交的名称,因为我尝试使用ISOLATED_HISTORY_FILE和IsolatedHistoryFile进行测试,并且它可以双向工作。