我发现了一种对私有方法进行单元测试的绝妙方法。
这很好,除了我不喜欢方法名称作为字符串输入的方式。有没有办法建立一个“安全网”?我想键入方法名称,以便编译器可以在对象上不存在该方法时抛出编译器时错误。
私有方法:
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);
}
我知道有些人认为我们不应该对私有方法进行单元测试。这不是这个问题的目的,所以让我们不要讨论这个问题并继续讨论这个话题。