私は、いくつかの検討の結果、テスト自動化に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でこのようなものはまだ見つかりませんでしたが、使用できる(またはプロジェクトに携わっている人がこれを読んだ場合に計画されている)上記のようなものを知っている人はいますか?
ありがとう :)