有没有办法从 iex 提示符内再次重新运行初始测试/混合命令?



如果我用 iex 运行测试,比如:

iex -S mix test test/path/file_test.exs

它完成,它将我放入常规IEX提示符,在那里等待中断点。 伟大! 但是我不知道如何重新运行测试,所以我必须<C-c> <C-c> <up> <enter>才能再次运行它。 这有点痛苦,似乎没有必要。

我想在 iex 中运行它,以便我的撬断点可以工作。 有没有办法从 iex 提示符内再次重新运行初始测试/混合命令?

有一种方法可以做到这一点,但这非常没有吸引力。 Mix 会跟踪已无限期运行的所有测试(直到 VM 死亡)。因此,启动iex -S mix并执行Mix.Task.run "test'将在第一次工作,但将假设"测试"任务已经在第二次调用时运行

。ExUnit 还具有假定初始化一次的状态(运行所有测试套件),并在运行测试时清空。不幸的是,该初始化发生在测试编译时,请参阅 ExUnit.Case 源代码

@doc false
defmacro __before_compile__(_) do
quote do
if @ex_unit_async do
ExUnit.Server.add_async_case(__MODULE__)
else
ExUnit.Server.add_sync_case(__MODULE__)
end
def __ex_unit__(:case) do
%ExUnit.TestCase{name: __MODULE__, tests: @ex_unit_tests}
end
end
end

溶液:

$MIX_ENV=test iex -S mix phx.server
iex(1)>Mix.Tasks.Test.run(["test file path"])
iex(2)>Kernel.ParallelCompiler.files(["test file path"]) 
iex(3)>Mix.Tasks.Test.run(["test file path"])

最新更新