在.NET(或任何其他语言或平台)中命名测试程序集的最佳约定是什么?
我主要分开的是这些选项(请提供其他人!):
或
第一个解决方案的问题在于它看起来像.Tests是网站的子命名空间,而它们在我的脑海里确实更加平行。当新的子命名空间发挥作用时会发生什么,例如 Company.Website.Controls ,我应该在哪里放置该命名空间的测试?
也许它应该是: Tests.Company.Website 和 Tests.Company.Website.Controls ,依此类推。
答案 0 :(得分:21)
我会选择
* Company.Website - the project
* Company.Website.Tests
简短的理由和答案很简单,测试和项目是在代码中链接的,因此它应该共享命名空间。
如果您希望拆分代码并在解决方案中进行测试,那么无论如何都要选择该选项。例如您可以使用
设置解决方案-Code Folder
- 测试文件夹
答案 1 :(得分:14)
我个人会选择
Company.Tests.Website
这样,你就可以在其中拥有一个通用的测试命名空间和项目,遵循与实际项目相同的结构。
答案 2 :(得分:7)
我实际上有一个备用的并行根。
Tests.Company.Website
当你有新的子命名空间时,它可以很好地消除歧义。
答案 3 :(得分:5)
我非常喜欢构建测试命名空间,如下所示:
<强> Company.Tests.Website.xxx 强>
<强> Company.Tests.Website.Controls 强>
与您一样,我认为测试是主代码的并行命名空间结构,这为您提供了这些。它还具有以下优点:由于命名空间仍以您的公司名称开头,因此您不应与第三方库发生任何命名冲突
答案 4 :(得分:1)
我们遵循嵌入式方法:
Company.Namespace.Test
Company.Namespace.Data.Test
这样,测试就接近于正在测试的代码,无需在项目之间来回切换或搜索引用,以确保测试覆盖特定方法。我们也不必维护两个独立但相同的层次结构。
我们还可以在增强和开发时测试代码的不同部分。
起初看起来有点奇怪,但从长远来看,它对我们来说非常有效。
答案 5 :(得分:1)
我也更喜欢“测试”前缀为程序集的实际名称,这样当我大量选择它们以将其拉入NUNit或您正在使用的任何测试工具时,它很容易看到我的所有单元测试程序集按字母顺序排列。< / p>
因此,如果网站是我的解决方案(和程序集)的名称,我建议 -
Tests.Website.dll 与实际代码程序集 Website.Dll
一起使用答案 6 :(得分:0)
我在解决方案资源管理器中通常将测试项目命名为 Project-Tests ,我使用 Company.Namespace.Tests 作为命名空间。
答案 7 :(得分:0)
我更愿意选择:
Company.Website.Tests
我不关心任何子命名空间,如Company.Website.Controls,所有测试都进入相同的命名空间:Company.Website.Tests。您不希望测试命名空间与其他代码并行,因为它只会使重构命名空间花费两倍的时间。
答案 8 :(得分:0)
我更喜欢Company.Website.Spec,并且通常每个解决方案都有一个测试项目
答案 9 :(得分:0)
随着MVC开始在.net web开发世界中成为现实,我将开始思考这些问题。请记住,M,V和C是不同的组件,因此:
网站是您的轻量级视图。 Core包含控制器,帮助器,视图接口等.Core.Tests是您对所述Core的测试。 模型适用于您的数据模型。这里很酷的是你的模型测试可以自动化你的数据库特定测试。
对某些人来说这可能有点过头了,但我发现它可以让我很容易地分开问题。