0

ここで見つけることができる前の質問に関連して:

「ソリューションですべてのテストを実行」を使用すると、テストが失敗する

試験方法:

[TestMethod]
public void AMAC_Route_Maps_to_AMACController()
{
    "~/amac/".ShouldMapTo<AMACController>(action => action.Index());

}

ルート:

routes.MapRoute(
            name: "AMAC",
            url: "amac/",
            defaults: new { controller = "AMAC", action = "Index" }
        );

返されたエラー:

テストメソッドMBS.Exec.Enquiry.MVC.Tests.AMACControllerTest.AMAC_Route_Maps_to_AMACControllerが例外をスローしました:MvcContrib.TestHelper.AssertionException:URLがどのルートとも一致しませんでした

このエラーは、ソリューションですべてのテストを実行した場合にのみスローされます。テストをそのクラスから分離して実行すると、合格します。

例として、実際に合格する同様のコントローラーのテストメソッドがあります。以下は、テストメソッドとそのルートのコードです。

試験方法

    [TestMethod]
    public void HVM_Route_Maps_to_HVMController()
    {
        "~/hvm/".ShouldMapTo<HVMController>(action => action.Index());
    }

ルート:

routes.MapRoute(
            name: "HVM",
            url: "hvm/",
            defaults: new { controller = "HVM", action = "Index" }
        );

このテストではエラーは発生しません。

4

1 に答える 1

0

[AssemblyInitialize]メソッドにルート登録を追加するためにテストをリファクタリングしたとき、ユニットテストクラスの1つから[TestCleanup]メソッドを削除するのを忘れていたため、ルートが再登録されました。

これを削除した後、すべてのテストに合格しました。

于 2013-01-31T10:38:05.293 に答える