java - 错误“在 Junit 测试中没有公共(public) TestCase(字符串名称)或 TestCase()

标签 java android junit

我是 junit test android 的初学者。我正在关注 this tutorial但是得到这个错误

junit.framework.AssertionFailedError: Class com.example.projectfortest.test.MainActivityTest has no public constructor TestCase(String name) or TestCase()
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)

这是我的代码:

public class MainActivityTest extends
        ActivityInstrumentationTestCase2<MainActivity> {

    private MainActivity mMainActivity;
    private TextView mFirstTestText;
    private String expected, actual;

    public MainActivityTest(Class<MainActivity> activityClass) {
        super(activityClass);
    }

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

        mMainActivity = getActivity();
        mFirstTestText = (TextView) mMainActivity.findViewById(R.id.txt1);

        expected = mMainActivity.getString(R.string.txt1_test);
        actual = mFirstTestText.getText().toString();
    }

    public void testPreconditions() {
        assertNotNull("mMainActivity is null", mMainActivity);
        assertNotNull("mFirstTestText is null", mFirstTestText);
    }

    public void testMyFirstTestTextView_labelText() {
        assertEquals(expected, actual);
    }
}

我没有发现我的代码有任何问题。请帮忙

最佳答案

正如异常所说,将默认构造函数添加到您的类中。这是测试框架初始化所必需的。替换您的构造函数:

public MainActivityTest(Class<MainActivity> activityClass) {
    super(activityClass);
}

通过以下方式:

public MainActivityTest() {
    super(MainActivity.class);
}

此构造函数没有框架所需的参数,并显示在 your tutorial 的代码 list 中:

关于java - 错误“在 Junit 测试中没有公共(public) TestCase(字符串名称)或 TestCase(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23881206/

相关文章:

Android ImageView -相机

java - IntelliJ - 如何从 "Run" View 中的失败单元测试跳转到源代码而不是编译类

java - 如何检查带有类名的第二个元素并单击它(如果它存在于 Selenium Java 中)

spring - 为什么mockMVC和mockito不能一起工作?

android - 在自定义 ListView 上调用 notifyDatasetChanged() 后继续关注 TextView?

Java:使用MouseListener更改相邻JButton的颜色

java - 更新 Android Studio 后构建项目的 classes.jar 中的重复类

java - JPA 多对多关系 "JoinColumn cannot be resolved to a type"错误

java - Criteria Query Mockito 单元测试 - NullPointerException

android - 使用 appcache 在服务器上重新部署后,Meteor 会无休止地重新加载