在 Elixir 中,将测试文件与其相关模块放在一起

问题描述 投票:0回答:1

在 Elixir 中是否可以将我的测试模块与他们正在测试的模块放在同一目录中?

一个典型的 Elixir 项目的结构如下:

project
|-- lib
|   `-- my_module.ex
`-- test
    |-- my_module_test.exs
    `-- test_helper.exs

在编写节点项目时,我喜欢将测试模块放在他们正在测试的模块旁边。这可以使用 Jest 等工具轻松配置:

project
|-- lib
|   |-- my_module.ex
|   `-- my_module.test.exs
`-- test
    `-- test_helper.exs

Elixir/Exunit 中是否可以有类似的设置?

elixir ex-unit
1个回答
10
投票

好的,为了未来的访客,我会将其作为答案。

混合文档明确说明

从命令行调用

mix test
将在与模式
*_test.exs
在项目的
test
目录
中找到的每个文件中运行测试。

看起来

ExUnit
作者强烈反对开发人员将测试放在其他地方。正如 @harryg 发现的那样,这仍然是可能的。
project
设置具有
test_paths
变量 ,用于检查在哪里可以找到测试(以及模式的
test_pattern
),默认为
"test"
和 分别是
"*_test.exs"

要将其重置为其他值,只需更新

project
回调并添加这两行:


      def project do
        [
          app: @app,
          version: @version,
          elixir: "~> 1.6",
          start_permanent: Mix.env() == :prod,
          ...
          test_paths: ".",
          test_pattern: "*_test.exs" # or something else
        ]
      end

© www.soinside.com 2019 - 2024. All rights reserved.