android - मैं एंड्रॉइड स्टूडियो में परीक्षण कैसे बना सकता हूं?




unit-testing intellij-idea (8)

बस एंड्रॉइड स्टूडियो डाउनलोड किया गया जो इंटेलिज आइडिया से आधारित है।

कोई परीक्षण कैसे करेगा?

मुझे लगता है कि टेस्ट मॉड्यूल बनाने का विकल्प है लेकिन ऐसा कुछ नहीं लगता है, केवल src के साथ एक नई परियोजना बनाएं

मैंने हॉट कुंजी CTRL + AlT + T दबाकर भी कोशिश की जो मौजूदा वर्ग पर यूनिट परीक्षण बनाने की अनुमति देता है लेकिन ऐसा लगता है कि यह वर्तमान प्रोजेक्ट में रखना चाहता है। बेशक यह टीडीडी के साथ मदद नहीं करता है

क्या किसी के पास कोई अनुभव है?


अभी तक (स्टूडियो 0.61) उचित परियोजना संरचना को बनाए रखना पर्याप्त है। ग्रहण के रूप में अलग परीक्षण परियोजना बनाने की आवश्यकता नहीं है (नीचे देखें)।


एंड्रॉइड स्टूडियो 1.1 के रूप में, हमें यूनिट टेस्ट (Roboelectric काम भी) लिखने के लिए आधिकारिक (प्रयोगात्मक) समर्थन मिला है।

स्रोत: https://sites.google.com/a/android.com/tools/tech-docs/unit-testing-support


एंड्रॉइड स्टूडियो विकसित रहता है इसलिए ऊपर दिए गए जवाब अंततः लागू नहीं होंगे। एंड्रॉइड स्टूडियो 1.2.1.1 के वर्तमान संस्करण के लिए, यहां परीक्षण पर एक अच्छा ट्यूटोरियल है:

http://evgenii.com/blog/testing-activity-in-android-studio-tutorial-part-1/


ऐसा लगता है कि बड़े बदलावों में से एक यह है कि एंड्रॉइड स्टूडियो के साथ परीक्षण अनुप्रयोग को एप्लिकेशन प्रोजेक्ट में एकीकृत किया गया है।

मुझे यकीन नहीं है कि यह आपकी विशिष्ट समस्या में मदद करता है, लेकिन मुझे ग्रैडल प्रोजेक्ट के साथ परीक्षण करने पर एक गाइड मिला। एंड्रॉइड ग्रैडल उपयोगकर्ता गाइड



मेरे द्वारा प्राप्त सबसे आसान तरीका मेरे निम्नलिखित ब्लॉग पोस्ट में सुव्यवस्थित है:

  1. एक फ़ोल्डर बनाएं जिसमें आप अपने सभी यूनिट परीक्षण लिखेंगे (अधिमानतः com.example.app.tests)
  2. एक नया टेस्ट क्लास बनाएं (अधिमानतः NameOfClassTestedTests, यानी BankAccountLoginActivityTests)
  3. इंस्ट्रुमेंटेशनटेस्टकेस बढ़ाएं
  4. यह सुनिश्चित करने के लिए कि हम इकाई परीक्षणों को कॉन्फ़िगर करने में सफल हुए, एक असफल इकाई परीक्षण लिखें
  5. ध्यान दें कि एक यूनिट टेस्ट विधि नाम "test" शब्द से शुरू होना चाहिए (अधिमानतः testTestedMethodNameExpectedResult () यानी testBankAccountValidationFailedShouldLogout ())
  6. यूनिट परीक्षणों के लिए अपनी परियोजना को कॉन्फ़िगर करें:
  7. 'रन ...' मेनू खोलें और 'कॉन्फ़िगरेशन संपादित करें' पर क्लिक करें
  8. + बटन पर क्लिक करें
  9. एंड्रॉइड टेस्ट टेम्पलेट का चयन करें
  10. अपने रन कॉन्फ़िगरेशन के लिए एक नाम इनपुट करें (अधिमानतः 'ऐपनाम टेस्ट')
  11. मॉड्यूल combobox में अपने ऐप का चयन करें
  12. "ऑल इन पैकेज" रेडियो बटन का चयन करें (आमतौर पर आप इस विकल्प का चयन करना चाहते हैं क्योंकि यह आपके सभी परीक्षण वर्गों में सभी यूनिट परीक्षण चलाता है)
  13. चरण 1 (यानी com.example.app.tests) से परीक्षण पैकेज नाम भरें
  14. उस डिवाइस का चयन करें जिसे आप अपने परीक्षणों को चलाने के लिए चाहते हैं
  15. कॉन्फ़िगरेशन को लागू करें और सहेजें
  16. यूनिट परीक्षण चलाएं (और विफलता की उम्मीद करें):
  17. रन मेनू से अपने नव निर्मित टेस्ट कॉन्फ़िगरेशन का चयन करें
  18. रन पर क्लिक करें और आउटपुट कंसोल में परिणाम पढ़ें

शुभकामनाएं आपके कोड को अधिक पठनीय, रखरखाव और अच्छी तरह से परीक्षण करने के लिए!


यह उत्तर उन लोगों के लिए है जो एंड्रॉइड परीक्षण के साथ शुरू कर रहे हैं। परीक्षण करने के तरीके को देखने में आपकी सहायता के लिए मैं दो सरल उदाहरण प्रदान करूंगा। यदि आप अगले 10 मिनट के लिए अनुसरण करते हैं, तो आप अपने परीक्षणों को अपने ऐप में जोड़ने शुरू करने के लिए तैयार हो जाएंगे। मुझे लगता है कि आप आश्चर्यचकित होंगे कि यह कितना आसान है। मैं निश्चित रूप से था।

एंड्रॉइड परीक्षण के लिए परिचय

दो अलग-अलग प्रकार के परीक्षण हैं जो आप करेंगे।

  • स्थानीय इकाई परीक्षण। ये स्थानीय रूप से JVM (जावा वर्चुअल मशीन) पर चलाए जाते हैं। चूंकि वे स्थानीय हैं, वे तेज़ हैं। आप उन्हें अपने कोड के उन हिस्सों का परीक्षण करने के लिए उपयोग कर सकते हैं जिन्हें केवल जावा की आवश्यकता है, न कि एंड्रॉइड एपीआई। (कभी-कभी आप स्थानीय रूप से अधिक चीजों का परीक्षण करने के लिए नकली एपीआई ऑब्जेक्ट बना सकते हैं। इसे mocking कहा जाता है। एक नकली Context एक उदाहरण है।)
  • इंस्ट्रूमेंटेड टेस्ट। ये परीक्षण वास्तविक डिवाइस या एमुलेटर में चलाए जाते हैं। इससे उन्हें स्थानीय परीक्षणों की तुलना में धीमा कर दिया जाता है। हालांकि, वे अधिक लचीला हैं क्योंकि आपके पास पूर्ण एंड्रॉइड एपीआई उपलब्ध है।

एक नई परियोजना बनाएं और आप निम्नलिखित डिफ़ॉल्ट फ़ोल्डर देखेंगे।

सब कुछ पहले से ही है और आप अपने परीक्षण बनाने के लिए इंतज़ार कर रहे हैं। यह सब पहले से ही स्थापित है!

स्थानीय इकाई परीक्षण कैसे बनाएं

उपरोक्त छवि में दिखाए गए ExampleUnitTest फ़ाइल को खोलें। यह कुछ इस तरह दिखना चाहिए:

public class ExampleUnitTest {
    @Test
    public void addition_isCorrect() throws Exception {
        assertEquals(4, 2 + 2);
    }
}

केवल एक चलाने के लिए सभी परीक्षणों या एकल हरे तीर को चलाने के लिए डबल हरा तीर दबाएं। (इस मामले में केवल एक परीक्षण है ताकि वे दोनों एक ही काम कर सकें।)

इसे पास करना चाहिए (जब तक आप इस जवाब को पढ़ रहे हों तब तक 2 + 2 अभी भी 4 )। बधाई हो, आपने बस अपना पहला टेस्ट चलाया!

अपना खुद का परीक्षण करना

आइए अपना खुद का परीक्षण लिखें। सबसे पहले इस वर्ग को अपने मुख्य ऐप प्रोजेक्ट में जोड़ें ताकि हमारे पास परीक्षण करने के लिए कुछ हो:

public class MyClass {
    public int add(int a, int b) {
        return a + b;
    }
}

अब निम्न वर्ग की तरह होने के लिए test class में addition_isCorrect() विधि बदलें (या बस एक अलग नाम के साथ एक और विधि जोड़ें):

public class ExampleUnitTest {
    @Test
    public void addition_isCorrect() throws Exception {
        MyClass myClass = new MyClass();
        int result = myClass.add(2, 2);
        int expected = 4;
        assertEquals(expected, result);
    }
}

इसे फिर से चलाएं और आपको इसे पास करना चाहिए। बधाई हो, आपने अभी अपना पहला टेस्ट बनाया है! (ठीक है, मुझे लगता है कि तकनीकी रूप से यह मेरा था, लेकिन, हे, काफी करीब है। मेरा क्या है तुम्हारा है।)

उपकरण परीक्षण कैसे बनाएं

ExampleInstrumentedTest फ़ाइल खोलें। यह कुछ इस तरह दिखना चाहिए:

@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
    @Test
    public void useAppContext() throws Exception {
        // Context of the app under test.
        Context appContext = InstrumentationRegistry.getTargetContext();

        assertEquals("com.example.myapp", appContext.getPackageName());
    }
}

उन हरे रंग के बटनों में से एक को दोबारा दबाएं।

जब तक आपके पास वास्तविक डिवाइस कनेक्ट हो या एमुलेटर सेट हो, तब तक इसे शुरू करना चाहिए और अपना ऐप चलाएं। बधाई हो, आप बस अपना पहला वाद्य परीक्षण चलाया!

अपना खुद का परीक्षण करना

परीक्षण परीक्षण परीक्षण चलाने के लिए Espresso का उपयोग करते हैं। यह आपके अपने छोटे रोबोट उपयोगकर्ता की तरह है कि आप अपने ऐप का परीक्षण कर सकते हैं। आप इसे बटन दबाकर या टेक्स्ट व्यू के गुणों को पढ़ने जैसे कुछ करने के लिए कह सकते हैं।

आप हाथ से परीक्षण कैसे करें, इसके निर्देशों को लिख सकते हैं, लेकिन चूंकि हम अभी शुरू कर रहे हैं, चलो ऑटो-रिकॉर्ड फ़ंक्शन का उपयोग करें। यह बहुत आसान है।

सबसे पहले अपने यूआई में एक बटन जोड़ें ताकि हमारे पास काम करने के लिए कुछ हो। इसे मैने किया है:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.myapp.MainActivity">

    <Button
        android:id="@+id/myButton"
        android:text="Click me"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</android.support.constraint.ConstraintLayout> 

फिर मेनू में रन> रिकॉर्ड एस्प्रेसो टेस्ट दबाएं।

प्रारंभ होने के बाद, एमुलेटर में बटन क्लिक करें और फिर रिकॉर्ड संवाद पर ठीक चुनें। इसे स्वचालित परीक्षण कोड उत्पन्न करना चाहिए।

@LargeTest
@RunWith(AndroidJUnit4.class)
public class MainActivityTest {

    @Rule
    public ActivityTestRule<MainActivity> mActivityTestRule = new ActivityTestRule<>(MainActivity.class);

    @Test
    public void mainActivityTest() {
        ViewInteraction appCompatButton = onView(
                allOf(withId(R.id.myButton), withText("Click me"), isDisplayed()));
        appCompatButton.perform(click());
    }
}

महान! आपने अभी आपको पहला उपकरण परीक्षण बनाया है! वह बहुत आसान था। आपको इसे वास्तविक परीक्षण करने के लिए शायद एक दावा जोड़ना चाहिए, लेकिन यह भी रिकॉर्डर के साथ करना बहुत आसान है। थोड़ा गहरा जाने के लिए इस वीडियो को देखें।

आगे के अध्ययन

मैं पहले वीडियो देखता हूं और फिर दस्तावेज़ीकरण के माध्यम से पढ़ता हूं। यह सब बहुत उपयोगी है। आखिरी लिंक उन लेखों की एक श्रृंखला है जो परीक्षण करने के लिए चुनते समय कुछ महत्वपूर्ण चीजों को कवर करते हैं।


संपादित करें: 0.1.8 के रूप में यह अब आईडीई में समर्थित है । नीचे दिए गए निर्देशों का उपयोग करने के बजाय, वहां दिए गए निर्देशों का पालन करें।

एंड्रॉइड ग्रैडल प्लगइन उपयोगकर्ता मार्गदर्शिका के बाद मैं एक नव निर्मित प्रोजेक्ट पर निम्नलिखित चरणों का पालन करके कमांड लाइन पर काम करने वाले परीक्षण प्राप्त करने में सक्षम था (मैंने डिफ़ॉल्ट 'com.example.myapplication' पैकेज का उपयोग किया था):

  1. परीक्षण के लिए एक src / instrumentTest / java निर्देशिका जोड़ें
  2. पैकेज com.example.myapplication.test पैकेज में एक टेस्ट क्लास (गतिविधिTestCase का विस्तार) जोड़ें
  3. वर्चुअल डिवाइस प्रारंभ करें
  4. कमांड लाइन पर (MyApplicationProject / MyAplication निर्देशिका में) '../gradlew linkedInstrumentTest' कमांड का उपयोग करें

यह मेरे परीक्षण चला गया और परीक्षण परिणामों को MyAplicationProject / MyApplication / build / reports / instrumentTests / connected में रखा। मैं एंड्रॉइड ऐप का परीक्षण करने के लिए नया हूं, लेकिन ऐसा लगता है कि यह ठीक काम करता है।

आईडीई के भीतर से, एक ही टेस्ट क्लास को आजमाकर चलाने के लिए संभव है। आपको इसकी आवश्यकता होगी

  1. एक रेपो के रूप में मेवेन सेंट्रल को सूचीबद्ध करने के लिए build.gradle अपडेट करें
  2. अद्यतन build.gradle JUnit 3.8 को एक उपकरण के रूप में जोड़ेंस्ट कॉम्पिल निर्भरता जैसे उपकरणटेस्ट कॉम्पाइल 'जूनिट: जूनिट: 3.8'
  3. 'परियोजना संरचना' में मैन्युअल रूप से निर्भरता क्रम में जुनीट को पहले स्थानांतरित करने के लिए स्थानांतरित करें

हालांकि यह विफल रहता है (परीक्षण चलाने पर उपयोग किए जाने वाले क्लासपाथ में परीक्षण आउटपुट निर्देशिका गुम होती है)। हालांकि, मुझे यकीन नहीं है कि यह इस पर ध्यान दिए बिना काम करेगा क्योंकि यह मेरी समझ है कि एंड्रॉइड विशिष्ट परीक्षण धावक की आवश्यकता है।





android-studio