java - 无法为 Android 运行 Espresso 测试

标签 java android junit junit3 android-espresso

我在为 android 设置/运行 espresso 测试时遇到了一些问题。 我的 TestClass 如下所示:-

import static com.google.android.apps.common.testing.ui.espresso.Espresso.onView;
import static com.google.android.apps.common.testing.ui.espresso.action.ViewActions.click;
import static com.google.android.apps.common.testing.ui.espresso.assertion.ViewAssertions.matches;
import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.withId;
import static com.google.android.apps.common.testing.ui.espresso.matcher.ViewMatchers.withText;
import android.test.ActivityInstrumentationTestCase2;
import android.util.Log;

import com.sample.rasmus.MainActivity;

public class BasicTest extends ActivityInstrumentationTestCase2<MainActivity> {

public BasicTest(String name) {
    super(MainActivity.class);
    Log.v("amtesting","2");
}
 @Override
  public void setUp() throws Exception {
      Log.v("amtesting","5");
    super.setUp();
    Log.v("amtesting","4");
    // Espresso will not launch our activity for us, we must launch it via getActivity().
    getActivity();
  }

public void testSimpleClickAndCheckText(){
    Log.v("amtesting","1");
    onView(withId(com.sample.rasmus.R.id.thebutton)).perform(click());
    onView(withId(com.sample.rasmus.R.id.helloworld)).check(matches(withText("awesome")));
}

protected void tearDown() throws Exception {
    Log.v("amtesting","3");
    super.tearDown();

}

  }

AndroidManifest.xml 看起来像这样:-

<?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sample.rasmus.test"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="14" />

<instrumentation
    android:name="com.google.android.apps.common.testing.testrunner.GoogleInstrumentationTestRunner"
    android:targetPackage="com.sample.rasmus" />

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
    <uses-library android:name="android.test.runner" />
</application>

 </manifest>

并且运行配置已更新为使用 Google InGoogleInstrumentationTestRunner 作为 InstrumentationRunner。

但是,当我运行测试时,它会在控制台上显示以下内容:-

  • 在设备 emulator-5554 上启动检测 android.test.InstrumentationTestRunner
  • 向Eclipse发送测试信息
  • 测试完成

没有提到运行测试,测试也没有运行。我在这里可能会遗漏什么?

最佳答案

好的,这就是我最终解决的方法。我将测试类的构造函数更改为以下:-

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

它开始工作了。这就是让我忙了一整天的原因,这有点奇怪。

关于java - 无法为 Android 运行 Espresso 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22974985/

相关文章:

java - 有没有办法跟踪 JUnit 中多个断言测试用例的每个断言?

java - 数组赋值 vs. for 循环赋值

java - 如何使用 Session.get() 使用 Hibernate 查询电子邮件 ID?

android - 打开失败: EACCES (Permission denied) in ionic -2

java - 在 Android 上使用 SQLite 触发器返回错误

java - Mockito:一个类的所有实例的模拟实例方法

java - ant junit 任务——在哪里下载 ant-junit.jar 并将它放在哪里?

java - 启动时的if语句

java - 如何平均分割一个JSplitPane?

android - 在 Google Paging Library 3 中没有任何滚动的情况下,Api 调用不会一次又一次地停止调用