2

我有一个包含一堆不同应用程序的 Erlang 项目。我正在使用Common Test进行一些测试。

apps/foo/suites/foo_SUITE.erl
apps/bar/suites/bar_SUITE.erl

我开始在这些套件中看到重复的实用程序代码。

我应该把我的实用程序代码放在哪里,以便它可以在两个套件之间共享?

我考虑过添加另一个应用程序:

apps/test_stuff

...但是如果不使被测应用程序依赖于此(或者我可以吗?),我无法使 CT 套件依赖于此。我不想这样做,因为test_stuff只有在测试时才需要。

我的eunit测试有类似的问题,无论是在应用程序之间(apps/foo/testvs. ),还是在同一应用程序( vs )apps/bar/test中的 eunit 和 CT 测试之间使用类似的功能。我也可以对这种情况使用相同的解决方案吗?或者我需要问另一个问题吗?apps/bar/suitesapps/bar/test

4

2 回答 2

0

您认为 ct:require/1,2 可以帮助您,以便 foo 和 bar SUITE 在执行之前需要 test_stuff 吗?欲了解更多信息http://www.erlang.org/doc/man/ct.html#require-1

于 2014-01-29T10:30:21.510 回答
0

这取决于您如何打包最终版本。例如,我使用钢筋进行释放管理。我将 Cowboy 与其他依赖项一起获取以用于测试目的,但在我的 中reltool.config,我省略了它,因此它不会与最终产品一起打包。我rebar用来运行 Common Test,它能够将 Cowboy 添加到路径中,而无需将其作为库与其他所有内容捆绑在一起或作为依赖项添加到我正在测试的应用程序中。

但是,如果您有另一个进程从依赖项中推断出您的发布配置,则您必须找到一种方法来在生成发布时排除您的测试代码。

于 2014-01-29T23:38:27.593 回答