EUlang testleri için Erlang kod yazıyorum. Ben probability/2
dışa aktardığınızdaEUnit özel işlevlerini test edemiyor
prob_list_tests: probability_test...*failed*
::undef
ama: Ben eunit:test(prob_list,[verbose])
koşmak o dediğinde
-module(prob_list_tests).
-include_lib("eunit/include/eunit.hrl").
-define(TEST_LIST,[{3,0.2},{4,0.6},{5,1.0},{6,0.5}]).
-define(TEST_LIST1,[{2,0.9},{3,0.6},{6,0.1},{8,0.5}]).
-define(TEST_UNO_LIST,[{2,0.5}]).
probability_test() -> ?assertNot(prob_list:probability([],3)),
?assertEqual(0.5,prob_list:probability(?TEST_UNO_LIST,2)),
?assertNot(prob_list:probability(?TEST_UNO_LIST,3)),
?assertEqual(0.2,prob_list:probability(?TEST_LIST,3)),
?assertEqual(1.0,prob_list:probability(?TEST_LIST,5)),
?assertNot(prob_list:probability(?TEST_LIST,7)).
...
...
...
:
-module(prob_list).
-export([intersection/2,union/2]).
probability([], _Item) -> false;
probability([{First,Probability}|Rest], Item) ->
if
First == Item -> Probability;
true -> probability(Rest, Item)
end.
...
...
...
ve bir birim test modülü:
Bir kaynak modülü var benim prob_list
modülünde her şey yolunda.
Özel işlevleri sınamak için herhangi bir yöntem var mı? Bu, kamu yanında özel fonksiyonları test etmek için izin vermelidir
-ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). -endif. %% Functions [...] -ifdef(TEST). %% Unit tests go here. -endif.
:
Bu özellikle mantıklı bir yaklaşımdır (özellikle birden fazla dışa aktarma hattına sahip olabileceğinize dikkat edin), özellikle de ünite testlerinizi ayrı dosyalara ayırıp özel işlevlerinizi test etmek istiyorsanız. Bu yaklaşımın bir dezavantajı, testten geçen kodlara yol açabileceğidir, ancak test yöntemlerinin dışındaki özel yöntemleri yanlışlıkla kullanırsanız, aksi takdirde çalışmaz. –
Her şeyi test modülüne göstermek için "-compile (export_all)" seçeneğini kullanabilirsiniz. büyük bir ihracat beyanı tutmak yerine. – goertzenator