- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
免责声明:此问题的作者主要具有 Erlang/OTP 的理论知识。
我有一个小型 OTP 应用程序,它通过 open_port()
调用 myapp/ebin
目录中的一些非 Erlang 可执行文件。当我运行应用程序本身时,一切顺利,可执行文件的端口已成功打开。
但是当我尝试为应用程序运行单元测试时,那些依赖于 open_port()
的单元测试失败了,因为当使用 EUnit
启动时,应用程序试图找到myapp/.eunit/ebin
下的可执行文件。
如何在不更改应用程序本身代码的情况下更改该行为?如何使用与运行应用程序本身时相同的当前目录运行 EUnit 测试? (我的意思是更改提供可执行文件路径的代码只是为了能够运行 EUnit 并不是一个好主意)。
编辑:我遵循了 Erlang 中的建议 mailing list ,但是 code:priv_dir(myapp_name)
返回 {error, bad_name}
。
编辑:我可以看到 .eunit/
包含 modulename.beam
文件,ebin/
包含 modulename.beam
文件和 modulename_tests.beam
文件。现在我完全迷路了。当我运行 make test
时,rebar
运行 eunit
命令,它调用 中的每个
目录调用modulename_tests.beam
文件>ebin/.eunit/
目录下相应的modulename.beam
文件(filename:absname("")
清楚地表明 modulename.beam
文件在测试期间从 .eunit/
执行)。为什么会这样?为什么我们需要从 .eunit/
目录而不是 ebin/
运行 modulename.beam
文件?
为什么我们实际上需要在 myapp/ebin
和 myapp/.eunit/ebin
中拥有完全相同的 .beam 文件?
附言我读过 official documentation并没有找到解决方案。
最佳答案
EUnit 本身不会执行此操作 - .eunit 目录是 Rebar 使用的约定。
关于erlang - 为什么 EUnit 将 .beam 文件编译成 .eunit/ebin?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10660962/
免责声明:此问题的作者主要具有 Erlang/OTP 的理论知识。 我有一个小型 OTP 应用程序,它通过 open_port() 调用 myapp/ebin 目录中的一些非 Erlang 可执行文件
免责声明:此问题的作者主要具有 Erlang/OTP 的理论知识。 我有一个小型 OTP 应用程序,它通过 open_port() 调用 myapp/ebin 目录中的一些非 Erlang 可执行文件
我是 Erlang 的新手。它有 2 个测试框架:EUnit 和 Common Test。我很困惑何时使用一个而不是另一个。有人可以向我解释 EUnit 相对于 Common Test 的优势是什么,
我目前正在为一个模块编写测试,该模块在以 spawn_link(?MODULE, init, [self()]) 开始的简单进程中运行。 在我的 eunit 测试中,我定义了一个设置和拆卸函数以及一组
我正在尝试检查我在 MongoDB 中定义的所有索引是否正在被我的应用程序使用,并且没有额外的索引。我有一个实用程序可以为单个 Eunit 执行此操作测试套件。但是,我的一些组件有不止一个 Eunit
我有一个带有少量应用程序的中型版本。我最近在发行版中将一些常见功能重构为库应用程序。这使我的 EUnit 测试失败了 undef测试任何需要库应用程序的东西时的消息。 设置是这样的: % In app
假设我有一个名为 example.erl 的模块 在此模块中,我使用以下构造进行调试: %%% Switch debugging output on/off: %-define(DBG(Str, Ar
我正在使用 EUnit 编写一个测试,但控制台中没有输出任何异常详细信息。 exp_test() -> ?assertEqual(0, 1/0). 在 Erlang Shell 输出中运行此模块:
我想知道如何在 eunit 中标记特定测试,以强制它在下一次测试运行时被忽略(即编译,但不执行)。我在 TDD 上下文中问这个问题,即我想以绿色方式进行重构,但仍然有一些测试用例,稍后我会讨论。 我不
我想在执行任何 eunit 测试之前启动 lager 以便我可以在实际运行测试时看到日志(我使用日志进行调试) . 但是我有数百个测试(分布在多个应用程序和模块中),我不想遍历每个测试并将 lager
我有以下目录结构: myapp ├── apps │ ├── myapp │ ├── myotherapp │ └── myapp_common ├── deps │ ├── cowb
我想使用 EUnit 测试一些第三方 Erlang 代码。 代码函数的输出使用 io:format/2 显示到标准输出。 .我想捕获该输出并执行 ?assert测试将被打印出来的字符串。我无法修改第三
我想编写测试,其中设置和清理功能不会针对每个测试执行,而是在测试开始和测试结束时执行一次。 所以我尝试了这种方式: generator_test_() -> {setup, fun setup/0,
在我的启动脚本中,我使用以下命令启动 erlang: erl -args_file vm.args 目前,在尝试使用 rebar eunit 运行单元测试时,有没有办法将自定义运行时参数(例如 -ar
我正在使用 Erlang 和 EUnit 进行单元测试,我想编写一个测试运行器来自动运行我的单元测试。问题是 eunit:test/1 似乎只返回“错误”或“确定”,而不是测试列表以及它们根据通过或失
我正在为 Erlang 代码编写 EUnit 测试。 我有一个源模块: -module(prob_list). -export([intersection/2,union/2]). probabili
我使用 rebar3 (beta-4) 创建了一个 release 应用程序。添加了一些 eunit 测试并编写了一些代码。 现在我必须调试一个测试用例,看看我必须添加什么才能使实现正常工作。 我找到
调用回调函数后是否可以检查 gen_server 的内部状态?我不想在这里更改我的服务器的 API。 最佳答案 您可以使用sys:get_state/1适合所有一代。 关于erlang - 如何使用
有没有办法打印使用fixtures的erlang测试生成器的测试描述?使用生成器很难判断哪个测试实际上失败了,打印描述会有所帮助。 例子: -module(math_test). -include_l
我想从控制台运行以下 eunit 测试命令 eunit:test([test_module, [verbose]). 我试过这个,但似乎不起作用 erl -noshell -pa ./ebin -s
我是一名优秀的程序员,十分优秀!