【问题标题】:AssertionFailedError: <class> has no public constructorAssertionFailedError: <class> 没有公共构造函数
【发布时间】:2013-07-10 02:47:39
【问题描述】:


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

在标题中,这可以正常工作并且测试运行正常。
但是我需要使用 Context(作为 Activity)来运行其他代码(在 Controller 类中)。

您知道如何解决它吗?
感谢您的 cmets。

【问题讨论】:

    标签: java android unit-testing android-studio


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的评论,但这不是正确的答案。此构造函数在 ActivityInstrumentationTestCase2 中不可用。
    • 你是对的 - ActivityInstrumentationTestCase2 没有公开默认构造函数。相反,您为您的类创建一个默认构造函数,然后使用 ActivityInstrumentationTestCase2 构造函数之一的有效参数调用 super - 其中一个接受类 - 然后传入被测类。我在这里也发现了类似的东西:stackoverflow.com/questions/2346734/…
    • Android Studio 发展速度如此之快,以至于您花钱购买的已出版书籍中有一半和互联网上的许多示例根本无法运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-17
    • 2011-02-08
    • 2017-04-30
    • 1970-01-01
    • 2011-03-01
    • 1970-01-01
    • 2012-02-27
    相关资源
    最近更新 更多