在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
相关产品推荐
相关产品推荐

