मैं NetCipher पर गार्जियन प्रोजेक्ट की मदद कर रहा हूं। विरासत के कारणों से, वे अपनी मौजूदा परियोजना संरचना को रखना चाहते हैं, जो ग्रहण पर आधारित था। हालांकि, लाइब्रेरी की tests/
उपनिर्देशिका में परीक्षण करने के बजाय, वे एक सहकर्मी परियोजना मॉडल के साथ गए। तो, रेपो रूट से, libnetcipher/
लाइब्रेरी है और netciphertest/
उपकरण परीक्षण हैं।हम एक पीयर ग्रहण-शैली परियोजना के लिए एंड्रॉइड टेस्ट कैसे करते हैं?
libnetcipher/
के विपरीत, ग्राउंडल बिल्ड के लिए उपकरण परीक्षण कभी स्थापित नहीं किए गए थे। इसलिए, मैं libnetcipher/build.gradle
फ़ाइल में सामान जोड़ रहा हूं ताकि यह androidTest
स्रोतों को netciphertest/
निर्देशिका में अपने सामान्य स्थान की बजाय इंगित कर सके।
यह काम करता है:
androidTest {
manifest.srcFile '../netciphertest/AndroidManifest.xml'
java.srcDirs = ['../netciphertest/src']
resources.srcDirs = ['../netciphertest/src']
aidl.srcDirs = ['../netciphertest/src']
renderscript.srcDirs = ['../netciphertest/src']
res.srcDirs = ['../netciphertest/res']
assets.srcDirs = ['../netciphertest/assets']
}
हालांकि, डुप्लिकेट ../netciphertest
बिट्स को भावुक कर रहे हैं। मैं परिभाषित कर सकता हूं कि निश्चित रूप से डुप्लिकेशंस को कम करने के लिए निरंतर के रूप में। मैं यह समझने की कोशिश कर रहा हूं कि पूरी समस्या के लिए बेहतर दृष्टिकोण है या नहीं।
उदाहरण के लिए, इस काम नहीं करता है:
androidTest.setRoot('../netciphertest')
androidTest {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
मैंने सोचा कि शायद srcDirs
और srcFile
सामान setRoot()
मूल्य के सापेक्ष व्याख्या की जा सकती है, लेकिन वे परियोजना की ही जड़ के सापेक्ष व्याख्या की जा करने लगते हैं ।
क्या मैं काम कर रहा हूं उससे कहीं अधिक सुरुचिपूर्ण समाधान है?
"तो यह कम" icky "है?" कुछ हद तक हालांकि, मैं एक और अधिक सामान्य उद्देश्य का जवाब मांग रहा था। हालांकि इससे मेरे विशिष्ट परिदृश्य में मदद मिलेगी, "ick" को उचित स्तर तक चलाने के लिए पर्याप्त, मैं उम्मीद कर रहा था कि एक बेहतर समाधान था जिसने उन तरीकों को सरल बनाने के लिए नहीं बनाया। यदि कोई अन्य बेहतर विकल्प नहीं उठता है तो मैं शायद यह सफाई करूंगा। धन्यवाद! – CommonsWare
मैं [इंजेक्शन] (https://docs.gradle.org/current/userguide/organizing_build_logic.html#sec:injected_configuration) के बारे में भी पढ़ रहा था, इसलिए शायद 'netciphertest' फ़ोल्डर में build.gradle डालने से काम हो सकता है, फिर उस स्रोत को "इंजेक्शन" अन्य मॉड्यूल में सेट करें। –
@ कॉमन्सवेयर मैंने देखा कि आपका पुल अनुरोध गीथूब पर स्वीकार किया गया था। क्या आप बेहतर दृष्टिकोण ढूंढ रहे हैं? –