在编写单元测试时,您是否将测试放在要测试的组件内或单独的测试组件中?我已经在一个单独的程序集中编写了一个带有测试的应用程序,以便于部署,因为我可以排除程序集.有没有人在你想测试的程序集中写那些测试,如果有的话,它的理由是什么?
我有一个带有接口项目,测试项目,域项目和数据项目的解决方案.当我发布时,我只发布了接口,它没有引用测试,因此它没有被编译.
编辑:最重要的是你不希望它成为你最终版本的一部分.您可以使用单独的项目/程序集在VS中自动实现此目的.但是,您可以在同一个程序集中使用它,但如果您使用的是nant或msbuild,则不能编译该代码.虽然有点凌乱,保持整洁,使用单独的组装:)
这在全网广泛争论.
我们使用单独的程序集和InternalsVisibleTo属性来帮助测试程序组件查看测试程序集的所有内部结构.我们倾向于为我们正在测试的每个组件制作一个测试组件.
我要说的是,在最终部署中唯一想要合并任何测试代码的时候是测试代码用于监视和控制应用程序.
将测试代码留在部署中:
膨胀代码根本没有真正的优势 - 所有额外的代码标记都不会在原地使用.
影响发布 - 您是否发布了完整应用的新版本.当您改进的只是在测试代码中时,例如,由于错误修复而扩展了测试套件.
你不能轻易地在另一个项目中重用测试框架 - 如果你总是发布被测试代码堵塞的应用程序,那么任何后续项目都必须重用相同的测试代码.否则,您最终会遇到应用程序A正在使用测试平台的v1.2来应用这些方面的情况.这是所有应用程序中常见的,例如表示层,或业务逻辑框架等.和应用程序.B正在使用测试框架app的v1.1.C正在使用v1.2.1等.
另一方面解耦允许您:
根据需要轻松升级和扩展测试套件.
轻松地在多个项目中重用测试套件.
在多个项目中使用通用的测试框架.
HTH
干杯,
抢
在不同的组件中.否则你的程序集将引用测试框架(例如Nunit.Framework.dll),你需要在客户机器上安装它,
即使您发布的是库,并且您希望您的客户将单元测试视为示例或关于如何使用您提供的对象的具体说明,在生产装配中包含的内容也很少.