私はいつもテストごとに1つのアサーションに固執しようとしますが、時々私はそうすることに苦労しています。出力が別のものの入力であるという単位テスト方法
たとえば、
私は文字列を暗号化および復号化する暗号化クラスを作成しました。
public class CryptoDummy
{
public string Decrypt(string value)
{
}
public string Encrypt(string value)
{
}
}
復号化が暗号化の出力に依存する場合、どのようにユニットテストを作成しますか?
これまでのすべてのテストでは、ほとんどの場合、テストごとに1つのメソッド呼び出しとテストごとに1つのアサーションがあります。
したがって、テストごとに複数の呼び出しを行い、最後に呼び出したメソッドで行われた最終結果をアサートするのは問題ないのですか?
public class CryptoDummyTest
{
private static CryptoDummy _cryptoDummy;
// Use ClassInitialize to run code before running the first test in the class
[ClassInitialize]
public static void MyClassInitialize(TestContext testContext)
{
_cryptoDummy = new CryptoDummy();
}
[TestMethod]
public void Encrypt_should_return_ciphered_64string_when_passing_a_plaintext_value()
{
const string PLAINTEXT_VALUE = "[email protected]";
string cipheredString = _cryptoDummy.Encrypt(PLAINTEXT_VALUE);
Assert.IsTrue(cipheredString != PLAINTEXT_VALUE);
}
[TestMethod]
public void Decrypt_should_return_plaintext_when_passing_a_ciphered_value()
{
const string PLAINTEXT_VALUE = "[email protected]";
string cipheredString = _cryptoDummy.Encrypt(PLAINTEXT_VALUE);
string plaintextString = _cryptoDummy.Decrypt(cipheredString);
Assert.IsTrue(plaintextString == PLAINTEXT_VALUE);
}
}
ありがとうございます。
ユニットテストパターン[Here](http://www.codeproject.com/KB/architecture/autp5.aspx)のMarc Clifton(私のお気に入りの1つ)の記事 –
ありがとう、私はすでに読んでいますそれはずっと前に単体テストの芸術の本を購入しました。 ;) – LavaSeven