1

私は、いくつかの検討の結果、テスト自動化にSpecFlowを使用することを決定したQAです。すばらしいと思いますが、NUnitなどの他のテストランナーで頻繁に使用した機能が1つ欠けています。これは、実行時に実行されるテストの潜在的に動的なデータセットを指定するNUnitのTestCaseSourceプロパティに似ています。

テストを実行する環境ごとに異なるデータを使用することが多いため、テストパラメータにハードコードされた値を指定することはできません。簡単な例は、各タイプのユーザーアカウントがログインできることを確認することです。ユーザーアカウントの資格情報は、DBクエリを使用して取得し、NUnitで各テストケースに動的に入力できます。

public List<User> GetTestData()
{
    List<User> testData = new List<User>();
    testData = MyDatabase.GetAllUsersInfo().ToList();

    return testData;
}

[Test, TestCaseSource("GetTestData")]
public void CallLoginService(User user)
{
    var response = LoginController.TryLogin(User.UserName, User.Password);

    if (response.Error != null)
    {
        Assert.Fail("Failed to Login: {0}", response.Error);
    }

    Assert.AreEqual("Logged in ok", response.Message, "Login message not as expected");
}

明らかにこれはその機能の簡単な例ですが、十分に説明されていると思います。SpecFlowには、シナリオの概要とテスト実行の入力データのテーブルを使用する機能があることは知っていますが、それでも静的であるため、法案に適合しません。

私はしばらく探していましたが、SpecFlowでこのようなものはまだ見つかりませんでしたが、使用できる(またはプロジェクトに携わっている人がこれを読んだ場合に計画されている)上記のようなものを知っている人はいますか?

ありがとう :)

4

1 に答える 1

1

このようなことが計画されているかどうかはわかりませんが、今のところ問題は、Visual Studio を介して機能ファイルを編集するときにバックグラウンド コード生成ステップがあることです。

Visual Studio に保存すると、解析され、feature.cs ファイルに変換されます。これがコンパイルされ、テストに使用されます。

したがって、あなたのプロセスは次のようになります

  • データ ソースを編集する
  • 機能ファイルにエクスポート
  • specflow の VS プラグインを取得して、feature.cs に変換します
  • msbuild を実行する
  • Nunit などを介してテストを実行する

私はこれをしません。代わりに、テストをより良い例にすることに集中します。あらゆる可能性を網羅しようとしているようですね。考えられるすべてのケースをカバーする例を考え出すのではなく、より少ないテストでできるだけ多くのロジックをカバーしてください。

于 2013-02-07T10:48:54.273 に答える