আমি গ্র্যাডলে নতুন আমি গ্রেডল 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"
}
}
বহু-স্বাদযুক্ত পরিবেশের জন্য (অ্যান্ড্রয়েডের জন্য একটি সাধারণ ব্যবহারের ক্ষেত্রে), এই উত্তরটি পরীক্ষা করুন , কারণ --tests
যুক্তিটি অসমর্থিত হবে এবং আপনি একটি ত্রুটি পাবেন।
--tests
ক্লাসের মধ্যে একটি একক পরীক্ষার পদ্ধতি কল করতে ব্যবহার করা হয়, তবে আমরা সমস্ত ক্লাসে পুনরাবৃত্তি দেখতে পাই এমনকি চালিত না হওয়া সমস্তগুলি, যা খুব ধীর। জানি না যে slিলে .ালাটি আমাদের vর্ষার কারণে হয়েছে বা এটি অন্যকে প্রভাবিত করে। আরও খুঁজে পেতে আপডেট করতে পারেন।
আপনি gradle -Dtest.single=ClassUnderTestTest test
যদি একক শ্রেণি পরীক্ষা করতে চান বা রিজ এক্সপ ব্যবহার করতে চান তবে আপনি এই লিঙ্ক বিভাগ 23.12 এর অধীনেgradle -Dtest.single=ClassName*Test test
পরীক্ষার জন্য ফিল্টারিং ক্লাসের আরও উদাহরণ পেতে পারেন do পরীক্ষা করুন।
--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
এবং আপনি যে পরীক্ষাটি (টেস্টটোরান) চালাতে চান তা পুরো পথ সহ বি-মডিউলটিতে রয়েছে: 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"
এটি দুটি এবং মডিউল উভয়ের জন্য পরীক্ষার কাজ চালাবে, যার ফলে ব্যর্থতা হতে পারে কারণ কোনও-মডিউলটিতে উপরের প্যাটার্নের সাথে মিল নেই matching
./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
আমার ক্ষেত্রে, আমার গ্রহন জাভা সংকলক সতর্কতাগুলি খুব বেশি সেট করা হয়েছিল এবং গ্রহনটি আমার শ্রেণিকে মৃত্যুদন্ড কার্যকর করার জন্য বৈধ হিসাবে স্বীকৃতি দিচ্ছিল না। আমার সংকলক সেটিংস আপডেট করা সমস্যার সমাধান করে। আপনি এটি সম্পর্কে এখানে আরও পড়তে পারেন: টিকা-নন-নন-সমাধান করা যায় না