问题标签 [eunit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
unit-testing - 多个应用程序的 Eunit 错误
我有以下目录结构:
myapp
我在主目录中使用 rebar 运行 eunit,如下所示:
它在apps/
. 之后它尝试在父myapp
目录中运行 eunit 并抛出以下错误:
问题:如何解决此问题或阻止 eunit 为父myapp
目录运行?
rebar.config
主目录中的文件如下myapp
所示:
erlang - 运行 rebar eunit 时将运行时参数传递给 erlang
在我的启动脚本中,我开始使用 erlang:
目前,在尝试运行单元测试时rebar eunit
,我有没有办法将自定义运行时参数(例如 -args_file 选项)传递给 rebar 启动的 erlang 进程?我搜索了高低的文档无济于事......
我很感激帮助。
erlang - 不在 EUnit 中输出异常堆栈跟踪
我正在用 EUnit 编写测试,但控制台中没有任何异常详细信息输出。
在 Erlang Shell 输出中运行这个模块:exp_test()
但在 EUnit 输出中
EUnit 不输出任何异常跟踪信息
我在 eunit 中尝试详细配置,但没有效果。
我想在 eunit 测试结果中输出一些异常细节。
谢谢~
erlang - 为什么 EUnit 将 .beam 文件编译成 .eunit/ebin?
免责声明:这个问题的作者主要有 Erlang/OTP 的理论知识。
我有一个小型 OTP 应用程序,它myapp/ebin
通过open_port()
. 当我运行应用程序本身时,一切顺利,可执行文件的端口已成功打开。
但是当我尝试为应用程序运行单元测试时,依赖于open_port()
失败的单元测试,因为当开始时EUnit
应用程序启动时,尝试在myapp/.eunit/ebin
.
如何在不更改应用程序本身代码的情况下更改该行为?如何使用与运行应用程序本身相同的当前目录运行 EUnit 测试?(我的意思是更改提供可执行文件路径的代码只是为了能够运行 EUnit 并不是一个好主意)。
编辑:我遵循了 Erlang邮件列表中的建议,但是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/
调用目录中的相应modulename.beam
文件.eunit/
(filename:absname("")
清楚地表明modulename.beam
文件是.eunit/
在测试期间执行的)。为什么会这样?为什么我们需要modulename.beam
从目录运行文件.eunit/
而不是ebin/
?
为什么我们实际上需要在myapp/ebin
和中有相同的 .beam 文件myapp/.eunit/ebin
?
PS我已经阅读了官方文档并没有找到解决方案。
erlang - ?_assertEqual 失败时显示完整的预期和值信息
我正在编写一个单元测试,其中生成了一个(相当长的)二进制文件,我想断言生成的二进制文件等于我期望生成的那个。我正在通过“ rebar eunit ”运行 eunit。
问题是,当这个断言失败时,输出会缩写为“ ... ”,我想查看完整的输出,以便找出不同之处。
我现在使用“ ?debugFmt() ”作为临时解决方案,但我想知道是否有替代方案(可以应用于“ ?_assertEqual() ”的配置选项或参数,所以输出仅在断言失败时显示)。
提前致谢!
编辑:由于legoscia的回答,我包括一个使用测试生成器的测试样本,有多个断言:
erlang - 在 Erlang 中从 Eunit 获取测试结果
我正在使用 Erlang 和 EUnit 进行单元测试,我想编写一个测试运行器来自动运行我的单元测试。问题是 eunit:test/1 似乎只返回“错误”或“确定”,而不是测试列表以及它们根据通过或失败返回的内容。
那么有没有办法运行测试并取回某种形式的测试运行的数据结构及其通过/失败状态?
rest - Erlang YAWS:如何测试一个简单的 REST Web 服务?
在一个简单的基于 Erlang YAWS 的 RESTful 应用程序中,我希望有一组测试将 HTTP 请求发送到 RESTful API,从服务器获取响应,然后测试这些响应。
如果每个“send-request-get-request-test”测试都可以在 EUnit 中运行(可以使用测试生成器),那就太好了。
我还希望能够使用rebar
( make test
) 运行这组测试。
最近我在另一个应用程序(Mochiweb)中使用过,但我发现它使用起来很麻烦。 ibrowse
是否有任何其他选项可以编写可以将 HTTP 请求发送到 YAWS RESTful 应用程序的 Erlang/OTP 测试?最常见的方法是什么?
erlang - Eunit 测试不会等待接收
eunit 不会等待接收,eunit 有什么特别的吗?
如果我test_account:login_test().
直接调用,它可以收到响应。
谢谢你。
erlang - 依赖于库应用程序的 Erlang EUnit 测试模块
我有一个带有少量应用程序的中型版本。我最近在发行版中将一些常见功能重构为库应用程序。undef
这使我的 EUnit 测试在测试任何需要库应用程序的东西时 失败并显示消息。
设置是这样的:
然后
然后单元测试some_app:bar()
失败。我正在运行它们rebar eunit skip_deps=true
。我正在使用skip_deps=true
,因为我的版本使用了一些 3rd 方应用程序(SQL 等)。
我假设测试开始失败是因为 EUnit 在没有依赖关系的情况下调用被测应用程序?有没有什么办法解决这一问题?我已将 .app 文件配置为显式声明依赖项。它在发行版中运行良好,并且已经部署了大约一天,没有问题,但如果我能让测试再次通过,我会感觉好多了:)
(我可以使用一个模拟应用程序来存根utils:foo/0
,我可以看到这在哪里是理想的惯用语,但在这种情况下这似乎有点矫枉过正,因为utils:foo/0
(阅读:它是现实世界的对应物)做了一些非常简单的事情。)