0

小さな問題があります。いくつかの Selenium テストを作成しました。問題は、作成したテストケースを注文できないことです。単体テストを注文するべきではないことはわかっていますが、これが私の状況で必要なものです。次の手順に従う必要があります。最初にログインし、新しい顧客を作成し、顧客に関する詳細を変更し、最後にログアウトします。

NUnit で単体テストを注文するオプションがないため、これを実行できません。

Visual Studio 2012 には順序付き単体テストを作成する機能があるため、Visual Studio で単体テスト プロジェクトを作成するという別のオプションを既に試しました。しかし、ASP.NET プロジェクトの実行中に単体テストを実行できないため、これは機能しません。Selenium テストによってデータが送信された後にデータを検証したいので、別のソリューション ファイルも適切なオプションではありません。

あなたの誰かが私の問題を解決するための別の解決策を持っていますか?

4

1 に答える 1

1

これらすべてのステップを特定の順序でテストしたい場合 (そして、その音によって、単一のセッションとして) は、実際には、あなたが話している受け入れテストに似ています。その場合、より複雑なテスト メソッドを記述し、各ステップの後に条件をアサートすることは罪ではありません。

各ステップを完全に分離してテストする場合 (純粋な単体テスト)、各単体テストは、他のテストを参照することなく、単独で実行できる必要があります。しかし、実際のサイト UI 自体をテストしている場合、これは実際にはオプションではありません。


もちろん、本当にすべてのテストで、他のアクションを参照せずにすべての依存関係を設定したい場合 (たとえば、最後のテストでは、ログイン トークンを偽造する必要があります。データ レイヤーは、新しいトークンを追加したふりをする必要があります)。顧客など。疑わしい利益のための多くの作業...)

これは、サーバー側のコントローラー、レイヤー、モデルなどに対して記述された単体テストが既にあり、ブラウザーで実行されている実際のサイトを参照せずに実行しているため、さまざまなバックあなたのサイトの最後の部分は、彼らがするべきことをします


あなたの場合、ハイブリッド統合/受け入れテストをもっとお勧めします

void Login(IWebDriver driver)
{
   //use driver to open browser, navigate to login page, type user/password into box and press enter

}

void CreateNewCustomer(IWebDriver driver)
{
  Login(driver);
  //and then use driver to click "Create Customer" link, etc, etc

}

void EditNewlyCreatedCustomer(IWebDriver driver)
{
  Login(driver);
  CreateNewCustomer(driver);
  //do your selenium stuff..

}

and then your test methods:
[Test]
void Login_DoesWhatIExpect()
{
  var driver = new InternetExplorerDriver("your Login URL here");   
  Login(driver);
  Assert(Something);
}
[Test]
void CreateNewCustomer_WorksProperly()
{
   var driver = new InternetExplorerDriver("your Login URL here");   
   CreateNewCustomer(driver);
   Assert(Something);
}
[Test]
void EditNewlyCreatedCustomer_DoesntExplodeTheServer()
{
   var driver = new InternetExplorerDriver("your Login URL here");   
   EditNewlyCreatedCustomer(driver);
   Assert(Something);
}

このように、特定のテストの順序は重要ではありません。確かに、Loginテストが失敗した場合、CreateNewCustomerandEditNewlyCreatedCustomerテストも失敗しますが、操作の「スレッド」全体をテストしているため、この場合は実際には関係ありません

于 2013-09-10T22:34:19.727 に答える