使用“在解决方案中运行所有测试”时测试失败

时间:2013-01-30 13:47:10

标签: c# unit-testing asp.net-mvc-4 tfs2010 mvccontrib-testhelper

我正在尝试让单元测试成功运行我的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时,我在类中有类似的错误,可能是这段代码没有正确运行?

1 个答案:

答案 0 :(得分:3)

RouteTable.Routes是静态的,因此每个AppDomain只会初始化一次。

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

将路线注册移动到AssemblyInitialize属性可能会更好,因此它只会在整个测试运行开始时运行一次。