我發現了一種奇妙的方法來測試私有方法。如何在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