मैं ग्रेडेल के लिए नया हूं। मैं ग्रैडल 1.10 और उबंटू 13 का उपयोग करता हूं।
मैं जानना चाहता हूं कि क्या एसबीटी में 'टेस्टोनली' के समान केवल एक स्थानीय टेस्ट क्लास को निष्पादित करने की कोई आज्ञा है ।
मैं ग्रेडेल के लिए नया हूं। मैं ग्रैडल 1.10 और उबंटू 13 का उपयोग करता हूं।
मैं जानना चाहता हूं कि क्या एसबीटी में 'टेस्टोनली' के समान केवल एक स्थानीय टेस्ट क्लास को निष्पादित करने की कोई आज्ञा है ।
जवाबों:
सिंगल टेस्ट क्लास चलाने के लिए एयरबोर्न का जवाब अच्छा है।
कुछ कमांड लाइन विकल्पों का उपयोग करके, जो यहां पाए गए हैं , आप बस कुछ ऐसा कर सकते हैं।
gradle test --tests org.gradle.SomeTest.someSpecificFeature
gradle test --tests *SomeTest.someSpecificFeature
gradle test --tests *SomeSpecificTest
gradle test --tests all.in.specific.package*
gradle test --tests *IntegTest
gradle test --tests *IntegTest*ui*
gradle test --tests *IntegTest.singleMethod
gradle someTestTask --tests *UiTest someOtherTestTask --tests *WebTest*ui
टेस्टेल के संस्करण 1.10 से यह परीक्षण फ़िल्टर का उपयोग करके परीक्षणों का चयन करने का समर्थन करता है । उदाहरण के लिए,
apply plugin: 'java'
test {
filter {
//specific test method
includeTestsMatching "org.gradle.SomeTest.someSpecificFeature"
//specific test method, use wildcard for packages
includeTestsMatching "*SomeTest.someSpecificFeature"
//specific test class
includeTestsMatching "org.gradle.SomeTest"
//specific test class, wildcard for packages
includeTestsMatching "*.SomeTest"
//all classes in package, recursively
includeTestsMatching "com.gradle.tooling.*"
//all integration tests, by naming convention
includeTestsMatching "*IntegTest"
//only ui tests from integration tests, by some naming convention
includeTestsMatching "*IntegTest*ui"
}
}
बहु-स्वाद वातावरण (Android के लिए एक सामान्य उपयोग-मामला) के लिए, इस उत्तर को जांचें , क्योंकि --tests
तर्क असमर्थित हो जाएगा और आपको एक त्रुटि मिलेगी।
--tests
कक्षा के भीतर एक एकल परीक्षण विधि का उपयोग करने के लिए, तो हम सभी वर्गों पर पुनरावृत्ति देखते हैं, यहां तक कि उन सभी को नहीं चलाया जा रहा है, जो बहुत धीमी है। पता नहीं कि सुस्ती हमारे एनवी के कारण है या अगर यह दूसरों को प्रभावित करेगा। अधिक खोजने पर अद्यतन कर सकते हैं।
आप कर सकते हैं gradle -Dtest.single=ClassUnderTestTest test
यदि आप एकल वर्ग का परीक्षण करना चाहते हैं या regexp का उपयोग करना चाहते हैं, तो आप इस लिंक अनुभाग 23.12 के तहतgradle -Dtest.single=ClassName*Test test
परीक्षणों के लिए फ़िल्टरिंग कक्षाओं के अधिक उदाहरण पा सकते हैं । परीक्षा।
--tests
कमांड लाइन विकल्प का समर्थन करते हैं , जो प्रतिस्थापित करने के लिए सेट है -DtestTaskName.single
।
--test
विकल्प के साथ आप अपने परीक्षण वर्ग के भीतर परीक्षण को एक विधि तक सीमित कर सकते हैं। उदाहरण के लिए: आपकी कक्षा के भीतर gradle test --tests *MyTest.someMethod
केवल एकल परीक्षा चलेगी । जैसा कि मैं एक परीक्षण मामले का निर्माण कर रहा हूं, मैं आमतौर पर एक ही विधि चलाता हूं ताकि यह आसान हो जाए कि मैं केवल उस आउटपुट पर ध्यान केंद्रित करूं जिसे मुझे डिबग करने की आवश्यकता है, फिर पूरे परीक्षण मामले को अंत में चलाएं। someMethod
MyTest
gradle -D:submodule:test.single=ClassUnderTestTest :submodule:test
। इस चर्चा को gradle.org पर
--no-rebuild
विकल्प का उपयोग भी करना चाह सकते हैं , जैसे gradle -D:submodule:test.single=ClassUnderTestTest --no-rebuild :submodule:test
कि निर्भरता को फिर से बनाने के लिए, और बदले में उस एकल परीक्षण को निष्पादित करने के लिए।
यदि आपके पास मल्टी-मॉड्यूल प्रोजेक्ट है:
हमें कहने दें कि आपकी मॉड्यूल संरचना है
root-module
-> a-module
-> b-module
और परीक्षण (testToRun) आप चलाने के लिए देख रहे हैं बी-मॉड्यूल में है, पूर्ण पथ के साथ: com.xyz.b.module.TestClass.testToRun
जैसा कि यहां आप बी-मॉड्यूल में परीक्षण चलाने के लिए इच्छुक हैं, इसलिए आपको बी-मॉड्यूल के लिए उपलब्ध कार्यों को देखना चाहिए।
./gradlew :b-module:tasks
उपरोक्त आदेश विवरण के साथ बी-मॉड्यूल में सभी कार्यों को सूचीबद्ध करेगा। और आदर्श स्थिति में, आपके पास उस मॉड्यूल में इकाई परीक्षण चलाने के लिए परीक्षण नाम का एक कार्य होगा ।
./gradlew :b-module:test
अब, आप बी-मॉड्यूल में सभी परीक्षण चलाने के लिए बिंदु पर पहुंच गए हैं, अंत में आप परीक्षण चलाने के लिए उपरोक्त कार्य के लिए एक पैरामीटर पारित कर सकते हैं जो कुछ निश्चित पथ पैटर्न से मेल खाता है
./gradlew :b-module:test --tests "com.xyz.b.module.TestClass.testToRun"
अब, इसके बजाय अगर आप चलाते हैं
./gradlew test --tests "com.xyz.b.module.TestClass.testToRun"
यह मॉड्यूल और बी दोनों के लिए परीक्षण कार्य चलाएगा, जिसके परिणामस्वरूप विफलता हो सकती है क्योंकि मॉड्यूल में उपरोक्त पैटर्न से मेल खाने वाला कुछ भी नहीं है।
./gradlew :b-module:test --tests testToRun
बहुत समझाने के बाद, निम्नलिखित ने मेरे लिए काम किया:
gradle test --tests "a.b.c.MyTestFile.mySingleTest"
कृपया ध्यान दें कि --tests
यदि आपके पास अलग-अलग बिल्ड types/flavors
(विफल रहता है Unknown command-line option '--tests'
) तो विकल्प काम नहीं कर सकता है । इस मामले में, विशेष परीक्षण कार्य (जैसे testProdReleaseUnitTest
कि सिर्फ के बजाय test
) निर्दिष्ट करना आवश्यक है
./gradlew test --tests *testMyCollectionTake*
और मैं यह नहीं बता सकता कि मुझे कैसे बदलना चाहिएtest
वाइल्डकार्ड परीक्षण नाम के साथ
नीचे gradlew
कमांड लाइन विकल्प का उपयोग करके एकल टेस्ट क्लास चलाने की आज्ञा है:
gradlew.bat Connected**your bundleVariant**AndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.TestClass
com.example.TestClass
वेरिएंट के साथ क्लास चलाने के लिए उदाहरण के नीचे Variant_1
:
gradlew.bat ConnectedVariant_1AndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.TestClass
मेरे मामले में, मेरा ग्रहण जावा संकलक चेतावनी बहुत अधिक निर्धारित की गई थी, और ग्रहण मेरी कक्षा को निष्पादन के लिए मान्य नहीं था। मेरी संकलक सेटिंग को अद्यतन करने से समस्या ठीक हो गई। आप इसके बारे में और अधिक यहाँ पढ़ सकते हैं: एनोटेशन-नॉनकूल-नहीं-सुलझाया जा सकता है