私は、単体テストには多くではなく 1 つのアサーションを含める必要があるという Osherove の意見に同意します。しかし、そのプリンシパルを ASP.NET MVC 単体テストに適用すると、厳しすぎるのではないかと思います。次のテストを検討してください。
[TestMethod]
public void RedirectTest() {
// Arrange - create the controller
ExampleController target = new ExampleController();
// Act - call the action method
RedirectResult result = target.Redirect();
// Assert - check the result
Assert.IsFalse(result.Permanent);
Assert.AreEqual("/Example/Index", result.Url);
}
[TestMethod]
public void RedirectValueTest() {
// Arrange - create the controller
ExampleController target = new ExampleController();
// Act - call the action method
RedirectToRouteResult result = target.Redirect();
// Assert - check the result
Assert.IsFalse(result.Permanent);
Assert.AreEqual("Example", result.RouteValues["controller"]);
Assert.AreEqual("Index", result.RouteValues["action"]);
Assert.AreEqual("MyID", result.RouteValues["ID"]);
}
確かに、上記の 2 つのテストは 6 つのテスト (それぞれ 1 つのアサート) に分割できますが、少し過剰に感じられます。これに関するベストプラクティスはありますか? 職業はなんですか?テスト専門家のコンセンサスがそこにある場合、私は確かにアサートごとに1つのテストの道をたどります...