मैं एरलांग कोड के लिए ईयूनिट परीक्षण लिख रहा हूं। जब मैं चलाने eunit:test(prob_list,[verbose])
यह कहता हैईयूनीट निजी कार्यों का परीक्षण करने में विफल रहता है
-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)).
...
...
...
:
prob_list_tests: probability_test...*failed*
::undef
लेकिन जब मैं probability/2
निर्यात
-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.
...
...
...
और एक इकाई के परीक्षण मॉड्यूल:
मैं एक स्रोत मॉड्यूल है मेरे prob_list
मॉड्यूल में, सबकुछ ठीक है।
निजी कार्यों का परीक्षण करने का कोई तरीका है?
-ifdef(TEST). -include_lib("eunit/include/eunit.hrl"). -endif. %% Functions [...] -ifdef(TEST). %% Unit tests go here. -endif.
यह आपको अपनी सार्वजनिक के साथ ही आपकी निजी कार्यों के परीक्षण करने की अनुमति चाहिए:
यह एक उचित दृष्टिकोण है (हालांकि यह ध्यान देने योग्य है कि आपके पास कई निर्यात लाइनें हो सकती हैं, जो चीजों को थोड़ा सा साफ कर सकती हैं), खासकर यदि आप दोनों को अपने यूनिट परीक्षण अलग फाइलों में अलग करना चाहते हैं और अपने निजी कार्यों का परीक्षण करना चाहते हैं। इस दृष्टिकोण के लिए एक नकारात्मक पक्ष यह है कि यह उस कोड को जन्म दे सकता है जो परीक्षण पास करता है लेकिन अन्यथा नहीं चलाएगा यदि आप गलती से अपनी परीक्षण फ़ाइलों के बाहर निजी विधियों का उपयोग करते हैं। –
परीक्षण मॉड्यूल में सब कुछ बेनकाब करने के लिए आप "-compile (export_all) का उपयोग कर सकते हैं।" एक बड़ा निर्यात विवरण बनाए रखने के बजाय। – goertzenator