多个应用程序的 Eunit 错误

Posted

技术标签:

【中文标题】多个应用程序的 Eunit 错误【英文标题】:Eunit error with multiple apps 【发布时间】:2012-04-30 03:08:23 【问题描述】:

我的目录结构如下:

myapp
├── apps
│   ├── myapp
│   ├── myotherapp
│   └── myapp_common
├── deps
│   ├── cowboy
......

我在 myapp 主目录中使用 rebar 运行 eunit,如下所示:

./rebar skip_deps=true eunit

它为apps/ 中的三个应用程序正确运行 eunit。之后它尝试在父目录myapp 中运行 eunit 并抛出以下错误:

......
==> myapp (eunit)
ERROR: eunit failed while processing /home/msheikh/myapp: 'EXIT',badmatch,error,1,
                           "cp: missing destination file operand after `.eunit'\nTry `cp --help' for more information.\n",
         [rebar_file_utils,cp_r,2,[],
          rebar_eunit,eunit,2,[],
          rebar_core,run_modules,4,[],
          rebar_core,execute,4,[],
          rebar_core,process_dir,4,[],
          rebar_core,process_commands,2,[],
          rebar,main,1,[],
          escript,run,2,[file,"escript.erl",line,727]]

问题:如何解决此问题或阻止 eunit 为父 myapp 目录运行?

myapp 主目录中的rebar.config 文件如下所示:

lib_dirs, ["deps", "apps"].

deps, [
        lager, ".*", git, "https://github.com/basho/lager.git", branch, "master",
        jsx, ".*", git, "git://github.com/talentdeficit/jsx.git", tag, "v0.9.0",
        cowboy, "", git, "git://github.com/extend/cowboy.git", branch, "master",
        ....
       ].

require_otp_vsn, "R15".

escript_incl_apps, [getopt].

erl_opts, [
            debug_info, 
            warn_missing_spec,
            parse_transform, lager_transform
           ].

eunit_opts, [verbose].

validate_app_modules, false.

sub_dirs, [
            "apps/myapp/",
            "apps/myotherapp/",
            "apps/myapp_common/"].

【问题讨论】:

【参考方案1】:

我有相同的项目结构,并且可以正常工作。

    您确定在***目录中没有srctestebin 文件夹吗? 如果不是,如果您mkdir .eunit 会发生什么? (我不建议保留这个,而是从那里寻找解决方案)。

【讨论】:

以上是关于多个应用程序的 Eunit 错误的主要内容,如果未能解决你的问题,请参考以下文章

eunit 测试超时

在erlang eunit故障中打印测试夹具描述

为啥 Eunit 坚持我的函数返回 ok, value 而不是?

带EUnit的新模块

Erlang YAWS:如何测试一个简单的 REST Web 服务?

使用 P2 导向器安装 Epsilon IDE