问题标签 [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.

0 投票
1 回答
521 浏览

erlang - 使用钢筋时来自 Common Test 的覆盖报告

我有一个使用 Rebar 的 Erlang 应用程序,并且有使用 Common Test 编写的测试。我想查看这些测试的测试覆盖率报告,因此我在rebar.config文件中包含了以下行:

但是,Common Test 报告中的“Coverage log”链接只会导致一个页面显示“Cover tool is not used”。我怎样才能让它使用封面工具并在运行测试时给我一份封面报告?

0 投票
1 回答
95 浏览

github - 是否有针对 Erlang/OTP 的夜间构建?

我能够从源代码构建 Erlang,并且还按照https://github.com/erlang/otp/wiki/Running-tests中记录的说明运行了源代码附带的测试。在总共 11000 个测试用例中,我看到大约 900 个失败,但是,这些失败对我来说并不是很有吸引力:

  1. 是否有显示成功率的 Erlang/OTP 每晚构建?
  2. 他们是否预计会在这个平台上失败(在我的例子中,它是 x86 linux)?
  3. 如果它们不是已知问题,我如何确定是否有与之相关的拉取请求或错误报告?

谢谢!

0 投票
1 回答
550 浏览

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"}}}

0 投票
1 回答
718 浏览

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选项不指向现有文件。无论如何,我无法找到解决方法。

0 投票
1 回答
134 浏览

erlang - Erlang 通用测试覆盖规范文件 - 相对路径

我在我的 erlang 项目中使用 Common Test 进行代码覆盖率分析。

文件结构

源代码的 .beam 文件位于 ebin/ 中,对于测试,它们与测试源一起位于 test/ 中。

我目前正在使用 .coverspec 文件中的 .beam 文件的绝对路径。

myProject.coverspec:

这是可行的,但由于项目开发是分布式的,因此远非最佳。

ct_run 是从项目的基础 myProject 调用的,路径似乎与 myProject 无关,而是相对于其他位置。

我已经尝试过与 myProject 和 myProject/test 相关的路径,但没有成功。

我的问题是,myProject.coverspec 中的路径相对于哪里?

0 投票
1 回答
182 浏览

erlang - 如果无法编译通用测试套件,则测试运行失败

如果我的一个 Common Test 套件出现语法错误,ct_run只需等待 15 秒然后继续。它显示此消息:

如果我使用-noshell,则显示:

......无论如何都要继续。

如果编译失败,如何使其中止?

0 投票
1 回答
951 浏览

erlang - 如何测试常见测试中的错误处理?

我开始common test在 erlang 中用作我的测试框架。

假设我有一个函数,我希望只接受正数,并且在任何其他情况下它都会崩溃。

我想测试一下

不会成功完成。

我如何测试这种行为?在其他语言中,我会说测试用例预计会出现一些错误或异常,并且如果它在测试中的功能不会为无效的无效参数抛出任何错误,则会失败。如何通过普通测试做到这一点?

更新:

我可以让它工作

但我认为这太冗长了,我想要类似的东西:

我假设通用测试在某个地方有这个,并且我对框架缺乏适当的了解,这使我采取了如此冗长的解决方案。

更新: 受迈克尔回应的启发,我创建了以下函数:

我的测试变成了:

但我认为它只是有效的,因为assert_fail调用比try....catch在每个测试用例中都更具可读性。

我仍然认为 Common Test 中应该存在一些更好的实现,IMO 在每个项目中重复实现这个测试模式是一种丑陋的重复。

0 投票
2 回答
5674 浏览

erlang - 如何导出所有功能仅用于普通测试?

我一直在尝试导出 erlang 模块中的所有函数以用于通用测试套件,而不是 eunit 模块。到目前为止,它还没有为我工作。我正在使用 rebar 来运行 SUITE,我遇到了这个问题(http://lists.basho.com/pipermail/rebar_lists.basho.com/2011-October/001141.html),这基本上正是我想要的要做,但该方法对我不起作用。

我也添加{plugins, [rebar_ct]}.到 rebar.config 中,但没有任何区别。当我正常导出函数时,我应该指出我所有的测试都通过了,但我想避免这种情况。任何帮助都会非常感谢。

0 投票
1 回答
193 浏览

unit-testing - 是否可以让 Common Test 以随机顺序运行测试用例?

对于我编写的 Erlang 应用程序,我有几十个 Common Test 测试套件模块。所有的测试都通过了,但我觉得测试套件非常脆弱。重新排序测试会导致其中一些测试失败。我没有阅读Common Test 文档中的依赖项章节,并且我经常对单元测试中的应用程序状态做出假设。现在我想让我的测试套件更加健壮。

随机化测试顺序?

来自 Rspec 以随机顺序运行测试的 Ruby,我希望在 Common Test 中具有相同的功能。有谁知道是否有办法在 Common Test 中随机化测试顺序?我在文档中没有看到任何关于随机化测试顺序的内容。

all/0从和随机化返回值groups/0

我还考虑过改变all/0groups/0回调的输出。现在他们只返回硬编码列表。也许我可以随机化元素的顺序并让它们每次都以不同的顺序运行?有没有人有任何通过更改 Common Test 中的回调返回值来随机化测试顺序的经验?我还需要一种方法来按照导致它们失败的顺序重新运行测试,就像Rspec 的 --seed flag一样。

提前致谢!

0 投票
0 回答
73 浏览

unit-testing - 在另一个 Common Test 测试用例中运行 Common Test 套件

是否可以在 Common Test 测试用例中运行另一个 Common Test 测试套件?我正在编写一个 Common Test Hook 模块,需要一种方法来测试它。我认为最好的方法是定义两个测试套件模块。一个旨在与钩子一起使用,另一个用于运行带有钩子的第一个套件并验证结果。

我尝试在第一个模块中调用ct:run_test/1一个测试用例,如下所示:

但我收到以下错误:

我不太明白这个错误,也没有任何与ct:run_test/1. 有什么建议么?