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 只会被初始化一次。

因此,每次运行测试时,实际上都是在尝试重新注册相同的路由。

您可能最好将您的路线注册移动到一个AssemblyInitialize属性中,这样它只会在整个测试运行开始时运行一次。

于 2013-01-30T13:49:58.780 回答