Elixir升级至1.15后运行测试报错:ExUnitProperties模块未找到
解决思路与步骤
适配Elixir 1.15的ExUnitProperties变更
Elixir 1.14及以上版本已将ExUnitProperties整合进标准库,改名为ExUnit.Properties。旧版stream_data(如0.1.x)的ExUnitProperties模块在高版本Elixir中存在兼容性问题,无法正常加载。
方案1:改用标准库模块(无需依赖stream_data)
修改test/support/generators.ex代码:
defmodule Ab.Generators do @moduledoc "Generators to use for property testing" use ExUnit.Properties # 替换原use ExUnitProperties alias Ab.SafeTimex def datetime do gen all( # use后已导入gen函数,可直接调用 year <- member_of(1990..2030), month <- member_of(1..12), day <- member_of(1..31), hour <- member_of(0..23), minute <- member_of(0..59), second <- member_of(0..59) ) do NaiveDateTime.new(year, month, day, hour, minute, second) end |> filter(&match?({:ok, _}, &1)) |> map(&elem(&1, 1)) |> map(&SafeTimex.to_datetime(&1, :utc)) end end
同时在mix.exs中移除stream_data依赖。
方案2:升级stream_data到兼容版本
将mix.exs中的stream_data依赖更新为支持Elixir 1.15的最新版本:
{:stream_data, "~> 0.6", only: :test}
执行MIX_ENV=test mix deps.get拉取新版本,之后重新编译即可,无需修改原有代码中的模块引用。
彻底清理编译缓存
执行以下命令清除旧编译文件与依赖缓存:
rm -rf _build MIX_ENV=test mix deps.clean --all MIX_ENV=test mix deps.get MIX_ENV=test mix compile --force
验证依赖与编译顺序
确认test/support目录已正确纳入编译路径(你的elixirc_paths配置无问题),执行MIX_ENV=test mix deps.tree确认stream_data已正确安装,再重新运行测试。
内容的提问来源于stack exchange,提问作者ejgreenwald
相关产品推荐
相关产品推荐

