我正在尝试让单元测试成功运行我的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时,我在类中有类似的错误,可能是这段代码没有正确运行?
答案 0 :(得分:3)
RouteTable.Routes
是静态的,因此每个AppDomain只会初始化一次。
因此,每次进行测试时,您实际上都在尝试重新注册相同的路径。
将路线注册移动到AssemblyInitialize
属性可能会更好,因此它只会在整个测试运行开始时运行一次。