Elixir ExUnit:在完成测试套件之前运行函数?
在每个测试之前调用Elixir ExUnit:在完成测试套件之前运行函数?,elixir,ex-unit,Elixir,Ex Unit,在每个测试之前调用setup回调,在任何测试运行之前,每个模块只调用一次setup\u all回调 在这种情况下,我需要在整个测试套件运行之前准备一些东西。只有一次。我使用的是一个非标准的数据库,设置包含所有索引的模式需要一点时间。因此,我希望通过不经常这样做来加速测试 有办法处理这个问题吗?您可以将初始化代码放入test/test\u helper.exs中。该文件中的任何代码都将在测试运行之前执行,并且只执行一次。正如@mudasobwa指出的,不管代码是在ExUnit.start()之前还
setup
回调,在任何测试运行之前,每个模块只调用一次setup\u all
回调
在这种情况下,我需要在整个测试套件运行之前准备一些东西。只有一次。我使用的是一个非标准的数据库,设置包含所有索引的模式需要一点时间。因此,我希望通过不经常这样做来加速测试
有办法处理这个问题吗?您可以将初始化代码放入
test/test\u helper.exs
中。该文件中的任何代码都将在测试运行之前执行,并且只执行一次。正如@mudasobwa指出的,不管代码是在ExUnit.start()之前还是之后,它都将在测试之前运行
# your code here
ExUnit.start()
# or here
您可以将初始化代码放入test/test\u helper.exs
。该文件中的任何代码都将在测试运行之前执行,并且只执行一次。正如@mudasobwa指出的,不管代码是在ExUnit.start()之前还是之后,它都将在测试之前运行
# your code here
ExUnit.start()
# or here
“beforeExUnit.start()
”在这里有意义吗test/test\u helper.ex
只执行一次,不管ExUnit
是否已经启动。@mudasobwa我认为只要ExUnit
启动,它就会尝试运行所有测试,所以我认为这一点非常重要。@Hauleth mudasobwa是正确的。ExUnit.start
的文档中说:“在VM终止之前启动ExUnit并自动运行测试。”我还通过在ExUnit.start()之后添加代码来测试这一点,它在测试运行之前执行。我会修改我的答案。我的错。但这是个好主意,令人惊讶,但很好。现在我认为我错了。正在运行的测试与test\u helper.exs
处理的其余部分之间可能存在竞态条件,因为它没有编译,但被编译(exs
是一个脚本。)“beforeExUnit.start()
”在这里是否重要test/test\u helper.ex
只执行一次,不管ExUnit
是否已经启动。@mudasobwa我认为只要ExUnit
启动,它就会尝试运行所有测试,所以我认为这一点非常重要。@Hauleth mudasobwa是正确的。ExUnit.start
的文档中说:“在VM终止之前启动ExUnit并自动运行测试。”我还通过在ExUnit.start()之后添加代码来测试这一点,它在测试运行之前执行。我会修改我的答案。我的错。但这是个好主意,令人惊讶,但很好。现在我认为我错了。正在运行的测试与test\u helper.exs
处理的其余部分之间可能存在竞态条件,因为它不是编译的,而是被保护的(exs
是一个脚本。)