断言失败错误:<类>没有公共构造函数

2022-09-01 18:43:31


我正在使用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 { ...

在 header 中,这可以正常工作,并且测试正在正常运行。
但我需要使用上下文(作为活动)来运行其他代码(在 Controller 类中)。

你知道如何解决它吗?
感谢您的评论。


答案 1

您需要添加默认构造函数或将 a 作为参数的构造函数。添加以下默认构造函数并调用基类构造函数应该可以正常工作:String

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

答案 2

推荐