【问题标题】:Elixir ExUnit: Run function before the complete test suite?Elixir ExUnit:在完整的测试套件之前运行功能?
【发布时间】:2018-09-20 22:40:33
【问题描述】:

setup 回调在每次测试之前调用,setup_all 回调在每个模块仅调用一次,在任何测试运行之前。

我有需要在整个测试套件运行之前准备一些东西的情况。只有一次。我正在使用非标准数据库,并使用所有索引设置架构需要一点时间。所以我想加快测试速度,不要过于频繁地这样做。

有没有办法解决这个问题?

【问题讨论】:

    标签: elixir ex-unit


    【解决方案1】:

    你可以把你的初始化代码放在test/test_helper.exs。该文件中的任何代码都将在测试运行之前执行,并且只执行一次。正如@mudasobwa 指出的那样,无论代码在ExUnit.start() 之前还是之后,它都会在测试之前运行。

    # your code here 
    
    ExUnit.start()
    
    # or here
    

    【讨论】:

    • ExUnit.start()之前”在这里重要吗? test/test_helper.ex 只执行一次,ExUnit 是否已经启动并不重要。
    • @mudasobwa 我认为只要ExUnit 启动它就会尝试运行所有测试,所以我认为严格把它放在前面很重要。
    • @Hauleth mudasobwa 是对的。 ExUnit.start 的文档说:“启动 ExUnit 并在 VM 终止之前自动运行测试。”我还通过在ExUnit.start() 之后添加代码对此进行了测试,它在测试运行之前执行。我将编辑我的答案。
    • 我的错。但这是个好主意,令人惊讶,但很好。
    • 现在我想我是错了。在测试运行和test_helper.exs 处理的其余部分之间可能存在竞争条件,因为它没有 编译,而是intepredexs 是一个脚本。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    • 2017-04-09
    • 2023-03-23
    • 1970-01-01
    相关资源
    最近更新 更多