测试文件应该放在与源文件相同的文件夹中吗?

时间:2017-02-22 07:59:09

标签: javascript testing typescript karma-runner

是否更容易将测试文件放在他们测试的源文件旁边(在同一个src目录中),还是应该创建一个带镜像层次结构的单独tests目录?

将它们放在同一个文件夹中似乎可以使维护生活更轻松,但也会挤占源目录。

选项1:为源和测试分别设置文件夹时的目录结构:

- src
+-- item.ts
`-- util
    +-- helper.ts

- test
+-- item.test.ts
`-- util
    `-- helper.test.ts

选项2:将两种类型的文件放在同一目录中时的目录结构:

- src
+-- item.ts
+-- item.test.ts
`-- util
    +-- helper.ts
    `-- helper.test.ts

我曾经一直使用选项1,直到尝试angular-cli并让它与测试文件一起生成代码文件,如选项2所示,这让我重新思考整个事情。

2 个答案:

答案 0 :(得分:12)

选项#2是我的方式。

在考虑Angular 2组件时,我认为它们是一个单独的实体,由多个文件组成。您不能将HTML / CSS文件移到远离组件的其他目录中,那么为什么要移动单元测试?

我为VSCode编写了一个小实用程序插件,我个人认为它非常有用 - 它将Angular 2组件压缩到Explorer视图中的单个条目中,并添加图标/上下文菜单选项以获取模板/ css /单元测试。这有助于我将组件视为一个单元,包含多个部件。也许这样的东西可以帮助保持你的目录"清洁"如果你担心的是什么?

我鼓励您将单元测试视为代码的一部分,而不是除了。如果你能掌握它们,它们将非常有用。

答案 1 :(得分:10)

我的个人建议是选择#1。原因是:

  1. 您的源代码未被污染'代码与实际业务逻辑无关。请注意,为同一个类/模块提供多个测试文件并不罕见。
  2. 还有更多只是你可能会写的单元测试。那e2e怎么样?它们是否会被放置在相应的“对应物”旁边,因为它们不是特定于文件绑定的?因此,您最终可能会在整个项目中混乱您的测试 - 其中一些在一个地方,一些在另一个地方。在专用目录中分离所有测试 - 解决了这个问题。
  3. 很容易准备项目的部署。否则你将不得不以某种方式从已转换的源中删除所有测试。
  4. 不要相信我 - 看看像

    这样的既定项目