小编pio*_*543的帖子

为androidTest定义buildConfigField

我定义特定字段中BuildConfig用于获取URL运行时.因此,对于每种构建类型,我使用不同的字符串:

    prod {
        buildConfigField "String", "BASE_URL", "\"abc.com\""
    }

    debug {
        buildConfigField "String", "BASE_URL", "\"efg.com\""
    }
Run Code Online (Sandbox Code Playgroud)

在运行android测试时是否可以定义不同的URL?我试过把这个设置放在下面sourceSets->androidTest,但它不被接受.

android gradle android-testing android-gradle-plugin gradle-plugin

9
推荐指数
1
解决办法
659
查看次数

使用测试支持库销毁并重新启动活动

使用Android中的旧JUnit3样式测试,我可以执行以下操作来破坏并重新启动活动:

Instrumentation inst = getInstrumentation();
Activity activity = inst.getActivity();
// do something
activity.finish();
Assert.assertTrue(this.activity.isFinishing());
activity = inst.getActivity();
// assert that activity's state is restored
Run Code Online (Sandbox Code Playgroud)

如何使用新的测试支持库完成同样的事情?我可以使用Espresso和/或UI Automator或新库提供的任何其他机制.

更新:

我尝试了以下方法:

Activity activity = activityTestRule.getActivity();
// do something
activity.finish();
Assert.assertTrue(this.activity.isFinishing());
activity = activityTestRule.getActivity();
// assert that activity's state is restored
Run Code Online (Sandbox Code Playgroud)

但是,似乎ActivityTestRule.getActivity()不会重新启动活动.

testing android android-testing testing-support-library

9
推荐指数
1
解决办法
6228
查看次数

Espresso - 如何获得当前活动来测试碎片?

我已经玩Espresso了几周的测试,最后我决定开始测试碎片.

我立即遇到了问题,如何获得当前的活动?

我的应用程序使用登录数据,因此我无法使用测试规则启动活动.简而言之,是否有类似于getActivity()做浓缩咖啡测试的东西?

android ui-testing android-testing android-espresso

9
推荐指数
2
解决办法
7131
查看次数

Espresso:Recyclerview滚动到结束

有没有办法使用Espresso滚动到recyclerview的末尾?

有一个带文字的项目,我们说'Text XYZ',而recyclerview有一个id recycleler_view.此项恰好是回收站视图的最后一项.

我试过了

onView(withId(R.id.recycler_view)).check(matches(isDisplayed())).perform(RecyclerViewActions.scrollTo(withText("Text XYZ")),click());
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.有任何想法吗?

android android-espresso android-recyclerview

9
推荐指数
1
解决办法
5492
查看次数

ViewPager2 崩溃

我正在使用带有 BottomNavigationView 的高级导航组件。

在一个选项卡中,我有 ViewPager2。当我第一次点击 Tab 时工作正常。

尽管第二次出现该选项卡应用程序不断崩溃。如果有人可以帮助,下面是崩溃日志,谢谢。

java.lang.IllegalArgumentException at androidx.core.util.Preconditions.checkArgument(Preconditions.java:36) at androidx.viewpager2.adapter.FragmentStateAdapter.onAttachedToRecyclerView(FragmentStateAdapter.java:140) at androidx.recyclerview.widget.set.RecyclerView() RecyclerView.java:1206) at androidx.recyclerview.widget.RecyclerView.setAdapter(RecyclerView.java:1158) at androidx.viewpager2.widget.ViewPager2.setAdapter(ViewPager2.java:460) at com。.ui.home.history.HistoryFragment.setupAdapter(HistoryFragment.kt:25) 在 com。.ui.home.history.HistoryFragment.viewSetup(HistoryFragment.kt:21) at com.****.base.BaseFragment.onViewCreated(BaseFragment.kt:37) at androidx.fragment.app.FragmentStateManager.createView(FragmentStateManager. java:332) 在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1187) 在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356) 在 androidx.fragment.app.FragmentManager.moveFragmentToFragmentManager.moveFragment(FragmentManager.java:1187) .java:1434) 在 androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497) 在 androidx.fragment.app.FragmentManager.dispatchStateChange(FragmentManager.java:2625) 在 androidx.fragment.app.FragmentManager.dispatchCreatedActivity FragmentManager.java:2577) 在 androidx.fragment.app.Fragment.performActivityCreated(Fragment.java:2722) 在 androidx.fragment.app.FragmentStateManager。activityCreated(FragmentStateManager.java:346) at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1188) at androidx.fragment.app.FragmentManager.addAddedFragments(FragmentManager.java:2224) at androidx.fragment.app.Fragment .executeOpsTogether(FragmentManager.java:1997) 在 androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1953) 在 androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849) FragmentManager$4.run(FragmentManager.java:413) at android.os.Handler.handleCallback(Handler.java:873) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop( Looper.java:193) at android.app.ActivityThread.main(ActivityThread.java:6940) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os。RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:537) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

这是我的片段代码:

private val …
Run Code Online (Sandbox Code Playgroud)

android android-recyclerview android-jetpack android-viewpager2 android-jetpack-navigation

9
推荐指数
3
解决办法
3142
查看次数

使用Mockito和Retrofit 2.0

我正在尝试使用我的api调用(通过Retrofit2.0制作)创建单元测试Mockito.

这似乎是在使用最流行的博客MockitoRetrofit.

http://mdswanson.com/blog/2013/12/16/reliable-android-http-testing-with-retrofit-and-mockito.html

不幸的是,它使用的是早期版本Retrofit,并且取决于CallbacksRetrofitError,它们从2.0中断.

你是怎么做到的Retrofit 2.0

PS:我使用的是RxJava一起retrofit,让一些有工作RxJava将是巨大的.谢谢!

android mockito android-testing rx-java retrofit

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

如何直接从Finder运行Android Studio项目?

如何从Finder打开Android Studio项目?我看到下面的文件列表.是否可以双击其中一个以便Android Studio打开它?

在此输入图像描述

android android-studio

8
推荐指数
2
解决办法
819
查看次数

Butter Knife - 在Android lib上注入

我使用Gradle在Android Studio上工作.

我的问题是案例标签中的非常量字段.

当我在Android lib中使用Butter Knife时,我收到以下错误:

tutuFragment.java:31: error: attribute value must be constant
    @InjectView(R.id.noContactTV)
Run Code Online (Sandbox Code Playgroud)

有没有人遇到过同样的问题,如果有的话,有解决方案吗?

android gradle android-studio android-gradle-plugin butterknife

7
推荐指数
2
解决办法
6118
查看次数

将Libgdx项目从Eclipse迁移到Android Studio时出错

我正在尝试将我现有的游戏(用libgdx编写)从Eclipse迁移到Android Studio.迁移我的桌面项目后正常工作,但我的Android项目有问题.在android我正在使用Admob广告.

我收到以下错误消息:

在此输入图像描述

如您所见,Android Support Repository已安装 SDK Manager

我的项目结构:

在此输入图像描述

在Project Gradle文件中,我有这个:

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'de.richsource.gradle.plugins:gwt-gradle-plugin:0.6'
        classpath 'com.android.tools.build:gradle:1.5.0'
        classpath 'org.robovm:robovm-gradle-plugin:1.9.0'
    }
}

allprojects {
    apply plugin: "eclipse"
    apply plugin: "idea"

    version = '1.0'
    ext {
        appName = 'My Game'
        gdxVersion = '1.7.1'
        roboVMVersion = '1.9.0'
        box2DLightsVersion = '1.4'
        ashleyVersion = '1.7.0'
        aiVersion = '1.6.0'
    }

    repositories {
        jcenter()
        mavenCentral()
        maven { url 'https://oss.sonatype.org/content/repositories/snapshots/' }
        maven { url 'https://oss.sonatype.org/content/repositories/releases/' }
    }
}

project(":desktop") {
    apply plugin: …
Run Code Online (Sandbox Code Playgroud)

android gradle libgdx android-studio

7
推荐指数
1
解决办法
648
查看次数

如何使用 Espresso 将时间设置为 MaterialDateTimePicker

我正在尝试使用 Espresso 创建简单的 UI 测试来为新创建的项目设置日期。

项目正在使用https://github.com/wdullaer/MaterialDateTimePicker,但它显示了具有复杂 UI 的对话框片段,没有什么可坚持的。

我想创建自定义 ViewAction 来设置类似于来自 Espresso 的 PickerActions 的日期或时间。

任何建议如何做到这一点?

android ui-testing android-testing android-espresso

7
推荐指数
2
解决办法
3679
查看次数