【发布时间】:2018-03-07 17:31:58
【问题描述】:
我发现了一种对私有方法进行单元测试的绝妙方法。
这很好,只是我不喜欢将方法名称作为字符串输入。有没有办法建立一个“安全网”?我想键入方法名称,以便在对象上不存在该方法时编译器可以抛出编译器时错误。
私有方法:
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);
}
我知道有些人认为我们不应该对私有方法进行单元测试。这不是这个问题的目的,所以我们不要讨论这个问题并继续讨论这个问题。
【问题讨论】:
-
你认为你不应该测试私有方法吗?
标签: c# unit-testing type-safety privateobject.invoke