20

我有一个标准的 ASP.NET MVC(版本 2 预览版 2)解决方案,其中包含单独的项目中的实际项目和服务器端单元测试。

因为这个项目的客户端很重,所以我也想制作一个使用 QUnit 测试主项目的 ClientTest 项目。

我曾想过用一个 HTML 文件创建一个常规的 ASP.NET webforms 项目,该文件将加载我的 Scripts/ 目录中的各种脚本并用 QUnit 测试它们。不幸的是,这将产生另一个 ASP.NET 开发服务器。我可以在运行测试之前配置正在运行的 MVC 项目服务器的端口,但必须有一种更好的方法,而不仅仅是将测试 html 文件扔到主 MVC 项目中。

有谁知道解决这个问题的更好方法?

4

3 回答 3

17

我喜欢你将 QUnit 测试放在一个单独的项目中的想法。XCOPY在预构建事件中使用复制脚本怎么样?

假设您的 MVC 项目是MyProj.Web,而您的 QUnit 测试项目是MyProj.ClientTest(替换为您的项目名称)。

  • 在您的 ClientTest 项目中创建一个 Scripts 文件夹。

  • Project > MyProj.ClientTest Properties > Build Events,将以下内容添加到Pre-build event 命令行

    XCOPY "$(SolutionDir)MyProj.Web\Scripts" "$(ProjectDir)Scripts" /S /Y

  • 然后在您的 HTML 中只包含来自 Scripts 文件夹的适当 JavaScript 文件。

注意:当您想要重新运行测试时,您必须重新构建您的 ClientTest 项目以刷新 JavaScript 文件。根据需要调整文件夹名称、路径和XCOPY选项。

于 2010-02-11T22:32:24.320 回答
6

也许您可以从本文中挑选技术,包括使用命令行、利用 NUnit 和 WatiN 以及抓取测试结果以进行报告。该解决方案不需要单独的 WebForms 项目来利用测试,因为它全部由 WatiN 处理。

于 2009-10-19T01:53:35.697 回答
2

我不太清楚为什么使用 MVC 会有所作为——如果你想将测试集成到 CI 构建中,那么 gWiz 的建议就是要走的路。

如果您的要求是希望直接在真实页面上以交互方式运行测试而不影响该页面的外观,那么您可以查看FireUnit的 Firebug 插件。您还可以按照John Resig 的博客中所述将 FireUnit 包裹在 QUnit 周围。

如果您担心包含测试内容,请在您的测试/调试版本中包含相关脚本,并在您的生产版本中禁用/删除它们。

于 2009-10-25T15:19:34.737 回答