标签: android-testing

如何使用espresso从textview获取文本

我想在LinearLayout的textview中显示文本字符串.能浓缩咖啡吗?如果没有,还有其他方法可以做到这一点,还是我可以在espresso测试用例中使用android api?我使用的是API 17 18或更新的espresso 1.1(它应该是最新的.).我对此毫无头绪.谢谢.

automated-tests android-testing android-espresso

17
推荐指数
2
解决办法
2万
查看次数

AndroidJUnit4和参数化测试

Google为Android编写测试提供了新的类,尤其是使用jUnit 4:https://developer.android.com/tools/testing-support-library/index.html

我想知道是否可以使用来自jUnit的AndroidJUnit4运行器以及参数化运行器?

junit android parameterized android-testing

17
推荐指数
1
解决办法
5512
查看次数

如何使用Espresso测试获取Android项目的覆盖范围

我曾经使用Robotium编写Android测试并使用Emma检索覆盖率.

最近我改为使用Espresso测试,我很难找到仪器测试的覆盖范围.我只能检索使用Robolectric的单元测试的覆盖范围.我目前正在使用gradle和Jacoco来做到这一点.我找到的帮助我达到这一点的最佳教程是:https://blog.gouline.net/2015/06/23/code-coverage-on-android-with-jacoco/

是否可以检索使用Android检测的Espresso测试的覆盖范围?

android code-coverage android-testing android-espresso gradle-android-test-plugi

17
推荐指数
1
解决办法
1万
查看次数

如何在android检测测试中停止并重新启动活动?

我正在尝试编写一个Android活动检测测试,停止(onPause()然后onStop())并重新启动当前活动.我试过了

activity.finish();
activity = getActivity();
Run Code Online (Sandbox Code Playgroud)

......但这似乎不能正常工作.

测试的目标是声明表单数据在onPause()方法期间存储并在方法期间重新读取onStart().它在手动执行时有效,但测试失败,我从中得出结论activity.finish()似乎是停止和重新启动活动的错误方法.


编辑:我的主要问题似乎是同步问题.重新启动活动后,测试运行器不会等待所有事件处理程序完成.以下行将暂停测试执行,直到活动空闲为止:

getInstrumentation().waitForIdleSync()
Run Code Online (Sandbox Code Playgroud)

除此之外,请查看已接受的答案,以获取有关生命周期的更多有价值信息.

testing android android-testing

16
推荐指数
2
解决办法
1万
查看次数

如何使用Espresso空闲资源

该场景是当用户点击"下载"按钮时,开始从互联网下载数据(音乐/图像等).下载完成后,按钮会将标签文本更改为"打开".然后用户单击"打开"按钮.我所做的就是:

onView(allOf(withId(R.id.button),withText("Download"))).check(matches(isClickable())).perform(click());
try {
    Thread.sleep(delayedTime);
} catch (InterruptedException e) {
    e.printStackTrace();
}
onView(allOf(withId(R.id.button),withText("Open"))).check(matches(isClickable())).perform(click());
Run Code Online (Sandbox Code Playgroud)

有时测试通过,有时它不会.有时它失败的原因是"No views in hierarchy found matching: (with id: something:id/button and with text: is "Open"). 我知道在Espresso中使用Thread.sleep也是不好的做法.我读过Espresso的闲置资源,但它对我没有意义,我不知道如何在这个特殊情况下应用它.

android android-testing android-espresso

16
推荐指数
1
解决办法
1万
查看次数

AndroidStudio上没有显示AndroidTest文件夹

我正在为一个项目设置Gradle和Android Studio以及Espresso UI测试的Android应用程序结构.

无论我尝试什么,androidTest文件夹都不会出现在AndroidStudio的项目结构中.

项目(root)build.gradle:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.2'
    }
}

allprojects {
    repositories {
        mavenCentral()
    }
}
Run Code Online (Sandbox Code Playgroud)

App build.gradle:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.2.2'
    }
}

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.0"

    defaultConfig {
        applicationId "es.unizar.vv.mobile.catmdedit.app"
        minSdkVersion 16
        targetSdkVersion 16
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'

            java {
                srcDir 'src/main/java'
            }
            resources {
                srcDir 'src/main/resources'
            }
            res.srcDirs = …
Run Code Online (Sandbox Code Playgroud)

android android-testing android-studio android-espresso

16
推荐指数
4
解决办法
7970
查看次数

Gradle构建错误:无法访问ITest坏类文件:在版本50.0 classfile中找到ITest.class默认方法

我有奇怪的问题,不知道如何解决它.

我有一个默认方法的接口,如下所示:

public interface ITest{
    default String getText(){
       return "ITest";
    }
}
Run Code Online (Sandbox Code Playgroud)

和实现此接口的类,如下所示:

public class TestClasssss implements ITest{
    private String text;
}
Run Code Online (Sandbox Code Playgroud)

我试图在我的app单元测试项目中使用这个类.

所以,如果我在我的android的单元测试项目中复制这个类,它编译好了,并且所有工作都按预期工作,但是如果这个类和接口在app源文件夹中声明,则应用程序不会编译并崩溃

Error:(30, 10) error: cannot access ITest bad class file: ~\ITest.class
default method found in version 50.0 classfile
Please remove or make sure it appears in the correct subdirectory of the classpath.
Run Code Online (Sandbox Code Playgroud)

那么,我怎么能解决这个奇怪的行为呢?


我的graddle配置看起来像这样:

buildscript {
    repositories {
        mavenCentral()
    }

    dependencies {
        classpath 'me.tatarka:gradle-retrolambda:3.2.5'
    }
}

repositories {
    mavenCentral()
    mavenLocal()
    maven {
        url = "https://oss.sonatype.org/content/repositories/snapshots/"
    }
    jcenter() …
Run Code Online (Sandbox Code Playgroud)

java junit android android-testing android-gradle-plugin

16
推荐指数
1
解决办法
1288
查看次数

如何从测试覆盖范围中排除Dagger2类

是否有任何选项可以从Android Studio中的测试覆盖率报告中排除Dagger2类

android jacoco android-testing android-studio dagger-2

16
推荐指数
3
解决办法
4495
查看次数

升级到Android Studio 3.0后不存在支持注释

将项目升级到AndroidStudio 3.0-beta1后,androidTest文件停止编译。

找不到很多软件包,其中一些是:

错误:程序包android.support.annotation不存在
错误:找不到符号类StringRes
错误:无法访问
android.support.v7.app.AppCompatActivity的AppCompatActivity 类文件

我已经加了

androidTestCompile "com.android.support:support-annotations:25.3.1"
Run Code Online (Sandbox Code Playgroud)

进入build.gradle

但是即使这样,我仍然没有找到错误的包。我尝试从Android Studio内部和终端运行测试./gradlew connectedCheck

android android-testing android-studio gradle-android-test-plugi android-studio-3.0

15
推荐指数
2
解决办法
2万
查看次数

如何在Google Play上测试应用更新?

假设我在Google Play商店中使用的是版本1.0的应用程序.

在新版本(1.1)中,我想用新列升级数据库.

数据库升级是我的应用程序中的常见崩溃,因为先前版本(1.0)中的用户在数据库中没有新列.

我曾尝试使用Google Play商店的Beta版测试功能,但问题是没有有效的方法(或者至少我还没有找到),以便执行以下操作:

将当前稳定版本(1.0)安装到测试仪的设备,然后将应用程序更新为(1.1) - 假设我们在新的更新版本(1.1)的游戏测试期间出现错误,我修复它(1.2)我会想重复这个程序,我想将1.0稳定的应用程序安装到测试人员的设备上,然后我想再次将应用程序更新为1.2(已解决的错误)

唯一的方法(据我所知)是从beta测试列表中删除beta测试人员(可能需要数小时才能在Google Play系统中刷新),重新下载1.0应用程序,将测试人员重新添加到beta测试列表,(再次等待数小时)并下载新的1.2应用程序.

是否有更复杂的方法来测试应用版本更新?

提前致谢.

编辑:

如果我可以与其他人测试我的应用程序,这将是很好的.因此,解决方案所需的编程和命令提示符使用越少越好.

android google-play android-testing

15
推荐指数
3
解决办法
3730
查看次数