在Junit for Android中使用FEST断言的正确方法?

在Junit for Android中使用FEST断言的正确方法?,android,maven,junit,fest,Android,Maven,Junit,Fest,我对Android上的JUnit和FEST都是新手。我试图在我的类中使用,但编译时不断出现错误: 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: [ZHoltoT

我对Android上的JUnit和FEST都是新手。我试图在我的类中使用,但编译时不断出现错误:

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));
    }

}
我需要移除一些东西吗?我的项目使用ActionBarSherlock,为了使JUnit工作,我还需要导出项目使用的所有库。

From

通过Maven抓取:

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

com.squareup

当你确定你需要什么时,我会为你做的。Maven(m2e)将下载所有必需的JAR。

您正在尝试向android应用程序添加核心java类。不要这样做。类路径上不需要XML API。Android jar包含您在那里需要的所有XML api

我敢说列表中唯一需要打包的库是
android-support-v4


此外,如果您正在使用eclipse,请记住它只有一个类路径范围。没有单独的测试范围。

我使用IntelliJ12,我的项目不使用Maven。因此,我将FEST导入全局库并将其导入到我的项目中。谢谢其他所有东西都已经在android中了,并且在定义android方面时提供。但maven build即使使用idea也不会有什么坏处——idea将其作为项目在本地打开
<dependency>
  <groupId>com.squareup</groupId>
  <artifactId>fest-android</artifactId>
  <version>1.0.1</version>
</dependency>