标签: privateobject.invoke

测试私有静态方法抛出MissingMethodException

我有这门课:

public class MyClass
{
   private static int GetMonthsDateDiff(DateTime d1, DateTime d2)
   {
     // implementatio
   }
}
Run Code Online (Sandbox Code Playgroud)

现在我正在为它实施单元测试.由于该方法是私有的,我有以下代码:

MyClass myClass = new MyClass();
PrivateObject testObj = new PrivateObject(myClass);
DateTime fromDate = new DateTime(2015, 1, 1);
DateTime toDate = new DateTime(2015, 3, 17);
object[] args = new object[2] { fromDate, toDate };
int res = (int)testObj.Invoke("GetMonthsDateDiff", args); //<- exception
Run Code Online (Sandbox Code Playgroud)

mscorlib.dll中出现"System.MissingMethodException"类型的异常但未在用户代码中处理其他信息:尝试访问缺少的成员.

我究竟做错了什么?该方法存在..

c# unit-testing privateobject.invoke

11
推荐指数
2
解决办法
4576
查看次数

如何在不支持“PrivateObject”的.Net Core应用程序中对私有方法进行单元测试

我的应用程序是一个.NET Core应用程序。

我有一个public如下所示的方法,它有两个私有方法。

   public bool CallService(JObject requestJsonObj, out Status status)
   {
        bool provisioningSuccess = false;
        var preProcessSuccess = PreProcessing(requestJsonObj,out Status status);
        var postProcessSuccess = PostProcessing(requestJsonObj,out Status status);

        if(preProcessSuccess && postProcessSuccess)
        {
              status = Status.ProvisionSuccess;
              provisioningSuccess = true;
        }
        return provisioningSuccess;
   }
Run Code Online (Sandbox Code Playgroud)

这是状态和私人课程

   public enum Status
   {
       [Description("User/Pwd not valid")]
       CredentialInvalid = 111,
       [Description("Provision is success")]
       ProvisionSuccess = 112,
   }

    private PreProcessing(JObject JosnObj, 
        out Status status)
    {
           using (var client = new HttpClient())
           {
                var request = …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing privateobject.invoke .net-core

4
推荐指数
2
解决办法
1万
查看次数