2

私はAndroid上のJUnitとFESTの両方に不慣れです。クラスでFEST-Androidを使用しようとしていますが、コンパイル時にエラーが発生し続けます。

Android Dex: [ZHoltoTest] trouble processing "javax/xml/parsers/DocumentBuilder.class":
Android Dex: [ZHoltoTest] Ill-advised or mistaken usage of a core class (java.* or javax.*)
Android Dex: [ZHoltoTest] when not building a core library.
Android Dex: [ZHoltoTest] This is often due to inadvertently including a core library file

これまでのところ、FESTライブラリがなければ、次のような単純なクラスを作成することにある程度成功しています。

package com.monster.beta.tests;

import android.graphics.Rect;
import android.test.ActivityInstrumentationTestCase2;
import android.widget.Button;
import com.monster.beta.R;
import com.monster.beta.activity.WelcomeActivity;

public class WelcomeActivityTest extends ActivityInstrumentationTestCase2<WelcomeActivity> {
    WelcomeActivity activity;
    public WelcomeActivityTest() {
        super("com.monster.beta", WelcomeActivity.class);

    }
    protected void setUp() throws Exception {
        super.setUp();
        activity = getActivity();
    }

    public void testCloseWording(){
        Button btnSync = (Button) activity.findViewById(R.id.btnClose);

        assertTrue("Text is<" + btnSync.getText().toString() + "> expect<close me>", "close me".equalsIgnoreCase(btnSync.getText().toString()));
    }

    public void testCloseBtn(){
        Button btnSync = (Button) activity.findViewById(R.id.btnClose);
        btnSync.callOnClick();

        int btnSyncLoc[] = new int[2];
        btnSync.getLocationOnScreen(btnSyncLoc);

        Rect btnRect = new Rect();
        btnSync.getDrawingRect(btnRect);

        assertTrue("btnSyncLoc is<" + btnSyncLoc[0] + "> not less than hundred", (btnSyncLoc[0] < 100));
    }

    public void testCloseBtn2(){
        Button btnSync = (Button) activity.findViewById(R.id.btnClose);

        int btnSyncLoc[] = new int[2];
        btnSync.getLocationOnScreen(btnSyncLoc);

        Rect btnRect = new Rect();
        btnSync.getDrawingRect(btnRect);

        assertTrue("btnSyncLoc is<" + btnSyncLoc[1] + "> not less than hundred", (btnSyncLoc[1] < 100));
    }

}

FEST-AndroidライブラリをMavenを使用してテストプロジェクトに含めるとすぐにエラーが表示されます(Mavenに精通していませんが、直接ダウンロードjarがダウンしていました)。

FEST-Android1.0.1パッケージ内のコンテンツは次のとおりです

C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\android-4.1.1.4.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\commons-codec-1.3.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\commons-logging-1.1.1.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\fest-android-1.0.1.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\fest-assert-core-2.0M8.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\fest-util-1.2.3.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\httpclient-4.0.1.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\httpcore-4.0.1.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\json-20080701.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\opengl-api-gl1.1-android-2.1_r1.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\support-v4-r7.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\xmlParserAPIs-2.6.2.jar
C:\Users\poohdish.SPHINXPARTNERS\git\FEST-Android\xpp3-1.1.4c.jar

何かを削除する必要がありますか?私のプロジェクトはActionBarSherlockを使用しており、JUnitを機能させるには、プロジェクトで使用されるすべてのライブラリもエクスポートする必要があります。

4

2 に答える 2

1

コアJavaクラスをAndroidアプリケーションに追加しようとしています。こんなことしないで。クラスパスにXMLAPIは必要ありません。Android jarには、そこで必要になるすべてのXMLAPIが含まれています。

パッケージ化する必要があるリストからの唯一のライブラリはandroid-support-v4

また、Eclipseを使用している場合は、クラスパススコープが1つしかないことに注意してください。テスト用の個別のスコープはありません。

于 2013-02-06T09:57:00.840 に答える
0

https://github.com/square/fest-androidから

Maven経由で取得:

<dependency>
  <groupId>com.squareup</groupId>
  <artifactId>fest-android</artifactId>
  <version>1.0.1</version>
</dependency>

これをテストプロジェクトのpom.xmlに追加します。

必要なものを定義するときに、 mavenとm2eが自動的に行うため、Eclipseを使用してライブラリをエクスポートまたはインポートする必要はありません。Maven(m2e)は、必要なすべてのjarをダウンロードします。

于 2013-02-06T09:38:17.997 に答える