6

我有一个 .NET MVC 解决方案,它包含各种 javascript,我希望能够使用 QUnit 测试这些脚本,所以

我在哪里放置测试脚本和 QUnit 人工制品?

在mvc项目中?如果是,那么我大概需要在部署应用程序时通过构建过程删除这些脚本?好像有点垃圾?我真的不希望测试代码与生产代码混合。

在单独的“测试”网络项目中?非常适合更好的分离,但是我需要一些构建操作,将我的 SUT 脚本移动到这个单独的项目,以便测试脚本可以引用它们。可能比选项 1 更可取,但还是有点垃圾?

最佳做法是什么?有最佳实践吗?还有什么我没提到的方法吗?任何可以提供帮助的工具?我错过了什么明显的东西吗?

建议使用单独的项目 + Xcopy 类型的解决方案,但答案已经很老了。

谢谢。

4

2 回答 2

5

像大多数人一样,我喜欢将测试与生产代码分开。

如果您使用的是 VS2012(或更高版本)和Chutzpah 测试适配器,那么您可以简单地为您的测试创建一个单独的类库,就像您为您的 .NET 代码所做的那样。

将 tests.js` 文件添加到测试类库并简单地从主项目中引用适当的脚本。例如,使用 Jasmine 和 Angular:

/// <reference path="../../MainProject/lib/angular/angular.js" />
/// <reference path="../../MainProject/lib/angular/angular-mocks.js" />
/// <reference path="../../MainProject/lib/angular/angular-resource.js" />
/// <reference path="../../MainProject/lib/jasmine.js" />
/// <reference path="../../MainProject/scripts/controllers.js" />

describe('My controller tests', function () {
  ...
});

如果你想避免在你拥有的每个测试 js 文件中重复所有这些引用路径,你可以将它们添加到一个_references.js文件中,然后在你的tests.js文件中引用那个脚本。您需要手动引用该文件,因为您不在 Web 项目中,并且控制台项目没有与 Web 项目相同的隐式引用。

于 2013-09-25T22:25:06.070 回答
0

如果您有选择,只需将测试和测试基础设施放在主代码中。

如果一定要分开,那么大多数人只是做一个单独的测试项目,引用生产代码(包括js脚本)。

于 2013-07-11T19:59:19.130 回答