2013-08-14 5 views
5

मेरे पास मेरे प्रोजेक्ट के लिए यूनिट परीक्षण हैं। वे ग्रहण में ठीक से चलाने लेकिन त्रुटियों के साथ चींटी में असफल:junit परीक्षण ग्रहण में काम करते हैं, लेकिन चींटी में विफल - java.lang.RuntimeException: Stub

java.lang.RuntimeException: Stub! 

मैं automaticaly EclipseIDE से मेरी चींटी build.xml this लेख के अनुसार तैयार किया है।

मेरे build.xml फ़ाइल:

<?xml version="1.0" encoding="UTF-8" standalone="no"?> 
<project basedir="." default="main" name="MyProjectJavaTest"> 
    <property environment="env"/> 
    <property name="junit.output.dir" value="junit"/> 
    <property name="MyProject.location" value="../MyProject"/> 
    <property name="debuglevel" value="source,lines,vars"/> 
    <property name="target" value="1.6"/> 
    <property name="source" value="1.6"/> 

    <path id="JUnit 4.libraryclasspath"> 
     <pathelement location="../../../../../winapl/adt-bundle-windows-x86/eclipse/plugins/org.junit_4.8.2.v4_8_2_v20110321-1705/junit.jar"/> 
     <pathelement location="../../../../../winapl/adt-bundle-windows-x86/eclipse/plugins/org.hamcrest.core_1.1.0.v20090501071000.jar"/> 
    </path> 

    <path id="Android 4.2.libraryclasspath"> 
     <pathelement location="../../../../../winapl/adt-bundle-windows-x86/sdk/platforms/android-4.2/android.jar"/> 
    </path> 

    <path id="Android Dependencies.libraryclasspath"/> 
    <path id="Persisted container [com.android.ide.eclipse.adt.DEPENDENCIES for project [MyProject]].libraryclasspath"/> 
    <path id="MyProject.classpath"> 
     <pathelement location="${MyProject.location}/bin/classes"/> 
     <path refid="Android 4.2.libraryclasspath"/> 
     <path refid="Android Dependencies.libraryclasspath"/> 
     <path refid="Persisted container [com.android.ide.eclipse.adt.DEPENDENCIES for project [MyProject]].libraryclasspath"/> 
    </path> 

    <path id="MyProjectJavaTest.classpath"> 
     <pathelement location="bin"/> 
     <path refid="JUnit 4.libraryclasspath"/> 
     <path refid="MyProject.classpath"/> 
     <pathelement location="lib/java-json.jar"/> 
     <pathelement location="lib/httpcomponents/commons-codec-1.6.jar"/> 
     <pathelement location="lib/httpcomponents/commons-logging-1.1.1.jar"/> 
     <pathelement location="lib/httpcomponents/fluent-hc-4.2.5.jar"/> 
     <pathelement location="lib/httpcomponents/httpclient-4.2.5.jar"/> 
     <pathelement location="lib/httpcomponents/httpclient-cache-4.2.5.jar"/> 
     <pathelement location="lib/httpcomponents/httpcore-4.2.4.jar"/> 
     <pathelement location="lib/httpcomponents/httpmime-4.2.5.jar"/> 
    </path> 

      <target name="main" depends="MyProjectJavaTest,junitreport"/> 

    <target name="MyProjectJavaTest"> 
     <mkdir dir="${junit.output.dir}"/> 
     <junit fork="yes" printsummary="withOutAndErr"> 
      <formatter type="xml"/> 
      <test name="my.android.MyProject.api.F1U8GetTermsAndConditions" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.JsonMarshallerTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.ParamsTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.TP1GetServiceDescriptionTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.TP2GetServiceDescriptionLogoTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.TP3GetServiceListTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.TP4GetServiceLogoTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.TP5GetSubscribedServiceInformationTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.TP6GetSubscribedServiceListTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.TP7SendServiceNotificationTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.TP8SubscribeToServiceTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.WMClientImplAndHMEIntegrationTest" todir="${junit.output.dir}"/> 
      <test name="my.android.MyProject.api.WMClientImplTest" todir="${junit.output.dir}"/> 
      <classpath refid="MyProjectJavaTest.classpath"/> 
     </junit> 
    </target> 

    <target name="junitreport"> 
     <junitreport todir="${junit.output.dir}"> 
      <fileset dir="${junit.output.dir}"> 
       <include name="TEST-*.xml"/> 
      </fileset> 
      <report format="frames" todir="${junit.output.dir}"/> 
     </junitreport> 
    </target> 
</project> 

चींटी संस्करण: 1.9.2

JUnit संस्करण: 4.8.2

एंड्रॉयड डेवलपर टूल बिल्ड: v21.0.0-531062

यूपीडी: मुझे निम्नलिखित त्रुटि मिली है:

java.lang.RuntimeException: Stub! 
at org.apache.http.params.AbstractHttpParams.<init>(AbstractHttpParams.java:5) 
at org.apache.http.params.BasicHttpParams.<init>(BasicHttpParams.java:6) 
at my.android.myprojectlib.api.HttpClientProxyImpl.<init>(HttpClientProxyImpl.java:27) 
at my.android.myprojectlib.api.HttpMethodExecutorImpl.<init>(HttpMethodExecutorImpl.java:28) 
at my.android.myprojectlib.api.HttpMethodExecutorFactory.getHttpMethodExecutor(HttpMethodExecutorFactory.java:21) 
at my.android.myprojectlib.api.WMClientImpl.<init>(WMClientImpl.java:66) 
at my.android.myprojectlib.api.AbstractWMLibTest.setUp(AbstractWMLibTest.java:31) 

UPD2: रनटाइम क्लासपाथ और क्लासपाथ का निर्माण समान है।

<?xml version="1.0" encoding="UTF-8"?> 
<classpath> 
    <classpathentry kind="src" path="src"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.junit.JUNIT_CONTAINER/4"/> 
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> 
    <classpathentry kind="lib" path="lib/java-json.jar"/> 
    <classpathentry kind="lib" path="lib/httpcomponents/commons-codec-1.6.jar"> 
     <attributes> 
      <attribute name="javadoc_location" value="jar:platform:/resource/MyProjectLibJavaTest/lib/httpcomponents/javadoc.zip!/javadoc"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="lib" path="lib/httpcomponents/commons-logging-1.1.1.jar"> 
     <attributes> 
      <attribute name="javadoc_location" value="jar:platform:/resource/MyProjectLibJavaTest/lib/httpcomponents/javadoc.zip!/javadoc"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="lib" path="lib/httpcomponents/fluent-hc-4.2.5.jar"> 
     <attributes> 
      <attribute name="javadoc_location" value="jar:platform:/resource/MyProjectLibJavaTest/lib/httpcomponents/javadoc.zip!/javadoc"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="lib" path="lib/httpcomponents/httpclient-4.2.5.jar"> 
     <attributes> 
      <attribute name="javadoc_location" value="jar:platform:/resource/MyProjectLibJavaTest/lib/httpcomponents/javadoc.zip!/javadoc"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="lib" path="lib/httpcomponents/httpclient-cache-4.2.5.jar"> 
     <attributes> 
      <attribute name="javadoc_location" value="jar:platform:/resource/MyProjectLibJavaTest/lib/httpcomponents/javadoc.zip!/javadoc"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="lib" path="lib/httpcomponents/httpcore-4.2.4.jar"> 
     <attributes> 
      <attribute name="javadoc_location" value="jar:platform:/resource/MyProjectLibJavaTest/lib/httpcomponents/javadoc.zip!/javadoc"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry kind="lib" path="lib/httpcomponents/httpmime-4.2.5.jar"> 
     <attributes> 
      <attribute name="javadoc_location" value="jar:platform:/resource/MyProjectLibJavaTest/lib/httpcomponents/javadoc.zip!/javadoc"/> 
     </attributes> 
    </classpathentry> 
    <classpathentry combineaccessrules="false" kind="src" path="/MyProjectLib"/> 
    <classpathentry kind="output" path="bin"/> 
</classpath> 
+1

शायद एक क्लासपाथ त्रुटि, कुछ स्टब कार्यान्वयन रनटाइम द्वारा नहीं पाया जा सकता है। कृपया पूर्ण stacktrace शामिल करें। –

+0

@owlstead प्रश्न में जोड़ा गया –

+0

यह एंड्रॉइड और अपाचे पुस्तकालयों के बीच कुछ असंगतता हो सकती है। 4.3 के बाद से 'सारपेटपाराम्स' और 'बेसिकहटपाराम्स' को हटा दिया गया है। इसलिए यह वर्ग पथ में पुस्तकालयों के आदेश पर निर्भर भी हो सकता है। एंड्रॉइड में छीनने वाली पुस्तकालयों की शिपिंग की गंदी आदत है ... –

उत्तर

2

समस्या तब होती है जब android.jar classpath में junit.jar से पहले संदर्भित है।

अपने build.xml में, आदेश सही लगता है, लेकिन आप इसे में एक स्थान के साथ आईडी निर्दिष्ट:

<path id="JUnit 4.libraryclasspath"> 

आप रिक्त स्थान या अन्य विशेष वर्ण के बिना आईडी का उपयोग करना चाहिए (।-_ ठीक है, हालांकि) ।

आपके यूपीडी 1 में स्टैकट्रैक कोई जूनिट नहीं दिखाता है, जो एक लापता lib के लिए एक और संकेत है।

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