2010-07-27 74 views
1

我在运行Microsoft Visual Studio 2005 Professional的ASP.net网站的App_Code中有几个类文件。ASP.net/C#:如何编译App_Code中的类以便可以从命令行运行以进行单元测试?

在使用全套单元测试套件的情况下,我只是想以某种方式将这些项目范围的类编译为一个.EXE文件,以便我可以每晚对它们运行单元测试。

知道如何创建一个单独的C#库项目组成的这些文件,以及如何将它们包括到我的网站 - 但这是不可取的 - 我不想放弃的能力,使在调试器中运行网站时,这些库类的即时代码更改。据我所知,.Net调试器功能不足以修改包含库中的代码,并在页面重新加载时立即自动重新编译。

所以,我想我的鱼和熊掌兼得,太:在App_Code目录中的网站类文件

  1. 命令行的单元测试
  2. 能够修改这些类文件的w/o停/复 - 启动网络调试器。

是否有可能同时存在?

回答

1

您应该将代码放在一个完全独立的类库/程序集中,然后从您的Web项目和命令行实用程序中引用它。据我所知,在调试器中停止时,修改代码的位置没有区别。从来没有自己的问题。

希望有所帮助。

+0

我刚刚尝试过,并且收到以下错误消息:“此源文件已更改,它不再与用于构建正在调试的应用程序的文件的版本相匹配。”这禁止编辑和继续范例。 – 2010-07-27 18:28:25

+0

+1:简单而有效。将代码移入单独的程序集有一个好处,它鼓励开发人员编写不依赖于当前HttpContext的可测试类。 – Juliet 2010-07-27 18:30:16

+0

我很惊讶 - 你确定你在同一个解决方案中有这个项目吗?如果它是Visual Studio的一个单独的解决方案/实例,您可能会遇到麻烦.. – 2010-07-27 18:31:24

1

您的项目是在源代码管理下,对吧? 对不对?在这种情况下,您可以使用您的源代码管理系统在您的asp.net项目的app_code文件夹中包含一个链接,作为单独的单元测试项目的一部分。确切的链接机制因源代码控制平台而异,但做得对,这意味着在源代码管理中只有一个App_Code文件夹实例可以从两个不同的项目中看到。这样,一切都保持最新。

这样做的好处是,您可以像以往一样保持简单的未编译代码,但仍然可以将代码用于测试。

+0

当使用ReShaper等工具进行重构时,此解决方案确实有轻微挫折,因此它将错过测试项目中的引用。这可能会导致测试失败,并且测试项目无法建立。不是一个大问题,而是需要考虑的事情。 – TheLukeMcCarthy 2011-11-30 11:01:08

相关问题