2012-05-03 23 views
2

私はこの政治的/宗教的な戦いで立ち往生しているように感じます。私が行った研究から、多くの人々が、UIテストは単体テストで行うのは愚かであり、実際の人がはるかに良いことを強く信じていることが分かりました。同意する。ASP.NET MVC3 UIユニットテスト

しかし、上層部がユニットテストのUIを教えてくれたようです。 (以前は私に、私は実際のテストではなくテストプランを書かなければならないと言っていたので、すでに奇妙です)。すべての誠実さの中で私は単体テストにあまり精通していません。私はMOQを使用しようとしていますが、私はそれがリポジトリとサービスではないことを見つけるすべてのチュートリアルと私はサービスの周りに私のWebアプリケーションを構築しています。ここでは例として

は(の一部)であるサービス:

public class ProductService : Service<Product, EntitiesDbContext> 
    { 
     ... 
     public Product GetProduct(int id) 
     { 
      return All().FirstOrDefault(p => p.ProductId == id); 
     } 
     ... 
    } 

私の仮定が、私はのは、言わせて作成する必要があるという部品番号を使用して、新しい製品で、その後、誰かがハードコーディングされた入力を検証私のモデルを使って。私はこれを行う方法がわかりません。

ウェブサイトがフォーム経由のユーザー入力に大きく依存するため、UIをテストすることは私の仕事の大部分です。繰り返しますが、私のモデルは非常に厳しいので、単体テストでテストするのは非常に馬鹿です。

私の質問には MOQや別のテストフレームワークを使ってフォーム入力をテストするにはどうすればいいですか? あなたの行動を追跡してそれらを複製することができるプログラムがあると聞いてきましたが、私はそれを見つけることに失敗しました。また、そのような技術にはコストがかかるとも考えています。

答えて

1

Visual Studio 2010 Ultimateには、Coded UIテストというものがあります。基本的には、アサーションを追加するC#コードに変換されたInternet Explorerでアクションを記録した後、さまざまなブラウザでアクションを再生します。

ただし、新しく追加された行がわからないため、データベースバックアップされたWebアプリケーションに対してテストすることは非常に困難です。問題を簡素化するために、テストスイートを順番に実行する前に初期状態にリセットされるサンプルデータベースを設定することができます。

コード化されたUIテストの使用方法に関するさまざまなTechEdビデオをご覧ください。例えば。 http://www.youtube.com/watch?v=rZ8Q5EJ2bQM

1

あなたのUIのアクションをテストしているか、実際のUIをテストしていますか?

あなたはアクションをテストしているし、どのようなデータを、彼らはなど、NUnitxUnitのようなものを使用してユニットテストをやって、その後ビューに送信され、MOQまたはRhino MocksのようなMOQフレームワークを使用して行うには正しいことになります。

あなたが実際のUI(Webサーバから返されたHTML)をテストしているならば、Seleniumのような自動テストフレームワークを使用すると、適切なツールとなり

1

またhttp://ivonna.biz(Ivonnaを試すことができます)MVCテストのために - クライアント側をテストするのではなく、Asp.Netサーバー側のコードをテストできるようにします。

まず、自分自身(またはあなたの経営陣)に質問する必要があります。何をテストしたいのですか?クライアント/サーバ側の検証?あなたのサービス?アクションメソッド?

1

開発者は、UIのテストを自動化するために多くの反対があります。私は何年も前に "Selenium Core"を使用していましたが、これはFirefoxでのテストを修正してからC#として保存し、次にC#ファイルとHtmlファイルをブレンドして以下のようにすることができました。

  1. は、パスワードを忘れた - データベースからオートメーションランダムユーザ名が入力されます、その後、暗号化されたパスワードは、様々のGmailアカウントにメールを送信しました私がセットアップし、私はGmailにログインし、新たなリセットパスワードを取得し、リダイレクトするためにC#のAPIを持っていたし、アプリケーションは、新しいパスワードを入力して持っている、と私はCIサーバハドソンでこれを入れて、このテスト一日中、およびなどの成功とエラーのログを自動化することができ...

  2. #1

  3. に似新規登録...

SoあなたのUIテストのために、その機能またはUATテストを呼び出すことができます... 本当の単体テストでは、これはNUnit/Xunit、MSTestなどです。 統合テストは、接続されたシステムによるアプリケーション全体の真のテストです。ファイルシステムやWCFやデータベースのように、「嘲笑」されません。

これらはすべて賛否両論あり完璧ですが、人々は結局、ユニットテストは大打撃だと言ってしまいます。