我是 junit test android 的初学者。我正在跟进本教程 http://developer.android.com/training/activity-testing/activity-basic-testing.html但得到这个错误
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);
}
该构造函数没有框架所需的参数,并显示在代码清单中你的教程 http://developer.android.com/training/activity-testing/activity-basic-testing.html#fixture:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)