在ASP.NET中使用QUnit测试Javascript的推荐结构

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

因为这个项目非常客户端,所以我想创建一个ClientTest项目,它使用QUnit来测试主项目。

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

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

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

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

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

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

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

  • 然后在HTML中只包含Scripts文件夹中的相应JavaScript文件。

注意:如果要重新运行测试,则必须重建ClientTest项目以刷新JavaScript文件。 根据需要调整文件夹名称,路径和XCOPY选项。

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

我不清楚为什么使用MVC会产生影响 – 如果你想将你的测试集成到CI构建中,那么gWiz的建议就是要走的路。

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

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