You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 18:13:36