[英]Unit testing in C# of private-static method accepting other private-static method as a delegate parameter
我擁有:我有一個非靜態類,其中包含兩個私有靜態方法:其中一個可以作為委托參數傳遞給另一個:
public class MyClass
{
...
private static string MyMethodToTest(int a, int b, Func<int, int, int> myDelegate)
{
return "result is " + myDelegate(a, b);
}
private static int MyDelegateMethod(int a, int b)
{
return (a + b);
}
}
我要做的事情:我必須測試(使用單元測試)私有靜態方法MyMethodToTest
,並將私有靜態方法MyDelegateMethod
作為委托參數傳遞給它。
我能做什么:我知道如何測試私有靜態方法,但我不知道如何將同一個類的另一個私有靜態方法作為委托參數傳遞給此方法。
因此,如果我們假設MyMethodToTest
方法根本沒有第三個參數,那么測試方法將如下所示:
using System;
using System.Reflection;
using Microsoft.VisualStudio.TestTools.UnitTesting;
...
[TestMethod]
public void MyTest()
{
PrivateType privateType = new PrivateType(typeof(MyClass));
Type[] parameterTypes =
{
typeof(int),
typeof(int)
};
object[] parameterValues =
{
33,
22
};
string result = (string)privateType.InvokeStatic("MyMethodToTest", parameterTypes, parameterValues);
Assert.IsTrue(result == "result is 55");
}
我的問題:如何測試私有靜態方法作為委托參數傳遞給它同一個類的另一個私有靜態方法?
這是它應該如何去做
[TestMethod]
public void MyTest()
{
PrivateType privateType = new PrivateType(typeof(MyClass));
var myPrivateDelegateMethod = typeof(MyClass).GetMethod("MyDelegateMethod", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Static);
var dele = myPrivateDelegateMethod.CreateDelegate(typeof(Func<int, int, int>));
object[] parameterValues =
{
33,22,dele
};
string result = (string)privateType.InvokeStatic("MyMethodToTest", parameterValues);
Assert.IsTrue(result == "result is 55");
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.