2016-04-11 6 views
1

Ben komutuyla erl kabuğundan ortak test paketleri çalıştırmayıErlang ct:</p> <pre><code>> ct:run_test([{spec,"test/spec"}]). </code></pre> <p>Testi paketi bir hata ile sonlandı: run_test bağımlılıkları

undefined function eredis:start_link/3 

Ama kabuk bu yazarsanız :

> eredis:module_info(). 

Ben bağımlı modül eredis yüklenmiş olduğunu görebilirsiniz:

[{exports,[{start_link,0}, 
{start_link,2}, 
... 
{start_link,6}, 
... 

Neden ct: run_test bağımlı modülleri ve nasıl düzgün bir şekilde nasıl çalıştırılacağını görmüyor?

+0

"eredis" ve "eredis_client" iki ayrı modüldür. – Amiramix

+0

Thnx [Amiramix] (http://stackoverflow.com/users/745250/amiramix). Yazım hatasıydı. Aslında eredis_client [eredis] 'in bir parçasıdır (https://github.com/wooga/) ve ayrıca yüklenmiştir: '> eredis: module_info(). [{ihracatı [{start_link, 0}, {start_link, 2}, ... {start_link, 6} ' ct: İki farklı test ishal için run_test bana iki farklı hataları verdi ama şimdi şekil istiyorum ct: run_test komutunun neden herhangi bir bağımlılık ile başarısız olduğu. –

+0

Sorunuzda, ihracat listesinde 'start_link/3', hatanın mevcut olmadığından şikayet ettiği listelenmiyor. Start_link/3'ün dışa aktarıldığından emin misiniz? eğer öyleyse, lütfen soruyu uygun bir şekilde düzenleyin. – Amiramix

cevap

0

Sorunun bağımlılık olmadığını anladım. Sorunu yeniden üreten örnek code yazdım.

Erlang kabuktan ct: run_test/1 komutunu çalıştırırken her zaman ebin dizinine (-pa seçeneği ile) mutlak yol ayarlanmalıdır.

$ ./rebar3.1 compile && erl -pa _build/default/lib/ct_fail/ebin/ 
> ct:run_test([{spec,"test/spec"}]). 

hata ile başarısız olur:

Aksi ortak testler komutuyla erlang kabuk başladı

=== ERROR! init_per_testcase crashed! 
    Location: [{ct_fail,start_link}, 
{fail_SUITE,init_per_testcase,16}, 
{test_server,do_init_per_testcase,1191}, 
{test_server,run_test_case_eval1,955}, 
{test_server,run_test_case_eval,926}] 
    Reason: {undef,[{ct_fail,start_link,[1,2],[]}, 
         {fail_SUITE,init_per_testcase,2, 
            [{file,"fail_SUITE.erl"},{line,16}]}, 
         {test_server,do_init_per_testcase,2, 
            [{file,"test_server.erl"},{line,1191}]}, 
         {test_server,run_test_case_eval1,6, 
            [{file,"test_server.erl"},{line,955}]}, 
         {test_server,run_test_case_eval,9, 
            [{file,"test_server.erl"},{line,926}]}]} 

en ilginç parçası olduğunu module_info komut test çalışması öncesinde yürütüldüğünde :

$ ./rebar3.1 compile && erl -pa _build/default/lib/ct_fail/ebin/ 
> ct_fail:module_info(). 
ct_fail:module_info(). 
[{module,ct_fail}, 
{exports,[{start_link,0}, 
      {start_link,1}, 
      {start_link,2}, 
      {start_link,3}, 
      {start_link,4}, 
      {init,1}, 
      ... 

> ct:run_test([{spec,"test/spec"}]). 

t tavuk testleri başarılı olacak! Bu arada

testi başarısız olduğunda: Test yetmezliği oluşmuş

$ ./rebar3.1 compile && erl -pa _build/default/lib/ct_fail/ebin/ 
> ct:run_test([{spec,"test/spec"}]). 
... 

işlev çağrısı modülü ihracatı listeden kaybolur:

> ct_fail:module_info(). 
[{module,ct_fail}, 
{exports,[{start_link,0}, 
      {start_link,1}, 
      {start_link,3}, 
      {start_link,4}, 
      {init,1}, 
      ... 

ct_fail:start_link/2 artık ihraç edilmez!

İlgili konular