पर निर्भर करता है मेरे पास कुछ हद तक अनुप्रयोगों के साथ मध्यम आकार की रिलीज़ है। मैंने हाल ही में रिलीज के भीतर लाइब्रेरी एप्लिकेशन में कुछ सामान्य कार्यक्षमता को दोबारा दोहराया। इसने लाइब्रेरी एप्लिकेशन की आवश्यकता के लिए जब भी कुछ भी परीक्षण किया, तो मेरे यूरोपीय संघ परीक्षण undef
संदेशों के साथ असफल हो गए।एरलांग ईयूनीट परीक्षण मॉड्यूल जो लाइब्रेरी एप्लिकेशन
% In apps/utils/src/utils.erl
-module(utils).
-export([foo/0]).
foo() -> "OH HAI".
फिर
% In apps/some_app/src/some_app.erl
-module(some_app).
-export([bar/0]).
bar() -> io:format("foo: ~s~n", [utils:foo()]).
% unit tests for bar()
फिर some_app:bar()
के लिए इकाई परीक्षण असफल:
सेट अप कुछ इस तरह है। मैं उन्हें rebar eunit skip_deps=true
के साथ चला रहा हूं। मैं skip_deps=true
का उपयोग कर रहा हूं क्योंकि मेरी रिलीज कुछ तृतीय पक्ष अनुप्रयोगों (एसक्यूएल, आदि) का उपयोग करती है।
मुझे लगता है कि परीक्षण विफल होने लगते हैं क्योंकि ईयूनीट अपनी निर्भरताओं के बिना परीक्षण के तहत ऐप का आह्वान कर रहा है? क्या इसको ठीक करने का कोई तरीका है? मैंने स्पष्ट रूप से निर्भरता घोषित करने के लिए .app फ़ाइल को कॉन्फ़िगर किया है। यह रिलीज में ठीक काम करता है, और इसे बिना किसी समस्या के लगभग एक दिन के लिए तैनात किया गया है, लेकिन अगर मैं फिर से पास करने के लिए परीक्षण प्राप्त कर सकता हूं तो मुझे बहुत अच्छा लगेगा :)
(मैं एक मॉकिंग ऐप का उपयोग कर सकता हूं utils:foo/0
को बाहर निकालने के लिए, और मैं देख सकता हूं कि यह आदर्श आदर्श रूप से कहां होगा, लेकिन ऐसा लगता है कि इस मामले में ओवरकिल की तरह है क्योंकि utils:foo/0
(पढ़ें: यह वास्तविक दुनिया समकक्ष है) कुछ वास्तव में सरल सामान करता है।)
मुझे लगता है कि इसका ईयूनीट के साथ कुछ लेना देना नहीं है, लेकिन रीबर परीक्षण कैसे चला रहा है। या तो क्योंकि जब आप skip_deps का उपयोग करते हैं, तो यह अन्य अनुप्रयोगों को संकलित नहीं करता है, या क्योंकि यह उन्हें एरलांग कोड पथ में नहीं जोड़ता है, भले ही उन्हें पहले संकलित किया गया हो। – RichardC
मुझे लगता है कि मुझे इसे समझने के लिए रीबर स्रोत में खोदने की जरूरत है:/मुझे लगता है * 'skip_deps' ध्वज 'डीपीएस' निर्देशिका में यूनिट परीक्षणों को छोड़ देता है (जिसका उपयोग तीसरे पक्ष के सामान के लिए किया जा रहा है)। – dantswain
जहां तक मैं रीबर स्रोत को देखने से कह सकता हूं, 'skip_deps' बस' deps' निर्देशिका में अनुप्रयोगों को छोड़ने के लिए रीबर को बताता है। – dantswain