问题标签 [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.
erlang - 关于在 /priv 中使用不同数据进行测试和生产的最佳实践?
我正在用 EUnit 编写测试,一些被测单元需要通过file:consult/1读取数据文件。我的测试对/priv中可用的数据进行了假设,但生产中的数据会有所不同。实现这一目标的最佳方法是什么?
我是 Erlang 的新手,我想到了一些让我觉得有点难看的解决方案。例如,
- 将这两个文件放在/priv中并使用宏(例如,“-ifdef(EUNIT)”)来确定将哪个文件传递给file:consult/1。这对我来说似乎太脆弱/容易出错。
- 让 Rebar 将正确的文件复制到/priv。
如果我试图做一些根本错误的事情,请随时指出。情况可能就是这样。
有一个更好的方法吗?
erlang - 如何使用 eunit 测试 gen_server 内部状态
调用回调函数后是否可以检查 gen_server 的内部状态?我宁愿不在这里更改我的服务器的 API。
erlang - 如何在所有 eunit 案例之前启动应用程序
我的 Erlang 项目由 rebar 管理,它分为不同的模块。
并且对于每个模块*_tests.erl,使用 Eunit Fixtures来设置环境。例如,
Makefile 是:
这里我遇到了一个问题,因为我在 test/ 中有很多测试模块,每个测试模块都会启动和停止整个执行流程的应用程序。有时启动应用程序会失败,提示找不到 app.config 配置文件,不知道为什么。
所以我认为有没有办法在所有测试模块之前启动应用程序?
erlang - 如何使用 rebar 创建带有 eunit 测试的 erlang 模块?
我的目标很简单;在学习 Erlang 时,我想使用 rebar 创建一个带有 eunit 测试的基本模块:
我尝试了以下方法:
编辑 'test/erlangscratch_tests.erl' 看起来像这样:
执行测试:
测试没有执行,但代码似乎也没有编译。
这是我的文件夹的内容:
问题:我错过了哪些步骤?
更新:
根据接受的答案,basic_test_
需要重命名函数并且缺少“src/erlangscratch.app.src”,因此我使用以下内容创建了它:
erlang - 在 eunit 测试夹具中添加设置和拆卸方法的首选方法是什么?
所以我想添加一个在所有其他测试之前执行的方法,以及在所有测试完成后执行的另一个方法,例如:
我知道我可以通过明确说明所有测试在单个测试中运行来“手动”执行此操作:
我希望有一种更好的方法来激活它,这样我就可以编写测试方法而无需将它们显式添加到此列表中。似乎应该对此有更好的支持?
intellij-idea - eunit 测试套件被取消错误
我一直在尝试使用 IntellijIdea 进行 erlang 开发。我使用钢筋从现有的酸创建了一个项目。但是当我尝试运行测试用例时,出现以下错误。这是我在控制台上看到的
我怎样才能摆脱这个问题?
erlang - Rebar eunit 运行非本地(非 Hipe)代码
我已经使用编译了我的 Erlang 模块
在 rebar.config 中使用以下选项
我看到代码确实被编译为本机,因为我在编译期间看到 Hipe 消息,并且 .beam 文件大小也大于非本机编译。
但是,当我跑步时
哪个测试我的模块我总是得到错误的
在我的测试模块中。
为什么 rebar 不将我的 eunit 测试作为本机代码运行?
我还在 reltool.config 文件中添加了这一行,
钢筋 2.1.0-pre 17 20140421_192321 git 2.1.0-pre-166-ged88055
erlang - 使用 meck 对具有相同参数的相同方法进行多次调用
我知道使用 ruby/rspec,您可以执行以下操作,以便为对该方法进行的不同调用接收不同的返回值:
我只能使 meck 存根成为一个具有一个返回值的方法,如下所示:
有没有办法让它ok
在第一次调用时返回,然后ok2
在第二次调用时返回?
erlang - 有没有办法在 eunit 测试中调用 application:set_env ?
是否可以在 eunit 测试中设置被测代码中使用的环境变量?这失败了**error:undef
:
编辑:
没有太多可以显示的错误,但这里是完整的堆栈:
erlang - Eunit 断言错误报告错误的模块
我开始编写一些函数来帮助测试地图上的断言。
假设我有以下地图:
在我的业务逻辑中调用一个函数后,我希望地图看起来像这样:
换句话说,我期望
- 地图在更新后具有相同数量的键
- 的值
a
从 0 变为 1 - 值
b
不变
我可以把这个测试留给模式匹配,但是,如果我有一个带有很多键(甚至可能有很多子图)的大地图,那么问题可能出在哪里并不明显 - 至少需要一些时间才能找到问题(也许我期望更新的一些值没有 - 或者可能有一些额外的键等,等等 - 我希望你明白这一点)。
因此,作为开始,我在我的模块中提出了以下辅助函数:
我从另一个由 eunit 执行的模块调用它:
我收到以下错误消息:
这几乎是我想要的,因为它报告了地图中有问题的键和有问题的值,但是它报告了asserts
模块中的错误,即使我有兴趣看到失败的实际测试,而不是对断言的引用模块。我认为测试生成器正好适合这一点,但我无法以这种方式工作。
有什么方法可以让我eunit
报告实际的测试模块(map_tests
功能/测试simple_map_test
行 X)而不是我的asserts
模块?