编写单元测试时,是否将测试放在要测试的组件内或单独的测试组件中?我已经在一个单独的程序集中编写了一个带有测试的应用程序,以便于部署,因为我可以排除程序集。有没有人在你想测试的程序集中写那些测试,如果有的话,它的理由是什么?
答案 0 :(得分:11)
我有一个带有接口项目,测试项目,域项目和数据项目的解决方案。当我发布时,我只发布了一个接口,它没有引用测试,因此它不会被编译。
编辑:最重要的是你不希望它成为你最终版本的一部分。您可以使用单独的项目/程序集在VS中自动实现此目的。但是,您可以在同一个程序集中使用它,但如果您使用的是nant或msbuild,则不要编译该代码。虽然有点乱,但保持整洁,使用单独的组件:)
答案 1 :(得分:10)
这在网络上受到广泛争议。
我们使用单独的程序集和InternalsVisibleTo属性来帮助测试程序组件查看测试程序集的所有内部结构。我们倾向于为我们正在测试的每个组件制作一个测试组件。
答案 2 :(得分:10)
我想说,在您的最终部署中,您唯一想要合并任何测试代码的时间是用于监控和控制应用程序的测试代码。
将测试代码留在部署中:
另一方面解耦允许您:
HTH
欢呼声,
罗布
答案 3 :(得分:5)
在另一个装配中。否则你的程序集将引用测试框架(例如Nunit.Framework.dll),你需要在客户机器上安装它,
即使您发布的是库,并且您希望您的客户将单元测试视为示例或关于如何使用您提供的对象的具体说明,包含在生产装配中的优势也很小。 / p>
答案 4 :(得分:0)
您可以将它们保存在解决方案中的单独程序集中,稍后ILMerge它们以进行调试,并且不要ILMerge它们以便发布。