2009-01-22 12 views
9

वर्तमान में मैं चल रहा हूँ इंस्ट्रुमेन्टेशन्स परीक्षण इस तरह से:आप एक्लिप्स से एंड्रॉइड इंस्ट्रूमेंटेशन टेस्ट कैसे चलाते हैं? कमांड लाइन से

adb shell am instrument -w com.blah.blah/android.test.InstrumentationTestRunner 

वहाँ उन्हें ग्रहण से (आवेदन के स्वत: स्थापना के साथ) को चलाने के लिए कोई तरीका है?

उत्तर

6

मैं एमुलेटर को स्वचालित तैनाती निर्धारित करने में सक्षम नहीं था। हालांकि, आप वही "adb shell" कमांड ले सकते हैं और बाहरी लॉन्च कॉन्फ़िगरेशन बना सकते हैं। मैंने इस विषय पर here पर ब्लॉग किया। जब आप "-e डीबग सत्य" तर्क का उपयोग कर रहे हों तो इस तरह से लॉन्च करना थोड़ा अधिक सहज है।

हालांकि, मुझे लगता है कि मैं bash खोल स्क्रिप्ट से बाहर अधिक लाभ मिल गया है (यदि आप एक अच्छा विकास मंच का उपयोग कर रहे हैं):

function adbtest() { 
    adb shell am instrument -w -e class blah.package.$1 blah.package.test/android.test.InstrumentationTestRunner; 
} 

इस तरह जब मैं blah परीक्षण करना चाहते हैं। package.FooTest मैं केवल टाइप करने के लिए याद करने की आवश्यकता:

[email protected]:~$ adbtest FooTest 
4

मैं एक शानदार तरीका ग्रहण से स्वचालित रूप से परीक्षण चलाने के लिए के बारे में पता नहीं है, लेकिन मैं एक साथ स्वचालित रूप से निर्माण और परीक्षण को विस्तृत करने के सीधे आगे विधि डाल दिया है चींटी का उपयोग करना इस प्रकार

मेरे परियोजना आयोजित किया जाता है:

  1. की परियोजना रूट निर्देशिका जड़
  2. अंदर कहते हैं, मैं SDK में activityCreator स्क्रिप्ट द्वारा उत्पन्न build.xml है।
  3. मैं अपने परीक्षण युक्त एक दूसरी परियोजना जड़ में स्थित है/
    • इस परियोजना यह खुद को AndroidManifest.xml (एक उदाहरण के रूप Android API Demos की संरचना देखें)
    • इस परियोजना भी यह खुद का निर्माण है गया है है परीक्षण .xml

आदेश जड़/परीक्षण/build.xml में JUnit का समर्थन करने के अलावा, आप JUnit के लिए पथ जोड़ने की जरूरत है। ऐसा करने का एक तरीका संकलन, डीईएक्स, डीबग, और रिलीज लक्ष्यों के लिए पथ जोड़ना है (रिलीज छोड़ दिया गया है, लेकिन इसे उसी परिवर्तन की आवश्यकता है जो डीबग करता है)। संकलन लक्ष्य में भी हम शामिल हैं ../src पथ:

<!-- Compile this project's .java files into .class files. --> 
<target name="compile" depends="dirs, resource-src, aidl"> 
    <javac encoding="ascii" target="1.5" debug="true" extdirs="" 
      srcdir="src/:../src" 
      destdir="${outdir-classes}" 
      bootclasspath="${android-jar}"> 
     <classpath> 
      <fileset dir="${external-libs}" includes="*.jar"/> 
      <fileset file="${junit-path}"/> 
     </classpath> 
    </javac> 
</target> 

<!-- Convert this project's .class files into .dex files. --> 
<target name="dex" depends="compile"> 
    <echo>Converting compiled files and external libraries into ${outdir}/${dex-file}...</echo> 
    <apply executable="${dx}" failonerror="true" parallel="true"> 
     <arg value="--dex" /> 
     <arg value="--output=${intermediate-dex-ospath}" /> 
     <arg path="${outdir-classes-ospath}" /> 
     <fileset dir="${external-libs}" includes="*.jar"/> 
     <fileset file="${junit-path}"/> 
    </apply> 
</target> 

<!-- Package the application and sign it with a debug key. 
    This is the default target when building. It is used for debug. --> 
<target name="debug" depends="dex, package-res"> 
    <echo>Packaging ${out-debug-package}, and signing it with a debug key...</echo> 
    <exec executable="${apk-builder}" failonerror="true"> 
     <arg value="${out-debug-package-ospath}" /> 
     <arg value="-z" /> 
     <arg value="${resources-package-ospath}" /> 
     <arg value="-f" /> 
     <arg value="${intermediate-dex-ospath}" /> 
     <arg value="-rf" /> 
     <arg value="${srcdir-ospath}" /> 
     <arg value="-rj" /> 
     <arg value="${external-libs-ospath}" /> 
     <arg value="-rj" /> 
     <arg value="${junit-path}" /> 
     <arg value="-nf" /> 
     <arg value="${native-libs-ospath}" /> 
    </exec> 
</target> 

अब, हम दोनों परियोजनाओं को अलग से बना सकते हैं। अंतिम स्पर्श रूट/build.xml पर एक नया लक्ष्य जोड़ना है जो परियोजना का निर्माण और तैनाती करेगा और परीक्षण करेगा और परीक्षण निष्पादित करेगा। इस रूट/build.xml के लिए निम्न लक्ष्य जोड़ने करने के लिए:

<target name="tests" depends="reinstall"> 
    <echo>Building and installing tests..</echo> 
    <exec executable="ant" failonerror="true"> 
     <arg value="-f" /> 
     <arg value="tests/build.xml" /> 
     <arg value="reinstall"/> 
    </exec> 
    <mkdir dir="${log-dir}" /> 
    <exec executable="${adb}"> 
    <arg value="shell" /> 
    <arg value="am" /> 
    <arg value="instrument" /> 
    <arg value="-w" /> 
    <arg value="-e" /> 
    <arg value="class" /> 
    <arg value="org.yourproject.AllTests" /> 
    <arg value="org.yourproject.tests/android.test.InstrumentationTestRunner" /> 
    </exec> 
</target> 

इस बार सभी जगह में है, एमुलेटर प्रारंभ करें, और "चींटी परीक्षण" चलाते हैं। यह एक कमांड में आपके परीक्षणों का निर्माण, तैनाती और निष्पादन करेगा।

+0

यह वही है जो मुझे चाहिए लेकिन मैं यह जानने की कोशिश कर रहा हूं कि रोबोटियम के साथ इसे कैसे एकीकृत किया जाए .... क्या आपके पास इसका उदाहरण है? मैं चींटी पर नौसिखिया हूं लेकिन मुझे ऐसा करने की ज़रूरत है ताकि मैं हडसन के साथ एकीकृत हो सकूं और पूरे स्वचालित परीक्षण लूप को पूरा कर सकूं। –

संबंधित मुद्दे