簡體   English   中英

如果不包含根應用,則鋼筋eunit會跳過所有應用測試

[英]Rebar eunit skips all app tests if root app is not included

我的問題是,如果不包含根應用程序,則無法為單個應用程序或模塊運行eunit測試。 我的目錄laylout看起來像這樣:

├── apps
│   ├── app1
│   └── app2
├── deps
│   ├── amqp_client
│   ├── meck
│   ├── rabbit_common
│   └── ranch
├── rebar.config
├── rel
└── src
    ├── rootapp.app.src
    ├── rootapp.erl
    ├── rootapp.erl
    └── rootapp.erl

現在,我可以做的是:

$ rebar eunit skip_deps=true

它將運行所有應用程序的測試。 另外,我可以這樣做:

$ cd apps/app1/
$ rebar eunit skip_deps=true

它運行app1的測試(我在apps / app1中也有一個rebar.config。

但是,如果我嘗試

$ rebar eunit skip_deps=true apps=app1

什么也沒做。 沒有輸出。 嘗試詳細模式會給我:

$ rebar -vv eunit skip_deps=true apps=app1
DEBUG: Consult config file "/Users/myuser/Development/erlang/rootapp/rebar.config"
DEBUG: Rebar location: "/usr/local/bin/rebar"
DEBUG: Consult config file "/Users/myuser/Development/erlang/erlactive/src/rootapp.app.src"
DEBUG: Skipping app: rootapp

當我包含根應用程序時,它可以工作:

$ rebar eunit skip_deps=true apps=rootapp,app1

盡管事實上我實際上是要測試app1而不是rootapp ,但是這真的很不舒服,因為SublimeText 2的SublimeErl插件將始終將應用程序設置為包含被測模塊的應用程序。因此,測試將始終失敗,因為實際上,根本不會運行任何測試。

長話短說:我可以在任何rebar.config文件中進行配置,以使在/apps運行一個應用程序的測試成為可能,而無需包括根應用程序嗎?

我個人更喜歡把主要應用到自己的OTP兼容的文件夾apps 只需在apps創建一個新的應用程序rootapp並將其包含在rebar.config

{sub_dirs, ["apps/app1",
            "apps/app2",
            "apps/rootapp"]}.

您可能還必須將apps目錄包含在您的lib路徑中:

{lib_dirs, ["apps"]}.

您可能想看看Fred Herbert的博客文章“其他方面一樣糟糕”

通過此設置,您應該能夠運行:

rebar skip_deps=true eunit 

它將運行應用程序中apps所有eunit測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM