1

MVC 4 Web アプリケーション プロジェクトの単体テストを正常に実行しようとしています。

テストクラスを個別に実行すると、すべてのテストがパスし、ソリューションですべてのテストを実行するときは 2/9 パスのみで、[Debug Checked Tests] をクリックし、ヒットを再度実行するとすべてパスします。

この問題は、プロジェクトを TFS にチェックインしたときにも再現されます。プロジェクトがビルドし、テストを実行し、まったく同じテストで失敗する継続的インテグレーションをセットアップしました。

私が戻ってきたエラーは、*「'' という名前のルートはすでにルート コレクションにあります」です。

なぜこれが起こっているのか、誰にも考えがありますか?

各クラスには、以下に示す [TestInitialize] ブロックがあります。

[TestInitialize]
public void Setup()
{
    var builder = new TestControllerBuilder();
    controller = new MyController();
    builder.InitializeController(controller);

    RouteConfig.RegisterRoutes(RouteTable.Routes);
}

TestControllerBuilder を含めていなかったときに、クラスで同様のエラーが発生しました。このコードが正しく実行されていない可能性がありますか?

4

1 に答える 1

3

RouteTable.Routes静的であるため、AppDomain ごとに 1 回だけ初期化されます。

したがって、テストを実行するたびに、事実上、同じルートを再登録しようとしています。

AssemblyInitializeおそらく、ルート登録を属性に移動して、テスト実行全体の最初に 1 回だけ実行する方がよいでしょう。

于 2013-01-30T13:49:58.780 に答える