3

私はasp、C#、nunitが初めてです。ビジネスロジックを持たない単純なWebフォームのnunitテストケースを作成しようとしています(宿題/割り当てを行います)。

Web フォームには、4 つのテキスト ボックス (名前、メールアドレス、パスワード、電話番号)、ラジオ リスト、ドロップダウン リスト (性別) があります。フォームは単にデータを検証し、他のページに出力テキスト (ラベル) としてデータを表示します。検証は、電子メール、電話の単なる正規表現検証です。name と pwd の長さの検証。必須性別のフィールド検証。

この Web フォームの NUnit テスト ケースの書き方を教えてください

たとえば、階乗を計算するメソッドがある場合、コードで指定されたパラメーターを使用して最初にメソッドを呼び出します(例: 4)。それは私に4を返します!変数 'result' に変換されます (つまり、結果は現在 24 です)。次に、AssertEquals(24,result) を呼び出します。

したがって、ユーザーからの入力を期待する Web フォームの場合。入力はコードで与えられていません。AssertEquals のパラメーターは何になりますか

ありがとう、

4

3 に答える 3

0

SeleniumWatiNなどの Web テスト フレームワークを使用できますか? その場合は、それらを使用してブラウザで Web サイトを開き、テキスト ボックスに値を入力して、ページ上の失敗テキストの成功を探すことができます。

于 2012-09-08T01:01:35.057 に答える
0

(jflood.net のコメントによると) 最終的にできることは、懸念事項を分離することです。したがって、現在、2 つの主な懸念事項があります (さらに細分化することもできますが、過度のエンジニアリングも避ける必要があります) - ユーザーへのデータの提示と、ユーザーの入力の検証。

ASP.NET WebForm コードは問題 #1 を処理します。検証の問題を分離するには、検証ロジックを処理する新しい検証クラスを作成する必要があります。何かのようなもの

public class Validator
{
     public bool ValidateEmail(string email)
     {
          bool valid = false;
          //Run RegEx validation and set the valid flag
          return valid;
     }
}

ページの読み込み時に、この新しいクラスを利用できます

 protected void Page_Load(object sender, EventArgs e)
 {
      Validator validator = new Validator();
      string email = Request.Form["EmailInput"];
      bool isEmailValid = validator.ValidateEmail(email);

      if (isEmailValid)
          Response.Write("Email is valid");
 }

これは宿題のための疑似コードであることに注意してください。完全な解決策を入力したくありませんでした。

これで、検証の問題を独自のクラスに分離できました。これにより、理解が容易になり、単体テストが容易になります。

ここで、Validator クラス (特にこの場合は ValidateEmail) の単体テストを作成する必要があります。

ここに例があります

  [Test]
  public void ValidateGoodEmail()
  {
     Validator validator = new Validator();
     bool shouldBeTrue = validator.ValidateEmail("test@test.com");

     Assert.AreEqual(true, shouldBeTrue);
  }

  [Test]
  public void ValidateBadEmail()
  {
     Validator validator = new Validator();
     bool shouldBeFalse = validator.ValidateEmail("test@.com");

     Assert.AreEqual(false, shouldBeFalse);
  }

単体テストでは、さまざまな論理フローをテストしているだけであることを忘れないでください。すべての入力をテストする必要はないので、ここでは、特定の不適切な電子メール アドレスを使用した偽の検証と、適切な電子メール アドレスを使用した真の検証の両方をテストしました。

お役に立てれば

于 2012-09-08T12:13:13.617 に答える
0

Web テスト フレームワークを使用できない場合は、Windows フォームまたは Windows Presentation Foundation (WPF) アプリケーションを作成し、WebBrowser コントロール ( Windows フォーム バージョンまたはWPF バージョン) にページを読み込みます。DOM を検査し、その方法でページ上で JavaScript を呼び出すことができます。Windows フォーム アプリのサンプルは、http://msdn.microsoft.com/en-us/library/3s8ys666.aspxにあります。

于 2012-09-08T05:49:55.113 に答える