2

所以我试图在一个 ASP.NET 网页项目中高效地练习 TDD,并且每次我想运行我的测试时都启动一个服务器,它不是很快。所以我试图找到一种不使用 [HostType("ASP.NET")] 属性来进行测试的方法,但总是会出现一些错误。我们正在为资源文件使用 App_GlobalResources 文件夹,这是问题之一;删除属性时,只保留[TestMethod](使用MStest),找不到资源。所以我!注意假设它无法找到资源程序集。

那么,以前有人这样做过吗?有什么经验吗?

和评论说“你为什么不直接转换为 MVC”,这只是一个大应用程序和很少的时间。也许它会在几年内发生,也许更多,也许永远不会。

4

2 回答 2

3

我测试 ASP.NET Web 应用程序的经历很痛苦(看起来你也是!)抵制 MVC 评论

我最好的建议是每次触摸某个区域时都采取一些小步骤,以使其更易于测试。例如,对于任何代码位,您都可以将其提取到您可以引用的自己的程序集中。

第一个候选人是你的资源文件。然后,您的测试可以引用该卫星程序集,而无需跳过“App_”箍。

于 2012-08-10T08:52:16.390 回答
1

我采用的方法涉及为每个页面创建一个演示者类。您创建一个界面,该页面使用演示者控制 UI 所需的方法和属性来实现该界面。您的所有逻辑都在演示器中,以及对界面的引用。页面引用演示者并将其自身传入。

您获得的好处是页面现在应该只包含使 UI 工作的代码。演示者完成了大部分工作。因为它可以访问 UI,所以通过接口它可以控制 UI。因为访问是通过接口进行的,所以您可以使用模拟 UI 来测试演示者。

我发现我的页面被大大简化了,支持应用程序逻辑的代码和使 UI 工作的代码之间的差异更大。它还使得引入服务类和 IoC 变得更简单,这对于 webforms 来说并不总是最简单的。

于 2012-08-10T10:45:34.843 回答