構成ファイルからいくつかのパラメータを読み取る大きなアプリケーションがあります。プライベート静的読み取り専用フィールドの変更
私は、パラメータおよび構成ファイルから読み取られた値の両方で特定の操作を実行した後、結果を生成するクラスのユニットテストを書いている:私のユニットテストでは
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
のために返されます。
[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
を書くことができますので、私はしていない方法はあります:しかし、私はユニットテストクラスではなく、構成ファイルで定義されるように使用さPASSWORD_PRIVATE_KEY
値がしたいです私のテストのための構成ファイルはどれですか?
この問題とは異なることに注意してください。http://stackoverflow.com/q/6851816/1192381 –
標準的な答えは、「静的に初期化された 'private static'フィールドを使用しないでください」 - リファクタ、' Password'クラスそこで、あなたはそれをモックアップできる協力者クラスから 'PASSWORD_PRIVATE_KEY'の値を取得します。この場合、 'ConfigFile'を非静的にすることが答えになるようです。 – millimoose
一般的に言えば、「静的」とは、単体テストの敵です。 – millimoose