2013-03-15 15 views

cevap

12

Bu imkansız. Bu işlevleri yalnızca test için derlerken dışa aktarmak için -ifdef(TEST). önişlemci koşulunu kullanabilirsiniz.

+0

Bu -ifdef (TEST) denedim. -export ([ generate_perm_list/2 ]). -endif. Modemde, TEST makrosu ortak sınamada tanımlı değil gibi görünüyor. Ortak Test'te tanımlanan başka makrolar var mı? –

+0

Modüllerinizi, sizin tarafınızdan tanımlanan TEST makrosuyla test etmek için derlemeniz gerekir. '{D, 'TEST'}' 'derleyici seçeneği veya -DTEST derleme bayrağı kullanarak bunu yapabilirsiniz. –

+0

Çalıştığınız için teşekkürler –

0

Özel işlevleri, bunların tümünü ihraç eden kendi modüllerine koyabilirsiniz. Orijinal modül bunları içe aktarabilir ve gizli kalır ve test çerçeveniz doğrudan özel modülü içe aktarmayı çağırabilir.

1

Ortak Test ile zor, ancak bir modülde özel işlevleri test etmek için gömülü EUnit test durumlarını kullanmak mümkündür. Ortak testi kullanarak genel arayüzü test edebilirsiniz. Rebar, rebar test çalıştırdığınızda yerleşik test durumlarını otomatik olarak keşfedecektir. Eğer (veya bunların parçaları) bir modülü uzak alay gerekiyorsa E ünitesi ile test ederken, istediğiniz şekilde Meck bulabilirsiniz

-module(example). 

-export([public/1]). 

-ifdef(TEST). 
-include_lib("eunit/include/eunit.hrl"). 
-endif. 

%% This function will be tested externally using Common Test 
public(Foo) -> 
    private(Foo + 42). 

%% This function is not reachable to CT, so it will be tested using EUnit. 
private(Bar) -> 
    Bar * 2. 

%%% Tests 
-ifdef(TEST). 

private_test() -> 
    ?assertEqual(10, private(5)), 
    ?assertEqual(0, private(0)). 

-endif. 

bir yan not:

İşte bir örnek.

EUnit'e hafif bir giriş yapmak için, Learn You Some Erlang chapter konusuna bakın.

İlgili konular