4

NUnit/Watin を使用して、ASP.Net Web フォーム アプリの UI をテストしています。TDD、単体テスト、統合テストなどに関する高レベルの概念は理解していますが、これまでそれらを使用する機会はあまりありませんでした。

したがって、データ入力フォームで検証ロジックをテストする場合、各検証エラー (つまり、フィールド x が必要) をトリガーするテストを 1 つ作成するか、スローされる検証エラーごとに個別のテストを作成する必要があります。フォームによって。これは単にスタイルの問題ですか、それとも、検証ロジックのすべての可能な組み合わせにヒットするテストではなく、いくつかのテストを作成する正当な理由がありますか?

疑似コード:

    [Test]
    public void Validation()
    {
       //Do some stuff to test that username is required.
       Assert.AreEqual(true, ie.ContainsText("Username is required.");

       //Do some stuff to test that passwword is required.
       Assert.AreEqual(true, ie.ContainsText("Password is required.");
    }

対。

[Test]
public void ValidateUserName()
{
   //Do some stuff to test that username is required.
   Assert.AreEqual(true, ie.ContainsText("Username is required.");
}

[Test]
public void ValidatePassword()
{
   //Do some stuff to test that passwword is required.
   Assert.AreEqual(true, ie.ContainsText("Password is required.");
}
4

1 に答える 1

7

検証ごとに 1 つのテストに傾倒します。

  • 検証を完全に破ると、2 つのテストが失敗するため、破ったことすべてがすぐにわかります。それらが同じテストにある場合、最初の障害が修正されるまで、最初の障害によって 2 番目の障害がマスクされます。

  • 何かを壊すとすぐに、失敗したメソッドの名前で正確に何が壊れているかの説明が得られます。多くの単体テスト GUI では、失敗した各テストの横に小さな赤信号が表示され、これらは自然にすべてのエラーを強調表示して説明します。

そうは言っても、重要なことは、テストを行うことです。特定のテストがクラスのどこに現れるかは、些細なことです...

于 2008-12-16T22:12:09.983 に答える