Подтвердить что ты не робот

AssertionFailedError: <класs> не имеет общего конструктора


Я работаю с Android Studio, и мне нужно добавить модульные тесты в свой проект.
Я читал разные уроки, но ничего не меня выбрал. Моя проблема:
TestXMLParser.java:

public class TestXMLParser extends ActivityInstrumentationTestCase2<HomePageActivity> {

public TestXMLParser(Class<HomePageActivity> activityClass) {
    super(activityClass);
}

@Override
public void setUp() throws Exception {
    super.setUp();

    //Controller.init((Activity)getContext());
}

@Override
public void tearDown() throws Exception {
    super.tearDown();
}

public void testTrue() throws Exception {
    assertTrue(true);
}
...
}

Когда я запустил его, я вижу это сообщение:

junit.framework.AssertionFailedError: Class cz.cvut.kosapp.jUnitTests.TestXMLParser has no public constructor TestCase(String name) or TestCase()
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661)

Я действительно не знаю, почему. Другие тесты jUnit хорошо работают, например, когда я использую:

public class TestXMLParser extends AndroidTestCase { ...

в заголовке, это работает, и тесты выполняются правильно.
Но Мне нужно использовать Контекст (как действие) для запуска другого кода (в классе Controller).

У вас есть идея, как это исправить?
Благодарим за ваши комментарии.

4b9b3361

Ответ 1

Вам нужно добавить конструктор по умолчанию или конструктор, который принимает параметр String в качестве параметра. Добавление следующего конструктора по умолчанию с вызовом конструктора базового класса должно работать:

public TestXMLParser() {
    super(HomePageActivity.class);
}