尝试为我的应用启动JUnit测试(robotium)。
public class MainTest extends ActivityInstrumentationTestCase2<MainActivity> {
private Solo solo;
public MainTest() {
super("nix.android.contact", MainActivity.class);// TODO Auto-generated constructor stub
}
protected void setUp() throws Exception {
super.setUp();
solo = new Solo(getInstrumentation(), getActivity());
}
public void AddContact() {
solo.assertCurrentActivity("main", MainActivity.class);
}
}
清单
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="nix.android.contact" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
When I try run test, get in console:
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="nix.android.contact" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
我尝试为其他应用程序(非常简单的应用程序)创建其他测试 - 工作。
由于
答案 0 :(得分:5)
当我没有no-args构造函数时,我遇到了这个问题。
public class MainActivityTest extends
ActivityInstrumentationTestCase2<MainActivity_> {
public MainActivityTest() {
super(MainActivity_.class);
}
...
答案 1 :(得分:1)
问题出在您的电话
super("nix.android.contact", MainActivity.class);
在我的代码中我有
super("nix.android.contact", Class.forName("nix.android.contact.MainActivity"));
我也是这样做的,无需为ActivityInstrumentationTestCase 2命名Generic
public class TestApk extends ActivityInstrumentationTestCase2 {
private static final String TARGET_PACKAGE_ID = "nix.android.contact";
private static final String LAUNCHER_ACTIVITY_FULL_CLASSNAME = "nix.android.contact.MainActivity";
private static Class<?> launcherActivityClass;
static{
try {
launcherActivityClass = Class.forName(LAUNCHER_ACTIVITY_FULL_CLASSNAME);
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
}
}
@SuppressWarnings("unchecked")
public TestApk() throws ClassNotFoundException {
super(TARGET_PACKAGE_ID, launcherActivityClass);
}
答案 2 :(得分:0)
我有同样的错误消息。问题是我的测试方法名称需要以'test'开头。
例如:testMethod1()
有效,method1Test()
给出错误。
答案 3 :(得分:0)
检查您是否没有预测出测试的构造函数所依赖的方法,但是应用程序中没有任何内容 - logcat会抱怨应用程序包中缺少类或方法。
尝试卸载目标软件包,检查它是否未从备用构建中遗留下来(例如,如果您将Eclipse与Eclipse一起使用)。
答案 4 :(得分:0)
我遇到了这个错误,我修复了它从构造函数方法中删除参数,它是由Eclipse向导创建的:
public OptionsActivityTest( String name ) {
我只需要删除“String name”以使我的测试再次起作用。
答案 5 :(得分:0)
我在测试我的应用时遇到了同样的问题 有时它可以工作,但大多数时候测试失败并引发同样的错误。
测试未能完成。
原因:&#39;测试运行未能完成。预计1次测试,收到0&#39; 检查设备logcat以获取详细信息
我在我的所有测试类中检查了测试名称,并且它在两个类中是相同的,我更改了测试名称,当我再次开始测试时它可以工作。
当我的设备与计算机断开连接时,它也可能出错。
答案 6 :(得分:0)
在Android 上运行检测测试时遇到了同样的问题(@ RunWith(AndroidJUnit4.class))。
我遇到以下错误:
Tests on Nexus_5X_API_26(AVD) - 8.0.0 failed:
Test run failed to complete. Expected 156 tests, received 152
问题是其中一个测试类在标有 @BeforeClass 的方法中失败,因此没有为该特定类执行测试。此外,在 @BeforeClass 中抛出的异常在test-output / report中没有结束。这就是为什么很难找到“预期的N次测试,收到M ”错误信息的原因。
所以,如果你遇到同样的问题 - 检查你的@Before和@BeforeClass实现 - 可能是一个例外。希望这会有所帮助。
答案 7 :(得分:-2)
所有测试名称都应以前缀“test”开头。