我定义特定字段中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
使用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()
不会重新启动活动.
我已经玩Espresso
了几周的测试,最后我决定开始测试碎片.
我立即遇到了问题,如何获得当前的活动?
我的应用程序使用登录数据,因此我无法使用测试规则启动活动.简而言之,是否有类似于getActivity()
做浓缩咖啡测试的东西?
有没有办法使用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)
但这似乎不起作用.有任何想法吗?
我正在使用带有 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
我正在尝试使用我的api调用(通过Retrofit
2.0制作)创建单元测试Mockito
.
这似乎是在使用最流行的博客Mockito
用Retrofit
.
http://mdswanson.com/blog/2013/12/16/reliable-android-http-testing-with-retrofit-and-mockito.html
不幸的是,它使用的是早期版本Retrofit
,并且取决于Callbacks
和RetrofitError
,它们从2.0中断.
你是怎么做到的Retrofit 2.0
?
PS:我使用的是RxJava
一起retrofit
,让一些有工作RxJava
将是巨大的.谢谢!
我使用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
我正在尝试将我现有的游戏(用libgdx编写)从Eclipse迁移到Android Studio.迁移我的桌面项目后正常工作,但我的Android项目有问题.在android我正在使用Admob广告.
我收到以下错误消息:
如您所见,Android Support Repository
已安装
我的项目结构:
在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) 我正在尝试使用 Espresso 创建简单的 UI 测试来为新创建的项目设置日期。
项目正在使用https://github.com/wdullaer/MaterialDateTimePicker,但它显示了具有复杂 UI 的对话框片段,没有什么可坚持的。
我想创建自定义 ViewAction 来设置类似于来自 Espresso 的 PickerActions 的日期或时间。
任何建议如何做到这一点?
android ×10
gradle ×3
ui-testing ×2
butterknife ×1
libgdx ×1
mockito ×1
retrofit ×1
rx-java ×1
testing ×1