Unit testing ExUnit-运行存储在自定义目录中的所有测试(不是tests/)
我想在Elixir项目中有两组独立的单元测试,可以使用不同的ExUnit配置单独运行。我正在开发ExUnit格式化程序,并尝试为其编写单元测试。为了测试它,我想我应该创建另一个目录(Unit testing ExUnit-运行存储在自定义目录中的所有测试(不是tests/),unit-testing,elixir,elixir-mix,Unit Testing,Elixir,Elixir Mix,我想在Elixir项目中有两组独立的单元测试,可以使用不同的ExUnit配置单独运行。我正在开发ExUnit格式化程序,并尝试为其编写单元测试。为了测试它,我想我应该创建另一个目录(example\u tests),其中包含一个test\u helper.exs文件,该文件与test/中的文件类似,但配置了使用自定义格式化程序的ExUnit。我将我的格式化程序添加为ExUnit格式化程序,然后创建了一个测试模块example\u tests。现在的问题是,我不知道如何配置ExUnit以使用exa
example\u tests
),其中包含一个test\u helper.exs
文件,该文件与test/
中的文件类似,但配置了使用自定义格式化程序的ExUnit。我将我的格式化程序添加为ExUnit格式化程序,然后创建了一个测试模块example\u tests
。现在的问题是,我不知道如何配置ExUnit以使用example\u tests/test\u helper.exs
中指定的配置运行example\u tests/
中的所有测试
我发现有一个test\u paths
配置参数,不能在mix.exs
文件中设置。问题是,该值是基于每个项目设置的,我需要它有两个不同的值(通常只是[“test”]
,但对于格式化程序的测试运行[“example_tests”]
)。我假设我可以在每个任务的基础上覆盖配置值,所以我也创建了一个示例_tests任务,但我不知道如何更改配置
是否有一种方法可以根据每个任务定制项目配置(Mix.project.config
)?或者,是否有更好的方法创建两组具有不同ExUnit配置的独立测试
更新:
这里是指向
测试
混合任务的源代码的链接:您可以在测试路径
中放置多个路径,只要它们都有一个test\u helper.exs文件,当执行给定路径中的测试时,使用该路径的测试助手执行这些测试。因此,test
下的任何内容都可以使用默认的格式化程序,但是,example\u test
下的任何内容都可以使用自定义格式化程序运行
您还可以为给定的测试模块运行setup\u all
回调中的ExUnit.configure(格式化程序:[MyFormatter])
,以便该模块中的所有测试都使用您的格式化程序,并使用退出时的回调将其切换回默认值。您可能需要为您的测试设置async:false
,因为我认为格式化程序配置对于所有测试都是全局的-或者使用moduletag属性(例如@moduletag:custom\u formatter
)来标记一组测试应该作为哪个组运行,然后使用mix-test——包括自定义格式化程序
和mix-test——排除自定义格式化程序
,只将这些测试作为一个组一起运行。然后使用混合任务别名来简化您的工作(例如,mix test
使用默认格式设置程序运行测试,mix test。自定义
使用自定义格式设置程序运行测试
希望其中一个对你来说是一个可行的解决方案