我的情况: 我有一个非静态类,其中包含两个私有静态方法:其中一个可以作为委托参数传递给另一个方法:
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");
}
我的问题:如何测试一个私有静态方法,并将另一个同类的私有静态方法作为委托参数传递给它?
MyDelegateMethod
的方法。它们非常简单,不需要进行测试。最复杂的部分是MyMethodToTest
方法,必须进行测试。显然,在测试类中编写MyDelegateMethod
类似的方法的副本,并将它们作为委托参数传递给MyMethodToTest
方法是可能的(我没有尝试过),但我想避免重复。 - Jordan