Robotium_constructor устарел сообщение в методе NotepadTest для супер - PullRequest
3 голосов
/ 30 марта 2012

Я пытаюсь написать пример теста для приложения «Блокнот».В следующем коде я получаю предупреждение и не могу запустить тест.Пожалуйста, помогите мне решить это.В предупреждении говорится «Конструктор ActivityInstrumentationTestCase2<NotesList>(String, Class<NotesList>) is deprecated», и выполнение в Eclipse останавливается на testAddNote();.Пожалуйста, вернитесь обратно, если вам нужны какие-либо журналы logcat.

package com.example.android.notepad.test;
import com.example.android.notepad.*;
import com.jayway.android.robotium.solo.Solo;
import android.test.ActivityInstrumentationTestCase2;
import android.test.suitebuilder.annotation.*;

public class NotePadTest extends ActivityInstrumentationTestCase2<NotesList> {
    private Solo solo;
    public NotePadTest() {
        super("com.example.android.notepad", NotesList.class);
    }   
    @Override
    public void setUp() throws Exception {
        solo = new Solo(getInstrumentation(), getActivity());
    }
    @Smoke
    public void testAddNote() throws Exception {
        solo.clickOnButton(0);
        //Assert that NoteEditor activity is opened
        solo.assertCurrentActivity("Expected NoteEditor activity", "NoteEditor"); 
        //In text field 0, add Note 1
        solo.enterText(0, "Note 1");
        solo.goBack(); 
        //Clicks on menu item
        solo.clickOnMenuItem("Add note");
        //In text field 0, add Note 2
        solo.enterText(0, "Note 2");
        //Go back to first activity named "NotesList"
        solo.goBackToActivity("NotesList"); 
        boolean expected = true;
        boolean actual = solo.searchText("Note 1") && solo.searchText("Note 2");
        //Assert that Note 1 & Note 2 are found
        assertEquals("Note 1 and/or Note 2 are not found", expected, actual); 
    }

    @Override
    public void tearDown() throws Exception {
        //Robotium will finish all the activities that have been opened
        solo.finishOpenedActivities();
    }
}

Это StackTrace

java.lang.NoClassDefFoundError: com.jayway.android.robotium.solo.Solo
at com.example.android.notepad.test.NotePadTest.setUp(NotePadTest.java:37)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:537)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1551)

Ответы [ 3 ]

4 голосов
/ 02 апреля 2012

«NoClassDefFoundError» связано с обновлением Android SDK до версии 17. нам нужно проверить robotium на вкладке «заказ и экспорт» в пути сборки Java. Но я все еще не могу найти решение для устаревшего конструктора.

2 голосов
/ 12 июня 2014

Я знаю, что слишком поздно. Но это может помочь другим. У меня тоже была такая же проблема. Я решил это, написав только имя класса в супер.

Вместо

super("com.example.android.notepad", NotesList.class);

только для записи

super(NotesList.class);
0 голосов
/ 19 ноября 2012

Может быть, вы используете библиотеку robotium с более низкой версией, пожалуйста, обновите ее до 3,5 на

http://code.google.com/p/robotium/downloads/detail?name=robotium-solo-3.5.1.jar

Примечание: Ваш проект -> щелкните правой кнопкой мыши -> Свойства -> Путь сборки Java -> выберите вкладку Библиотеки -> нажмите кнопку Добавить JAR-файлы ... -> перейдите к robotium-solo-3.5.1.jar -> нажмите кнопку OK во всплывающем окне

Перейдите на вкладку Заказ и экспорт -> выберите вариант robotium-solo-3.5.1.jar -> ОК

...