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

在Mix Test中添加测试专用Application遇报错的问题咨询

问题原因

你把测试专用的MyProjectTest.Application当成独立OTP应用添加到了extra_applications里,但它本质是主应用my_project的一部分,没有自己独立的.app配置文件,所以Mix会报错找不到对应文件。

解决步骤
  • 修正mix.exs配置
    打开mix.exs,找到测试环境的extra_applications配置,移除其中的Elixir.MyProjectTest.Application。示例修改如下:

    defp project do
      [
        # 保留其他原有配置
        extra_applications: [:logger] # 删掉Elixir.MyProjectTest.Application
      ]
    end
    
  • 在测试启动时手动启动测试Application
    打开test/test_helper.exs,在ExUnit.start()之前添加启动代码,确保所有测试运行前Fake服务已启动:

    # 启动测试专用的Fake管理应用
    {:ok, _} = MyProjectTest.Application.start(:normal, [])
    
    ExUnit.start()
    
  • 确认测试支持模块被编译
    检查mix.exs中的elixirc_paths配置,确保测试环境包含test/support目录(默认一般已配置,没有的话添加):

    defp elixirc_paths(:test), do: ["lib", "test/support"]
    defp elixirc_paths(_), do: ["lib"]
    
额外说明

extra_applications是用来配置依赖的独立OTP应用(比如:logger、:ecto这类第三方或系统应用)的,你写的测试专用Application属于当前项目代码的一部分,不需要作为独立应用注册。通过test_helper.exs手动启动,就能让它在测试环境中正常管理Fake UDP连接了。

内容的提问来源于stack exchange,提问作者David Stocking

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 17:42:14