我发现了一种奇妙的方法来测试私有方法。如何在C#中的PrivateObject上创建类型安全性
这很好,除了我不喜欢如何将字符串输入到方法名称中。有没有办法建立一个“安全网”?我想输入方法名称,以便如果方法不存在于对象上,编译器可以抛出编译器时间错误。
私有方法:
public class BankAccount
{
//Private method to test
private bool VerifyAmount(double amount)
{
return (amount <= 1000);
}
}
单元测试:
[TestMethod()]
public void VerifyAmountTest()
{
//Using PrivateObject class
PrivateObject privateHelperObject = new PrivateObject(typeof(BankAccount));
double amount = 500F;
bool expected = true;
bool actual;
actual = (bool)privateHelperObject.Invoke("VerifyAmount", amount);
Assert.AreEqual(expected, actual);
}
我知道,有些人认为我们不应该单元测试私有方法。这不是这个问题的目的,所以我们不要讨论这个问题并留在主题上。
你认为你不应该测试私有方法吗? – CodeCaster