据我所知,Visual Studio 2012不支持私有访问者。你能给我一些关于可能的替代方案的信息吗? PrivateObject.Invoke()对我来说不是最好的解决方案。
提前谢谢!
答案 0 :(得分:7)
将您的成员标记为“内部”并使用InternalsVisibleTo属性。使用简单,没有类型安全问题。
答案 1 :(得分:0)
答案 2 :(得分:0)
我开始使用 Dynamic Private Accessor 功能,它是nuget包Chaining Assertion for MSTest的一部分,我对它很满意。一个人失去强类型,但至少语法仍然可读。 这适用于动态功能。还有其他测试框架的包。 测试代码如下所示:
var target = CreateMyObjectUnderTest();
dynamic dynamicTarget = target.AsDynamic();
Assert.AreEqual("abc", dynamicTarget.MyPrivateProperty);
Assert.AreEqual("xyz", dynamicTarget.PrivateMethod(123));