标签: android-testing

不推荐使用AndroidJUnit4.class:如何使用androidx.test.ext.junit.runners.AndroidJUnit4?

对于我正在使用的仪器测试

@RunWith(AndroidJUnit4.class)
Run Code Online (Sandbox Code Playgroud)

import androidx.test.runner.AndroidJUnit4;
Run Code Online (Sandbox Code Playgroud)

为了建立我的测试用例.现在,这条线被标记为与提示使用过时AndroidJUnit4

import androidx.test.ext.junit.runners.AndroidJUnit4
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试AndroidJUnit4从命名包导入我得到错误,ext无法解决.

您是否有任何想法,应该在gradle中包含哪些包来解决此问题?

junit android android-testing androidx

207
推荐指数
7
解决办法
4万
查看次数

Google Espresso或Robotium

我必须使用Automated UI测试工具,我对使用Robotium和Google Espresso感到困惑.

两者之间有哪些主要区别?是否存在一个但不存在的功能?

testing android robotium android-testing android-espresso

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

src/androidtest和src/test文件夹之间有什么区别?

在项目中,在Android Studio中,默认情况下,有两个测试文件夹.

首先是src/androidTest.此文件夹已存在于以前版本的Android Studio中.不过,现在有一个新的测试文件夹,默认情况下src/test,新的依赖,testCompile 'junit: junit: 4.12'build.gradle.

我用哪个文件夹进行测试?两者有什么不同?

testing junit android android-testing android-studio

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

使用Robolectric测试ViewPager(和CursorLoader)

有谁知道如何使用Robolectric测试以下设置?

包含ViewPager的片段,使用CursorLoader加载的数据.

使用下面的代码,CursorLoader永远不会被推入视图寻呼机的适配器中.我被await()电话困住了.

EventsFragmentTest.java:

@RunWith(CustomRobolectricTestRunner.class)
public class EventsFragmentTest extends AbstractDbAndUiDriver
{
    // which element in the view pager we are testing
    private static final int           TEST_INDEX = 0;

    protected SherlockFragmentActivity mActivity;
    protected EventsFragment_          mFragment;

    @Override
    @Before
    public void setUp() throws Exception
    {
        // create activity to hold the fragment
        this.mActivity = CustomRobolectricTestRunner.getActivity();

        // create and start the fragment
        this.mFragment = new EventsFragment_();
    }

    @Test
    public void sanityTest()
    {
        // create an event
        final Event event = this.createEvent();

        // …
Run Code Online (Sandbox Code Playgroud)

android robolectric android-testing android-cursorloader

91
推荐指数
1
解决办法
3583
查看次数

对Android Gradle中的testCompile和androidTestCompile感到困惑

我是测试世界的新手,更是Android测试世界的新手.在对Robolectric进行研究时,有助于对android进行测试的一件事让我感到困惑.有时在网络上我看到人们testCompile在引用Robolectric而其他人使用时在gradle构建脚本的依赖关系中使用关键字androidTestCompile.当然两者都无效?

有人可以解释两者之间的区别,以及使用Robolectric时应该使用哪一个?

android gradle robolectric android-testing android-gradle-plugin

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

如何在多个活动中测试Android应用程序?

我们正在构建一个复杂的Android应用程序,其中包含许多活动中的许多屏幕和工作流程.我们的工作流程类似于您在银行的ATM机上看到的工作流程,例如,有一个Activity登录过渡到主菜单Activity,可以根据用户的选择转换到其他活动.

由于我们有如此多的工作流程,因此我们需要创建跨多个活动的自动化测试,以便我们可以从头到尾测试工作流程.例如,使用ATM示例,我们希望输入有效的PIN码,验证是否将我们发送到主菜单,选择提取现金,验证我们是否在提取现金屏幕等等,并最终找到自己回到主菜单或"登出".

我们玩过Android(例如ActivityInstrumentationTestCase2)和Positron附带的测试API ,但似乎都没有超出单一范围的测试能力Activity,虽然我们可以在这些工具中找到一些用于某些单元测试的实用工具,但他们赢了不能满足我们测试多个活动的测试场景的需求.

我们对xUnit框架,脚本,GUI记录器/回放等持开放态度,并对任何建议表示感谢.

android integration-testing automated-tests android-testing

79
推荐指数
3
解决办法
5万
查看次数

测试运行失败:无法找到以下内容的检测信息:ComponentInfo {} - 尝试使用Gradle在IntelliJ中测试时出错

每当我尝试运行测试时,控制台都说:

Running tests
Test running startedTest running failed: Unable to find instrumentation info for:
ComponentInfo{com.employeeappv2.employeeappv2.test/android.test.InstrumentationTestRunner}
Empty test suite.
Run Code Online (Sandbox Code Playgroud)

我已经坚持了一段时间,到目前为止我在网上看到的解决方案没有帮助.我的项目结构设置如下:

*主模块-src*instrumentTest -java*main -java -manifest*build.gradle

我的build.gradle文件如下所示:

buildscript {
repositories {
    mavenCentral()
}
dependencies {
    classpath 'com.android.tools.build:gradle:0.9.+'
}
}
apply plugin: 'android'

repositories {
    mavenCentral()
}

android {
compileSdkVersion 19
buildToolsVersion "19.1.0"

defaultConfig {
    minSdkVersion 16
    targetSdkVersion 19
    versionCode 1
    versionName "2.1.0"
    testPackageName "login.test"
    testInstrumentationRunner "android.test.InstrumentationTestRunner"
}
buildTypes {
    release {
        runProguard false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-   rules.txt'
    }
}

packagingOptions {
    exclude 'META-INF/LICENSE' …
Run Code Online (Sandbox Code Playgroud)

android gradle android-testing

52
推荐指数
6
解决办法
4万
查看次数

Espresso - 如何检查是否显示其中一个视图

在我的测试中,在一次操作之后,有两种可能的视图可以出现并且它们都是正确的.如何检查是否显示其中一个视图.对于我可以检查的单个视图是Displayed().但如果其他视图可见则会失败.如果显示这两个视图中的任何一个,我想通过测试.

onMyButton.perform(click());

onMyPageOne.check(matches(isDisplayed())); //view 1
or
onMyPageTwo.check(matches(isDisplayed())); //view 2
Run Code Online (Sandbox Code Playgroud)

之后,执行单击MyButton,预计会出现任何一个视图(1或2),但不会同时出现.不确定哪一个会被显示.如何检查是否显示其中任何一个?

java listview android-testing android-espresso

50
推荐指数
7
解决办法
5万
查看次数

为Robolectric提供SharedPreferences的测试数据

刚刚开始使用Robolectric,它似乎是我所需要的.但是,我在使用SharedPreferences方面遇到了一些障碍.

我有两个测试用例

  1. Activity需要一个新的/空的sharedPreferences

  2. Activity期望sharedPreferences中包含一些数据

对于测试用例1,测试按预期传递,所以很好:)

但是,对于测试案例2,我似乎无法找到一个很好的方法来为Robolectric提供一些虚假数据,因此Activity能够访问这些假数据.

感觉就像一个非常常见的用例,但我似乎无法弄清楚如何做到这一点!

java android robolectric android-testing

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

Robolectric:Resources $ NotFoundException:使用Android Gradle Plugin 3的字符串资源ID

Android Studio 3.0 Beta2
classpath 'com.android.tools.build:gradle:3.0.0-beta3'
testCompile 'org.robolectric:robolectric:3.4.2'
Run Code Online (Sandbox Code Playgroud)

我正在使用的测试类无法运行:

@Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.LOLLIPOP)
@RunWith(RobolectricTestRunner.class)
public class RecipeAdapterTest {
    private MainActivity activity;

    @Before
    public void setup() {

    activity = Robolectric.setupActivity(MainActivity.class);

    /* Also tried this same Error
     activity = Robolectric.buildActivity(MainActivity)
                .create()
                .resume()
                .get();
    */
    }

    @Test
    public void testActivityShouldNotBeNull() {
        assertThat(activity, is(notNullValue()));
    }
}
Run Code Online (Sandbox Code Playgroud)

这是错误的堆栈跟踪:

android.content.res.Resources$NotFoundException: String resource ID #0x7f0c0020

    at android.content.res.Resources.getText(Resources.java:274)
    at android.content.res.Resources.getString(Resources.java:360)
    at android.content.Context.getString(Context.java:376)
    at org.robolectric.shadows.ShadowActivity.getActivityTitle(ShadowActivity.java:100)
    at org.robolectric.shadows.ShadowActivity.callAttach(ShadowActivity.java:110)
    at org.robolectric.android.controller.ActivityController.attach(ActivityController.java:56)
    at org.robolectric.android.controller.ActivityController.of(ActivityController.java:25)
    at org.robolectric.Robolectric.buildActivity(Robolectric.java:98)
    at org.robolectric.Robolectric.buildActivity(Robolectric.java:94)
    at org.robolectric.Robolectric.setupActivity(Robolectric.java:102) …
Run Code Online (Sandbox Code Playgroud)

testing android unit-testing robolectric android-testing

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