Правильный способ использования FEST-assert в Junit для Android?
Я новичок в JUnit и FEST на Android. Я пытаюсь использовать 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, но у меня не работает файл прямой загрузки).
Вот содержимое внутри пакета FEST-Android 1.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 работать, мне нужно также экспортировать всю библиотеку, используемую проектом.
2 ответа
Вы пытаетесь добавить базовый класс Java в приложение для Android. Не делайте этого. Вам не нужны XML API на вашем пути к классам. В банке Android содержатся все API-интерфейсы XML, которые вам там понадобятся.
Смею сказать, что единственная библиотека из списка, которая должна быть упакована, android-support-v4
Также, если вы работаете с Eclipse, имейте в виду, что у него только одна область пути к классам. Нет отдельной области для тестирования.
С https://github.com/square/fest-android
захватить через Maven:
<dependency>
<groupId>com.squareup</groupId>
<artifactId>fest-android</artifactId>
<version>1.0.1</version>
</dependency>
добавьте это в pom.xml вашего тестового проекта.
Вам не нужно экспортировать или импортировать библиотеки с использованием Eclipse, поскольку maven и m2e сделают это за вас, когда вы определите, что вам нужно. Maven (m2e) загрузит все необходимые банки.