Robotium_constructor deprecated post in NotepadTest method for super

I am trying to write a sample test for a notepad app. In the following code, I am getting a warning and I am unable to run the test. Please help me to solve this. The warning says "Constructor ActivityInstrumentationTestCase2<NotesList>(String, Class<NotesList>) is deprecated

" and execution in Eclipse stops at testAddNote();

. Please go back if you need log logs.

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

      

This is 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


source to share


3 answers


The "NoClassDefFoundError" is due to the android sdk update to version 17. we need to check the robotium in the "order and export" tab in the java build path. But I am still finding a solution for the legacy constructor warrior.



+4


source


I know him too late. But it might help others. I also had the same problem. I only allowed it by writing the class name under super.

Instead

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

      



write only

super(NotesList.class);

      

+2


source


Maybe you are using low version robotium library, please update to 3.5 on

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

Note: Your project → right-click → Propertiesthe Java Build Path → Libraries → select tab, click Add JARs ... → go to robotium-solo-3.5.1.jar → Click OK in the popup window

Change to Order and Export tab - > select robotium-solo-3.5.1.jar -> OK

0


source







All Articles