2013-08-14 39 views
5

Tôi có các bài kiểm tra đơn vị cho dự án của mình. Họ chạy tốt trong Eclipse nhưng thất bại trong kiến ​​với các lỗi:Các thử nghiệm jUnit hoạt động trong Eclipse, nhưng thất bại trong kiến ​​thức - java.lang.RuntimeException: Stub

java.lang.RuntimeException: Stub! 

Tôi đã automaticaly tạo build.xml kiến ​​của tôi từ EclipseIDE theo công this bài viết.

file build.xml của tôi:

<?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> 

kiến ​​phiên bản: 1.9.2

junit phiên bản: 4.8.2 Công cụ nhà phát triển

Android Xây dựng: v21.0.0-531062

UPD: Tôi gặp lỗi sau:

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: Đường dẫn lớp học thời gian chạy và xây dựng đường dẫn lớp giống nhau.

<?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

Có thể là lỗi classpath, không thể tìm thấy một số triển khai sơ khai theo thời gian chạy. Bao gồm cả stacktrace đầy đủ xin vui lòng. –

+0

@owlstead được thêm vào câu hỏi –

+0

Có thể có một số sự không tương thích giữa thư viện Android và Apache. 'AbstractHttpParams' và' BasicHttpParams' đã không còn được dùng kể từ 4.3. Do đó, nó có thể phụ thuộc vào thứ tự của các thư viện trong đường dẫn lớp. Android có thói quen khó chịu khi vận chuyển các thư viện bị tước đi ... –

Trả lời

2

Sự cố xảy ra khi android.jar được tham chiếu trước junit.jar trong đường dẫn lớp.

Trong build.xml của bạn, thứ tự dường như chính xác, nhưng bạn chỉ định id với một không gian trong đó:

<path id="JUnit 4.libraryclasspath"> 

Bạn nên sử dụng id mà không có dấu hoặc ký tự đặc biệt khác (.-_ Là ok, mặc dù) .

Stacktrace trong UPD1 của bạn không hiển thị junit, đó là một dấu hiệu khác cho một thiếu lib.