问题标签 [common-test]
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 - 使用钢筋时来自 Common Test 的覆盖报告
我有一个使用 Rebar 的 Erlang 应用程序,并且有使用 Common Test 编写的测试。我想查看这些测试的测试覆盖率报告,因此我在rebar.config
文件中包含了以下行:
但是,Common Test 报告中的“Coverage log”链接只会导致一个页面显示“Cover tool is not used”。我怎样才能让它使用封面工具并在运行测试时给我一份封面报告?
github - 是否有针对 Erlang/OTP 的夜间构建?
我能够从源代码构建 Erlang,并且还按照https://github.com/erlang/otp/wiki/Running-tests中记录的说明运行了源代码附带的测试。在总共 11000 个测试用例中,我看到大约 900 个失败,但是,这些失败对我来说并不是很有吸引力:
- 是否有显示成功率的 Erlang/OTP 每晚构建?
- 他们是否预计会在这个平台上失败(在我的例子中,它是 x86 linux)?
- 如果它们不是已知问题,我如何确定是否有与之相关的拉取请求或错误报告?
谢谢!
erlang - 分布式测试与erlang通用测试
现在我正在使用 Erlang,我认为我应该使用通用测试框架进行一些分布式测试。我读过一些关于这个的文章。但是我不能在多个节点上运行我自己的应用程序ct_master
。它困扰了我很多天——从节点不能包含我自己的应用程序。你能给我一些通知吗?
目录树:
测试套件是:
规格文件是:
我只是运行erl -name ct@localhost
,然后ct_master:run("test/dist.spec")
在 erlang shell 中运行。
通用测试总是以 message 退出{badmatch,{error,{"no such file or directory","aaa.app"}}}
。
configuration - 使用 rebar 将 Erlang 配置文件(用于多个应用程序)应用于 Common Test
我已经为我的应用程序创建了一个配置文件,如Erlang -- config中所述,该文件由多个子应用程序组成,每个子应用程序都有自己的 Common Test suites 目录。对于构建和测试,我使用 rebar,我的目录结构如下所示
其中apps.config
包含所有应用程序的配置。当我启动我的虚拟机时,erl -pa deps/*/ebin -pa apps/*/ebin -config apps
一切正常。我已经添加{ct_extra_params, "-erl_args -config rpm"}.
到我的rebar.config
但当我运行时调用rebar ct
时发生错误。application:get_env/1,2
如果用钢筋无法做到这一点,如果有人能告诉我如何在那里完成它,也可以使用 make 代替。我知道我可以按照Erlang - External Configuration Date中的描述以某种方式将配置加载到 Common Test 中,但我认为如果我已经有了更简单的方法apps.config
。
更新: ct_run -dir apps/app1/test -pa deps/*/ebin -pa apps/*/ebin -erl_args -config rpm
也可以按预期工作。我猜问题是 rebar 在为每个应用程序运行测试时会更改 cwd,因此该-config rpm
选项不指向现有文件。无论如何,我无法找到解决方法。
erlang - Erlang 通用测试覆盖规范文件 - 相对路径
我在我的 erlang 项目中使用 Common Test 进行代码覆盖率分析。
文件结构
源代码的 .beam 文件位于 ebin/ 中,对于测试,它们与测试源一起位于 test/ 中。
我目前正在使用 .coverspec 文件中的 .beam 文件的绝对路径。
myProject.coverspec:
这是可行的,但由于项目开发是分布式的,因此远非最佳。
ct_run 是从项目的基础 myProject 调用的,路径似乎与 myProject 无关,而是相对于其他位置。
我已经尝试过与 myProject 和 myProject/test 相关的路径,但没有成功。
我的问题是,myProject.coverspec 中的路径相对于哪里?
erlang - 如果无法编译通用测试套件,则测试运行失败
如果我的一个 Common Test 套件出现语法错误,ct_run
只需等待 15 秒然后继续。它显示此消息:
如果我使用-noshell
,则显示:
......无论如何都要继续。
如果编译失败,如何使其中止?
erlang - 如何测试常见测试中的错误处理?
我开始common test
在 erlang 中用作我的测试框架。
假设我有一个函数,我希望只接受正数,并且在任何其他情况下它都会崩溃。
我想测试一下
不会成功完成。
我如何测试这种行为?在其他语言中,我会说测试用例预计会出现一些错误或异常,并且如果它在测试中的功能不会为无效的无效参数抛出任何错误,则会失败。如何通过普通测试做到这一点?
更新:
我可以让它工作
但我认为这太冗长了,我想要类似的东西:
我假设通用测试在某个地方有这个,并且我对框架缺乏适当的了解,这使我采取了如此冗长的解决方案。
更新: 受迈克尔回应的启发,我创建了以下函数:
我的测试变成了:
但我认为它只是有效的,因为assert_fail
调用比try....catch
在每个测试用例中都更具可读性。
我仍然认为 Common Test 中应该存在一些更好的实现,IMO 在每个项目中重复实现这个测试模式是一种丑陋的重复。
erlang - 如何导出所有功能仅用于普通测试?
我一直在尝试导出 erlang 模块中的所有函数以用于通用测试套件,而不是 eunit 模块。到目前为止,它还没有为我工作。我正在使用 rebar 来运行 SUITE,我遇到了这个问题(http://lists.basho.com/pipermail/rebar_lists.basho.com/2011-October/001141.html),这基本上正是我想要的要做,但该方法对我不起作用。
我也添加{plugins, [rebar_ct]}.
到 rebar.config 中,但没有任何区别。当我正常导出函数时,我应该指出我所有的测试都通过了,但我想避免这种情况。任何帮助都会非常感谢。
unit-testing - 是否可以让 Common Test 以随机顺序运行测试用例?
对于我编写的 Erlang 应用程序,我有几十个 Common Test 测试套件模块。所有的测试都通过了,但我觉得测试套件非常脆弱。重新排序测试会导致其中一些测试失败。我没有阅读Common Test 文档中的依赖项章节,并且我经常对单元测试中的应用程序状态做出假设。现在我想让我的测试套件更加健壮。
随机化测试顺序?
来自 Rspec 以随机顺序运行测试的 Ruby,我希望在 Common Test 中具有相同的功能。有谁知道是否有办法在 Common Test 中随机化测试顺序?我在文档中没有看到任何关于随机化测试顺序的内容。
all/0
从和随机化返回值groups/0
?
我还考虑过改变all/0
和groups/0
回调的输出。现在他们只返回硬编码列表。也许我可以随机化元素的顺序并让它们每次都以不同的顺序运行?有没有人有任何通过更改 Common Test 中的回调返回值来随机化测试顺序的经验?我还需要一种方法来按照导致它们失败的顺序重新运行测试,就像Rspec 的 --seed flag一样。
提前致谢!
unit-testing - 在另一个 Common Test 测试用例中运行 Common Test 套件
是否可以在 Common Test 测试用例中运行另一个 Common Test 测试套件?我正在编写一个 Common Test Hook 模块,需要一种方法来测试它。我认为最好的方法是定义两个测试套件模块。一个旨在与钩子一起使用,另一个用于运行带有钩子的第一个套件并验证结果。
我尝试在第一个模块中调用ct:run_test/1
一个测试用例,如下所示:
但我收到以下错误:
我不太明白这个错误,也没有任何与ct:run_test/1
. 有什么建议么?