18

传统上,我对生产和测试代码使用相同的文件夹结构,如下所示:

src/myproject/core.clj
test/myproject/core_test.clj

对于我在文件名中添加_test的测试文件。

我最近注意到有几个项目遵循这种结构(这也是 Leiningen 默认生成的):

src/myproject/core.clj
test/myproject/test/core.clj

是否有关于这一点的约定或使用其中一种的明显优势?

4

1 回答 1

18

我相信这只是惯例——我认为这两种方式都没有任何技术优势。

出于完全非技术性的原因,我个人更喜欢第一个版本:

  • 在路径中有两个“测试”目录似乎是多余的。
  • 将测试 .clj 文件与主 .clj 文件同名可能会导致混淆
  • 有时您想要创建与特定命名空间不完全一致的测试,例如full_system_test.clj端到端测试
  • 对所有*_test.clj文件进行模式匹配更容易

另外值得注意的是,Maven 标准目录布局约定也用于很多 Clo​​jure 项目(如果您构建还包含 Java 源代码的多语言项目,这可能会很方便):

src/main/clojure/myproject/core.clj
src/test/clojure/myproject/core_test.clj
src/main/resources/....
src/test/resources/....
于 2012-09-20T12:03:05.000 回答