我试着像这样测试私有静态方法:
public void myMethodTest()
{
MyClass target = new MyClass();
PrivateType pt = new PrivateType(target.GetType());
var x = pt.InvokeStatic("MyMethod");
//Some type of Assert here
}
该方法还在其类中使用私有静态变量来检查它是否为null,MyMethod是我试图测试的
private static HashSet<AnotherClass> fakeName{get;set;}
private static void MyMethod()
{
if (null== fakeName)
{
fakeName = new HashSet<AnotherClass>();
}
}
谢谢大家,如果您需要更多说明,请告诉我们
如果我在我的测试中,
Assert.IsNotNull(x);
测试失败,我只是想知道该方法是否实际被调用,我按照这个答案运行此测试Stack answer
答案 0 :(得分:1)
使用Typemock Isolator,您可以:
public void myMethodTest()
{
MyClass target = new MyClass();
Isolate.Invoke.Method<MyClass>("MyMethod");
Isolate.Verify.NonPublic.WasCalled(typeof(Dependency), "MyMethod");
}
但它是商业广告。