我想在LinearLayout的textview中显示文本字符串.能浓缩咖啡吗?如果没有,还有其他方法可以做到这一点,还是我可以在espresso测试用例中使用android api?我使用的是API 17 18或更新的espresso 1.1(它应该是最新的.).我对此毫无头绪.谢谢.
Google为Android编写测试提供了新的类,尤其是使用jUnit 4:https://developer.android.com/tools/testing-support-library/index.html
我想知道是否可以使用来自jUnit的AndroidJUnit4运行器以及参数化运行器?
我曾经使用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
我正在尝试编写一个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)
除此之外,请查看已接受的答案,以获取有关生命周期的更多有价值信息.
该场景是当用户点击"下载"按钮时,开始从互联网下载数据(音乐/图像等).下载完成后,按钮会将标签文本更改为"打开".然后用户单击"打开"按钮.我所做的就是:
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的闲置资源,但它对我没有意义,我不知道如何在这个特殊情况下应用它.
我正在为一个项目设置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) 我有奇怪的问题,不知道如何解决它.
我有一个默认方法的接口,如下所示:
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) 是否有任何选项可以从Android Studio中的测试覆盖率报告中排除Dagger2类
将项目升级到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
假设我在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-testing ×10
android ×9
junit ×2
dagger-2 ×1
google-play ×1
jacoco ×1
java ×1
testing ×1