我有一個大的應用程序從配置文件讀取一些參數。修改私有靜態只讀字段
我在寫單元測試,其產生既參數,並從配置文件讀取值執行某些操作後的結果一類:
internal static class Password
{
private static readonly byte PASSWORD_PRIVATE_KEY
= ConfigFile.ReadByte("PASSWORD_PRIVATE_KEY");
public static byte Generate(byte passwordPublicKey);
}
在我的單元測試,我知道值Password.Generate()
方法應返回給定PASSWORD_PRIVATE_KEY
和PASSWORD_PUBLIC_KEY
。但我想用在單元測試類中定義的,而不是在配置文件中PASSWORD_PRIVATE_KEY
值:
[TestMethod]
public void PasswordGenerate_CalculatedProperly()
{
byte passwordPublicKey = 0x22;
Password_Accessor.PASSWORD_PRIVATE_KEY = 0xF0;
byte expectedGenerated = 0xAA;
byte generated = Password_Accessor.Generate(passwordPublicKey);
Assert.AreEqual(expectedGenerated, generated);
}
有沒有一種方法,我可以寫private static readonly
直通代碼,所以我不必依賴任何配置文件進行測試?
請注意這個問題是不同的這個:http://stackoverflow.com/q/6851816/1192381 –
規範的答案是「不要使用靜態初始化'私人靜態'領域」 - 重構「密碼」類所以它從合作者類獲得'PASSWORD_PRIVATE_KEY'的值,然後你可以模擬它。在這種情況下,似乎使得'ConfigFile'非靜態將是答案。 – millimoose
一般來說,'static'是單元測試的死敵。 – millimoose