13

我尝试为我的应用程序启动 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-librar

y android:name="android.test.runner" />
    </application>

当我尝试运行测试时,这是我在控制台中遇到的错误:

Test run failed: Test run failed to complete. Expected 1 tests, received 0

我尝试创建另一个测试一个不同的应用程序(非常简单的应用程序)并且它有效。

4

8 回答 8

5

当我没有无参数构造函数时,我遇到了这个问题。

public class MainActivityTest extends
    ActivityInstrumentationTestCase2<MainActivity_> {

public MainActivityTest() {
    super(MainActivity_.class);
}
...
于 2012-10-10T20:00:43.153 回答
2

在 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中引发的异常并没有出现在测试输出/报告中。这就是为什么很难找到“预期 N 次测试,收到 M ”错误消息的原因。

因此,如果您遇到同样的问题 - 检查您的 @Before 和 @BeforeClass 实现 - 可能是异常原因。希望这可以帮助。

于 2018-06-19T10:29:05.500 回答
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);
    }
于 2012-07-24T22:14:12.993 回答
0

我有这个错误,我修复了它从构造方法中删除了参数,它是由 Eclipse 向导创建的:

public OptionsActivityTest( String name ) {

我只需要删除“字符串名称”以使我的测试再次工作。

于 2015-01-25T17:49:16.160 回答
0

检查您是否没有保护您的测试构造器所依赖的方法,但应用程序中没有使用任何东西 - logcat 会抱怨您的应用程序包中缺少类或方法。

尝试卸载目标包,以检查它不是从备用构建中遗留下来的(例如,如果您使用 Maven 和 Eclipse)。

于 2013-09-26T12:19:54.183 回答
0

我在测试我的应用程序时遇到了同样的问题。
有时它可以工作,但大多数时候测试失败并引发相同的错误。

测试未能完成。
原因:'测试运行未能完成。预期 1 个测试,收到 0'。
检查设备 logcat 以获取详细信息

我检查了所有测试类中的测试名称,两个类中的测试名称相同,我更改了测试名称,当我再次开始测试时它可以工作。

当我的设备与计算机断开连接时,它也可能会出错。

于 2018-04-19T05:49:36.537 回答
-1

我有同样的错误信息。问题是我的测试方法名称需要以“test”开头。

例如: testMethod1()工作同时method1Test()给出错误。

于 2012-10-07T11:15:07.203 回答
-3

所有测试名称都应以前缀“test”开头。

于 2013-04-25T06:58:32.833 回答