Unit Test c# for Private Method
本问题已经有最佳答案,请猛点这里访问。
我需要在抽象类中测试
1 2 3 4 5 6 7 8 9 10 11 12 | public abstract class BaseAPI { private void CheckWarehouseAvailability(Order order) { //codes here } } public class Processor : BaseAPI { } |
这是我的TestMethod
1 2 3 4 |
当我运行测试方法时,我收到此错误:
您需要实例化
1 2 3 | var order = new Order(); var retVal = privBase.Invoke("CheckWarehouseAvailability", order); // ... Assert |
MSDN:
PrivateObject.Invoke(String, Object[])
另外,我不确定你在这里断言:
1 | Assert.AreEqual(true, retVal); |
...因为
首先,您需要通过反射获取方法
1 2 | MethodInfo methodName = privBase.GetType().GetMethod("ShowGrid", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); |
然后用你的参数调用方法
1 | var retVal=methodName .Invoke(privBase, order); |