我有一个标准的ASP.NET MVC(版本2预览2)解决方案,在单独的项目中包含实际项目和服务器端单元测试。
因为这个项目非常客户端,所以我想创建一个ClientTest项目,它使用QUnit来测试主项目。
我曾想过创建一个带有单个HTML文件的常规ASP.NET webforms项目,该文件将在我的Scripts /目录中加载各种脚本并使用QUnit对其进行测试。不幸的是,这将产生另一个ASP.NET开发服务器。我可以在运行测试之前配置正在运行的MVC项目服务器的端口,但必须有一个更好的方法,不仅仅是将测试html文件放入主MVC项目。
有谁知道更好的解决方法?
答案 0 :(得分:17)
我喜欢你将QUnit测试放在一个单独的项目中的想法。如何使用XCOPY
复制预构建事件中的脚本?
假设您的MVC项目是 MyProj.Web ,您的QUnit测试项目是 MyProj.ClientTest (替换为您的项目名称)。
在ClientTest项目中创建一个Scripts文件夹。
来自项目> MyProj.ClientTest 属性>构建事件,将以下内容添加到预构建事件命令行:
XCOPY“$(SolutionDir)MyProj.Web \ Scripts”“$(ProjectDir)Scripts”/ S / Y
然后在您的HTML中,只需在Scripts文件夹中包含相应的JavaScript文件。
注意:当您要重新运行测试时,必须重建ClientTest项目以刷新JavaScript文件。根据需要调整文件夹名称,路径和XCOPY
选项。
答案 1 :(得分:6)
也许您可以从this article中挑选和选择技术,包括使用命令行,利用WUnN利用NUnit,以及抓取测试结果进行报告。此解决方案不需要单独的WebForms项目来利用测试,因为它全部由WatiN处理。
答案 2 :(得分:2)
我不清楚为什么使用MVC会产生影响 - 如果你想将你的测试集成到CI版本中,那么gWiz的建议就是要走的路。
如果您的要求是您希望直接在真实页面上以交互方式运行测试而不影响该页面的外观,那么您可以查看Firebug的FireUnit插件。您还可以按照John Resig's blog中的描述将FireUnit包装在QUnit周围。
如果您担心包含测试内容,请在测试/调试版本中包含相关脚本,并在生产版本中禁用/删除它们。