У меня есть проект Android Maven, и я хочу реализовать приборный тест, который должен управляться maven, конечно.NoSuchFieldError в Android Integration test с maven
Однако я получаю NoSuchMethodError и NoSuchFieldError.
У меня есть три модуля в моем проекте maven.
- Ядро библиотеки, в которой я определил класс DBHelper
- андроид приложения проекта.
- Антенный контрольно-измерительный прибор.
Когда я выполняю mvn clean install
, maven успешно выполняет все, пока андроид-контрольно-измерительный прибор не будет выполнен на реальном устройстве Android.
Когда я сам запускаю приложение и нажимаю кнопки, на которых не выполняется тестирование инструментария, я не получаю никаких ошибок. Поэтому я думаю, что должно быть что-то не так с pom.xml моего теста на андроид.
Так вот, как я определил зависимости:
<dependency>
<groupId>de.dornathal</groupId>
<artifactId>core</artifactId>
<version>0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>de.dornathal</groupId>
<artifactId>android</artifactId>
<type>apk</type>
<version>0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>de.dornathal</groupId>
<artifactId>android</artifactId>
<type>jar</type>
<version>0.1-SNAPSHOT</version>
</dependency>
Я не определяет никаких областей, так что все классы должны быть доступны во время выполнения и испытательного объема, я думаю.
Класс DBHelper содержит public static final String[]
«S как
public static final String[] SET_ACTION_LIST = {KEY_ID, KEY_PARENT_ID, KEY_ACTION_ID, KEY_SORT_ORDER, KEY_TYPE_ENUM};
Это поле называется классом проекта приложения (в onCreateMethod):
result += printDatabase(db, DBHelper.TABLE_ACTION_LIST, DBHelper.SET_ACTION_LIST);
Странная вещь, чтобы заметить это, что эта строка не является первой, которая обращается к полю DBHelper. Есть дюжина аналогичных строк, обращающихся к полю DBHelper (но, конечно, с разными именами полей).
Поскольку приложение работает нормально, все вышеперечисленное не может быть неправильным.
И, наконец, у меня есть контрольные приборы с Robotium:
@Override
public void setUp() throws Exception {
this.setActivityInitialTouchMode(false);
solo = new Solo(getInstrumentation(), getActivity());
}
@Override
public void tearDown() throws Exception {
solo.finishOpenedActivities();
}
public void testOpenActivitiesOfMain(){
solo.clickOnView(solo.getView(R.id.ShowDatabase));
solo.assertCurrentActivity("Does not start the Database",Database.class);
solo.goBack();
solo.assertCurrentActivity("Does not return from Database", MainPage.class);}
Теперь существуют следующие выходы ошибок: Maven:
[INFO] 01498A031900801A_samsung_GalaxyNexus : Running instrumentation tests in de.dornathal.planyourmeals.android.test
[INFO] 01498A031900801A_samsung_GalaxyNexus : Run started: de.dornathal.planyourmeals.android.test, 4 tests:
[INFO] 01498A031900801A_samsung_GalaxyNexus : Start [1/4]: de.dornathal.planyourmeals.android.test.MainPageTest#testOpenActivitiesOfMain
[INFO] 01498A031900801A_samsung_GalaxyNexus : ERROR:de.dornathal.planyourmeals.android.test.MainPageTest#testOpenActivitiesOfMain
[INFO] 01498A031900801A_samsung_GalaxyNexus : Test failed to run to completion. Reason: 'Instrumentation run failed due to 'java.lang.NoSuchFieldError''. Check device logcat for details
[INFO] 01498A031900801A_samsung_GalaxyNexus : End [1/4]: de.dornathal.planyourmeals.android.test.MainPageTest#testOpenActivitiesOfMain
[INFO] 01498A031900801A_samsung_GalaxyNexus : Run failed: Instrumentation run failed due to 'java.lang.NoSuchFieldError'
[INFO] 01498A031900801A_samsung_GalaxyNexus : Run ended: 0 ms
[ERROR] 01498A031900801A_samsung_GalaxyNexus : FAILURES!!!
и LogCat говорит
11-16 12:07:36.529: ERROR/AndroidRuntime(4581): FATAL EXCEPTION: main
java.lang.NoSuchFieldError: de.dornathal.planyourmeals.core.database.DBHelper.SET_ACTION_LIST
at de.dornathal.planyourmeals.android.view.DatabasePager$DatabaseFragment.onCreateView(DatabasePager.java:42)
Если у кого-то есть предложение о том, как это может работать или где фактическая ошибка c ould. Я очень благодарен вам за любые советы.
MFG Dornathal