Erlang'da Erlang tarafından dışa aktarılmayan fonksiyonlara sahip bir modülüm var. Ortak test çerçevesini kullanarak bu işlevleri nasıl test edebilirim?Ortak test kullanan modülün Erlang Testi (Dışa Aktarılmayan/Özel) fonksiyonu
cevap
Bu imkansız. Bu işlevleri yalnızca test için derlerken dışa aktarmak için -ifdef(TEST).
önişlemci koşulunu kullanabilirsiniz.
Ö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.
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.
Sadece birisi bununla karşılaşırsa. Eunit.hrl dosyası dahil edilmeden önce NOTEST tanımlanmadıkça TEST tanımlar. -include_lib ("eunit.hrl"). ref: http://www.erlang.org/download/eunit.hrl
- 1. Bir modülün dışa aktarılma düğüm yöntemlerini test etme
- 2. Intellij'de bir modülün başka bir modülün testlerine bağlı olması mümkündür
- 3. es2015 yeniden dışa aktarma modülü ve yeniden dışa aktarılmış modülün tek dışa aktarma işlevini geçersiz kılma
- 4. Birim testi Scala'nın Spesifikasyonlarını kullanan yay uygulamaları
- 5. Ünite testi yaparken açısal modülün yapılandırma işlevi nasıl ele alınır?
- 6. İki (junit) test fonksiyonu yaratın
- 7. Paketlere göre test siparişi testi
- 8. Etiket taşması testi için test
- 9. Erlang dönüşümüne Elixir
- 10. eureka ve şerit kullanan test servisi
- 11. Güney geçişlerini kullanan Django uygulamalarını test etme
- 12. Microsoft birim testi. Test metodu gövdesinden testi geçmek mümkün mü?
- 13. Erlang
- 14. Erlang
- 15. android espresso testi: boş test paketi. test bulunamadı
- 16. Yükseltme Testi: Parametreli test durumları nasıl yazılır
- 17. Laravel Birimi Testi - Tüm Testleri Test Et
- 18. Bellek db oynatma çerçevesinde test testi
- 19. grails test-app bireysel entegrasyon testi
- 20. Junit4 Android test alanı metin testi
- 21. fonksiyonu
- 22. Erlang uygulamasında bir Erlang uygulaması nasıl çalışır
- 23. UpdateModel'i kullanan alay edilmeden Birim Test İşlemlerini nasıl yapabilirim?
- 24. SpringBoot @Integration Test için test notu
- 25. Erlang için ActiveRecord
- 26. Android studio'da birim testi için test klasörünü yapılandırın
- 27. Modülün denetleyici işlevini, tamamen ayrı bir modülün denetleyicisinden nasıl ararsınız?
- 28. erlang BEAM bytecode
- 29. fonksiyonu
- 30. fonksiyonu
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ı? –
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. –
Çalıştığınız için teşekkürler –