我有一个包含许多不同应用程序的Erlang项目。我正在使用 Common Test 进行一些测试。
apps/foo/suites/foo_SUITE.erl
apps/bar/suites/bar_SUITE.erl
我开始看到这些套件中的实用程序代码重复。
我应该在哪里放置我的实用程序代码,以便可以在两个套件之间共享?
我考虑过添加另一个应用程序:
apps/test_stuff
...但是我不能让CT套件依赖于此而不会使被测试的应用程序依赖于此(或者我可以吗?)。我不想这样做,因为只有在测试时才需要test_stuff
。
我的 eunit 测试在应用程序(apps/foo/test
与apps/bar/test
)之间存在类似的问题,并且我在eunit和我之间使用类似的功能CT测试在同一个应用程序中(apps/bar/suites
vs apps/bar/test
)。我也可以在这种情况下使用相同的解决方案吗?或者我是否需要问另一个问题?
答案 0 :(得分:0)
您认为ct:require / 1,2可以帮助您,以便foo和bar SUITE在执行之前需要test_stuff吗?有关详细信息http://www.erlang.org/doc/man/ct.html#require-1
答案 1 :(得分:0)
这取决于您如何打包最终版本。例如,我使用钢筋进行相关管理。我将Cowboy与其他依赖项一起用于测试目的,但在我的reltool.config
中,我省略了它,因此它不会与最终产品打包在一起。我使用rebar
运行Common Test,它可以将Cowboy添加到路径中,而不会将其作为lib捆绑其他所有内容,或者作为依赖项添加到我正在测试的应用程序中。
但是,如果您有另一个流程从依赖项中推断出您的发布配置,那么您必须找到一种在生成发布时排除测试代码的方法。