AndroidX Test Espresso 3.1.1、Runner 1.1.1、Rules 1.1.1、Monitor 1.1.1、AndroidTestOrchestrator 1.1.1、Core 1.1.0、Truth 1.1.0 和 JUnit 1.1.0 (2018-12-13)
这是 AndroidX Test 1.1.0 的稳定版
- Core
- 使 ActivityScenario 支持会启动另一 Activity 的 Activity
AndroidX Test Espresso 3.1.1-beta01、Runner 1.1.1-beta01、Rules 1.1.1-beta01、Monitor 1.1.1-beta01、AndroidTestOrchestrator 1.1.1-beta01、Core 1.1.0-beta01、Truth 1.1.0-beta01 和 JUnit 1.1.0-beta01 (2018-12-06)
- Core
- 新增了 core-ktx kotlin 扩展工件!它包括适用于 Kotlin 的 ActivityScenario.launchActivity API
- 新增了 ActivityScenario API,用于使用自定义 Intent 启动 Activity
- 新增了 ActivityScenario API,用于接收 Activity 结果
- 使 ActivityScenario 可关闭
- Espresso
- 修改了 withResourceNameMatcher 和 HumanReadables,使其与 API 28 兼容。
- 更新了 ReplaceTextAction 的说明以包括 stringToBeSet
- 在 Robolectric Paused Looper 模式下支持 Espresso。
- JUnit
- 新增了 ActivityScenarioRule API,用于在设置测试时自动启动 Activity,并在测试拆解后关闭 Activity
- 新增了 junit-ktx kotlin 扩展工件!它包括适用于 Kotlin 的 ActivityScenarioRule API
- Runner
- 使 -e 软件包和 -e testFile 在接收软件包时行为保持一致
- Truth
- 添加了 bool、parcelable 和 parcelableAsType BundleSubject API
AndroidX Test Espresso 3.1.0、Runner 1.1.0、Rules 1.1.0、Monitor 1.1.0、AndroidTestOrchestrator 1.1.0、Core 1.0.0、Truth 1.0.0 和 JUnit 1.0.0 (2018-10-24)
- 全部
- 将 minSdkVersion 设置为 14,并将 targetSdkVersion 设置为 28
- Espresso
- 修复了 withContentDescription,以使用非字符串类型
- 添加了对在 Robolectric 上使用 Espresso 的支持
- 问题 72798625:启用 textAllCaps 后,无法使用 Espresso ViewMatchers.withText
- 添加了对注入一系列动作事件的支持
- Intents
- 添加了测试版 API 以检索 Intent 列表,旨在与新增的 Truth 断言配合使用
- Runner
- 添加了对免安装应用的支持
- 弃用了 androidx.test.runner.AndroidJUnit4 并改为使用 ndroidx.test.ext.junit.runners.AndroidJUnit4
- Monitor
- 弃用了 androidx.test.InstrumentationRegistry 并改为使用 androidx.test.platform.app.InstrumentationRegistry 和 androidx.test.core.app.ApplicationProvider
- AndroidTestOrchestrator
- 在同时传递“coverage”和“coverageFilePath”参数时,仅启用 Orchestrator coverage 处理过程。
- 仅在设置了-debug 时等待调试程序,而非等待列出 ATO 测试用例。新增了 orchestratorDebug 标记,用于调试 Orchestrator 本身
- Core
- 新增了工件!它包括新的 API,支持同时在本地和设备端对以下项进行测试:
- 检索上下文:ApplicationProvider
- 控制 activity 生命周期:ActivityScenario(Beta 版)
- MotionEvent、PackageInfo 的生成工具
- Parceable 实用程序类
- 新增了工件!它包括新的 API,支持同时在本地和设备端对以下项进行测试:
- Truth
- 新增了工件!它包括 Notification、Intent、Bundle、Parcelable 和 MotionEvent 的自定义 Truth 主题
- JUnit
- 新增了工件!它包括同时支持本地和设备端测试的 JUnit 运行程序类 androidx.test.ext.junit.runners.AndroidJUnit4。
Espresso 3.0.2-beta1、Runner 1.0.2-beta1、Rules 1.0.2-beta1、Monitor 1.0.2-beta1 和 AndroidTestOrchestrator 1.0.2-beta1 (2018-04-16)
- Espresso
- 重大 API 变更:
- 问题 64062890 中引起我们注意的是,我们在公共 API 中使用了 Guava Optional。这是我们的严重疏忽。因此,在此版本中,我们对公共 API 做出了重大变更来解决此问题。我们围绕 Guava Optional 类引入了一个名为 EspressoOptional 的封装容器,该封装容器位于“android.support.test.espresso.util”命名空间下。使用泄漏的 Guava Optional API 的开发者需要更改其导入和引用,以在更新到此新版本的过程中使用 EspressoOptional。对于由此造成的不便,我们深表歉意。
- onView () 和 onData () API 现在标记为 @CheckReturnValue 以防止出现错误
- 修复了 espresso-core POM 文件,使其不提取“rules”依赖项,而会让 espresso-intents POM 提取该依赖项。对于开发者来说,这应该是一项 NoOp 更改,因为没有 espresso-core 就无法使用 espresso-intents。
- 问题 65486414:Espresso 缺少 guava 依赖项
- 问题 65576174:Espresso IdlingResourceRegistry.sync 导致第二次测试失败
- 问题 65568629:Espresso.onIdle 未使用 IdlingRegistry
- 问题 69333598:espresso 3.0.1 与 Android 库模块中的 play-services-auth:11.6.0 不兼容。
- 问题 64062890:AdapterViewProtocol 接口公开了内部 Optional 类型
- 问题 64091847:Espresso 3.0.0 不应该依赖于测试运行程序
- 问题 73722050:espresso-contrib 3.0.2-alpha1 打包了 android.arch.{lifecycle/core} 类
- 重大 API 变更:
- Espresso-remote
- 这是一个全新的工件。我们将 Espresso 的所有多进程功能从 espresso-core 工件中分离出来。这样更清晰,并且可以显著减少 espresso-core 的总大小和方法数。
- Runner
- Rules
- 确保在生命周期更改后释放对被测 Activity 的引用。在测试期间,可以使用从 #getActivity () 获取的引用直接操纵 Activity。如果完成 Activity 并重新启动,则 #getActivity () 返回的引用现在始终指向 Activity 的当前实例。
- 问题 64389280:GrantPermissionRule 不提供 WRITE_EXTERNAL_STORAGE
- 问题 37065965:ActivityTestRule 在方向更改后会泄露 Activity
- 问题 75254050:ActivityTestRule 在配置更改期间不更新 Activity 实例
- 问题 64464625:无法在 Activity 的 finish() 方法中执行界面任务
- AndroidTestOrchestrator
- 传递
-e coverage true -e coverageFilePath /sdcard/foo/
标记以在给定位置生成 coverage 文件(该应用必须具有在给定位置进行写入的权限)。现在 coverage 文件的命名规则类似如下:com.foo.Class#method1.ec
。请注意,仅当在隔离模式下运行时才支持此操作。此外,它还不能与 AndroidJUnitRunner 的coverageFile
标记一起使用,因为生成的 coverage 文件会相互覆盖。 - 如果希望 Orchestrator 在测试调用之间运行
pm clear context.getPackageName()
和pm clear targetContext.getPackageName()
命令,则传递-e clearPackageData
标记。请注意,清除命令中的上下文是被测应用上下文。 - 已修复 - 在目标中运行空测试(也就是说没有 @Test)时,测试结果与旧模式不同。
- 问题 72758547:Test Orchestrator 会导致 Jacoco coverage 数据不完整,即只有上一次测试的运行数据
- 问题 67916042:Android Test Orchestrator:执行在进程因 OutOfMemory 崩溃时停止
- 问题 77752735:Orchestrator 因 TransactionTooLargeException 崩溃
- 问题 77549481:Test Orchestrator 应在每次测试后运行“pm clear”
- 传递
Espresso 3.0.2-alpha1、Runner 1.0.2-alpha1、Rules 1.0.2-alpha1 和 AndroidTestOrchestrator 1.0.2-alpha1 (2017-12-05)
Espresso
Intents
现在具有可调用的响应,以允许在捕获触发的 Intent 之后,返回Instrumentation.ActivityResult
对象之前执行测试。
Runner
为需要
MonitoringInstrumentation
但不需要运行测试和 JUnit 功能的用户拆分了 Monitor Maven 工件com.android.support.test:monitor:<version>
。如果您使用
com.android.support.test:runner:<version>
,那么一切都正常,因为 Gradle 会自动将monitor
模块作为runner
模块的依赖项纳入进来。添加了标记
newRunListenerOrderMode
。为true
时,用户定义的监听器会比默认监听器先运行。(我们希望这种行为最终会成为默认行为。)问题 65828576:在使用
@Ignore
注解的类中运行测试(独立运行,无需运行测试或 JUnit 功能)时,TestRequestBuilder
会崩溃。
AndroidTestOrchestrator
- 现在,处理空测试的方式与非编排的
AndroidJUnitRunner
相同。 - Orchestrator 现在可以处理非常大的
AndroidJUnitRunner
标准输出。
- 现在,处理空测试的方式与非编排的
Espresso 3.0.1、Runner 1.0.1、Rules 1.0.1 和 AndroidTestOrchestrator 1.0.1 (2017-08-28)
Espresso
- 添加了
IdlingPolicy
选项,以在将单步调试程序连接到虚拟机时抑制onTimeout()
。 - 问题 64024656、64247586 和 64525881:除非用户通过添加
-e
类运行程序参数来加载特定的类,否则在类加载失败时将不会报告失败情况。 - 问题 64877246:将缺少的类添加到源 JAR 文件。
- 添加了
Runner
- 简化了
ShardingFilter
逻辑。 - 问题 65025743:
@RequiresDevice
过滤器现在支持 FTL 模拟器。
- 简化了
AndroidTestOrchestrator
- 不重复报告失败情况。现在,测试进程在失败后崩溃时,仅报告一次测试失败。
- 修复了 Orchestrator 的 Javadoc。
- 现在,如果远程进程崩溃,则测试会标记为未通过。
- 现在可以处理忽略的测试用例。
- 现在可以从脚注中排除忽略的测试用例以匹配旧结果。
- 修复了运行时权限问题。现在,在 Android 7.0(API 级别 24)及更高版本系统上,测试报告会写入 SD 卡。
Espresso 3.0.0、Runner 1.0.0、Rules 1.0.0 和 AndroidTestOrchestrator 1.0.0(2017-07-25,公告)
重大变更
- 所有工件
- 不再支持低于 15 级的 API 版本;不过,为了给用户留出时间升级,最低 SDK 版本仍指向 API 级别 9
- Espresso
- 已弃用的
android.support.test.espresso.contrib.CountingIdlingResource
类已被删除并移至android.support.test.espresso.idling.CountingIdlingResource
- Guava 现在已变为 jarjar,并迁移到另一个“内部”命名空间中;如果您不小心通过 Espresso 命名空间使用 Guava API,则可能会出现故障
- 移除对 Shaded Guava (
.core.deps.guava.
) 的所有引用 - 将支持库版本升级到 25.4.0 或更高版本
- 移除对 Shaded Guava (
- 已弃用的
已知问题
- AndroidTestOrchestrator
- 目前不支持
-e numShards
和-e shardIndex
运行程序参数 - 目前不支持参数化测试
- 目前不支持
新功能
- Espresso
- 在 API 26 上新增了对
espresso-core
和espresso-web
的 Multiprocess Espresso 支持,但不适用于espresso-contrib
- 新增了轻量
IdlingRegistry
API- 作为
com.android.support.test.espresso:espresso-idling-resource:3.0.0
的一部分发布 - 弃用的方法:
- 作为
- 新增了 API 以帮助同步
Executors
- 新增了 Maven 工件:
com.android.support.test.espresso.idling:idling-concurrent:3.0.0
- 包含
IdlingScheduledThreadPoolExecutor
和IdlingThreadPoolExecutor
类
- 新增了 Maven 工件:
- 新增了 API 以帮助同步网络请求和响应。
- 新增了 Maven 工件:
com.android.support.test.espresso.idling:idling-net:3.0.0
- 包含
UriIdlingResource
类
- 新增了 Maven 工件:
- 新增了
espresso-core
视图匹配器:hasBackground()
与View
对象的背景可绘制资源匹配hasTextColor()
与TextView
对象的颜色匹配
- 新增了视图操作方法:
- 增强了
scrollTo()
视图操作,以与ListView
的子级一起使用 repeatedlyUntil()
- 在视图上执行给定的ViewAction
,直到该视图与所需的ViewMatchers
匹配
- 增强了
- 新增了 Espresso 方法:
pressBackUnconditionally()
- 与pressBack()
相似,但在 Espresso 导航时不会抛出异常noActivity()
- 在执行ViewAction
或ViewAssertion
之前可以无需等待 ActivityonIdle()
- 循环执行主线程,直至应用进入空闲状态onIdle(Callable<T>)
- 与onIdle()
相同,但会将额外的Callable
作为参数,该参数会在应用进入空闲状态后执行
webScrollIntoView()
- 新增了espresso-web
Atom,可让您在WebView
内执行滚动
- 在 API 26 上新增了对
- Runner
-
InterceptingActivityFactory
和SingleActivityFactory
- 提供一种工具,用于通过替换startService()
和sendBroadcast()
等方法,在与外部世界隔离的情况下测试 activity -
添加了将 JUnitParams 与
AndroidJUnitRunner
配合使用的支持 -
开始在核心测试运行程序级别处理
@UiThreadTest
并废弃@UiThreadTestRule
- 这样一来,就可以在带有@Before
和@After
注解的方法中直接使用@UiThreadTest
注解 -
@SdkSupress
注解现在支持maxSdkVersion
值(问题 37067792) -
-e classLoader
- 支持使用运行程序参数传递类加载器 -
-e filter
- 添加了对使用运行程序参数指定自定义 JUnit 过滤器的支持 -
-e runnerBuilder
- 允许开发者提供自己的RunnerBuilder
实现,这些实现可以确定是否以及如何针对特定类运行
-
- Rules
ProviderTestRule
- 新增了 API 用于测试ContentProvider
对象getActivityResult()
和ActivityResultMatchers
- 新增了 API,用于检索已调用setResult()
的某个 Activity 的结果
- AndroidTestOrchestrator
- Android Test Orchestrator 提供了一种新的方法来收集和运行测试,其重点在于正确性和隔离。Orchestrator 是一个独立的插桩进程,为每个测试生成一个插桩运行程序进程并收集结果。
- 应用崩溃会移除运行程序插桩,但不会移除 Orchestrator,这样测试套件就能继续运行
- 需要安装 Orchestrator APK -
'com.android.support.test:orchestrator:1.0.0'
- 版本 1.0 仅具有命令行界面;我们计划将其与 Android Studio 和 Firebase 测试实验室集成
- Android Test Orchestrator 提供了一种新的方法来收集和运行测试,其重点在于正确性和隔离。Orchestrator 是一个独立的插桩进程,为每个测试生成一个插桩运行程序进程并收集结果。
问题修复
- Espresso
- 改进了根视图同步功能,以大幅提升稳定性
- 修复了
IdlingResourceRegistry
损坏问题 - 可以更好地同步
IdlingResource
对象 - 问题 37132680:Espresso 不等待对话框创建完成就执行下一步操作
- 问题 37103280:Espresso 应随附 ProGuard 使用方规则,这样使用方就无需自行添加这些规则
- 问题 37094726:Espresso Intent 包含不必要的应用标签
- 问题 37093953:Espresso - 无法检查 null/空错误文本
- 问题 37071776:
espresso-core
嵌入 Guava 的.pom
文件 - 问题 187249:
release()
中的 NPE - 问题 37063389:将 Guava 和
espresso-web
作为androidTest
依赖项会导致无法编译 - 问题 37070533:在 Android 设计支持库中添加了对
NavigationView
的支持
- Runner
-
修复了将
@UiThreadTest
与@Test(timeout = 123)
结合使用的功能 - 修复了
-e notClass
运行程序参数 - 修复了
-e log
以支持 JUnit3 和 JUnit4 测试套件,以及Parameterized
和Enclosed
运行程序 - 问题 37663530:在每种测试方法前后等待所有 activity 完成
- 问题 37132680:Espresso 不等待对话框创建完成就执行下一步操作
-
问题 37123213:在 x86_64 ABI 上忽略
@RequiresDevice
-
问题 37101485:忽略
AndroidJUnitRunner
的某些以清单形式提供的参数,例如测试大小、注解和调试等 - 问题 37082857:Espresso 半并行测试作业在静态对象上执行失败
-
问题 37063396:未使用
ProviderTestCase2
初始化上下文(导致NullPointerException
)
-
修复了将
- Rules
- 修复了
ActivityTestRule
生命周期,以统一常规和延迟ActivityTestRule
初始化的行为 - 问题 37079943:修复了
ServiceTestRule
以允许执行重新绑定 - 问题 37109342:添加
getActivityResult()
和ActivityResultMatchers
- 修复了
- UiAutomator
setUiAutomationFlags()
适用于UiAutomation.FLAG_DONT_SUPPRESS_ACCESSIBILITY_SERVICES
- 这样就可以在运行其他无障碍服务时使用UiAutomator
- 问题 37082813:当 API 级别为 19 或更低时,对空
EditText
对象运行setText()
会抛出NullPointerException
其他显著变更
- 二进制文件现在通过 Google Maven 发布
- 缩减了
espresso-core
和espresso-web
JAR 文件的大小,而且嵌入的依赖项现在已应用 ProGuard - 现在,所有
.aar
文件都包含 ProGuard 规则 - 在已发布的工件中添加
proguard_library.cfg
文件 Tapper
接口具有要实现的新版sendTap()
外部贡献
- Espresso
- Runner
- Rules
Espresso 2.2.2 和 Runner/Rules 0.5(2016-02-22,静默发布)
新功能
- espresso
- 问题 194253:在 Android 支持设计库中添加了对 NavigationView 的支持
- 添加了对启用的动画和转场效果的检查
- 新增的
ViewMatcher
API:withResourceName()
bug 修复
- espresso
- 问题 195331:espresso-core 嵌入 guava 的 pom 文件
- 将计数空闲资源从 espresso-contrib 中移出
- rules
- 问题 187249:
Intents.release()
中的 NPE
- 问题 187249:
- runner
- 问题 196066:
AndroidJUnitRunner
中的-e log true
参数不会绕过实际测试 - 在运行程序的
onCreate()
中等待调试程序 - 将所有支持的测试注解移出平台并移入 ATSL
- 移除了关于没有 JSBridge 的堆栈轨迹转储
- 修复了
AndroidAnnotatedBuilder
- 问题 196066:
其他显著变更
- 在 Beta 版中移除了
ActivityTestRule
、UiThreadTestRule
、IntentsTestRule
和ServiceTestRule
- 添加了代码样式设置文件以统一代码格式
Espresso 2.2.1 和 Runner/Rules 0.4 (2015-09-15)
新功能
- rules
- 新增了
IntentsTestRule
构造函数以与ActivityTestRule
完全兼容
- 新增了
- runner
- 专为 API 级别 15 和更低版本添加了多 dex 安装
- 在类和软件包中添加了排除过滤器:
- 运行除特定类测试以外的所有测试:
adb shell am instrument -w -e notClass com.android.foo.FooTest
- 运行除单个测试以外的所有测试:
adb shell am instrument -w -e notClass com.android.foo.FooTest#testFoo
- 运行除特定软件包以外的所有测试:
adb shell am instrument -w -e notPackage com.android.foo.bar
- 运行除特定类测试以外的所有测试:
外部贡献
- espresso
问题修复
- espresso
ViewActions.closeSoftKeyboard()
现在可确保软键盘完全消失- 修复了 API 级别 21 及更高级别上 Espresso 的
Espresso.pressBack()
方法的同步问题 - 修复了 API 级别 23 上键盘关闭动画的同步问题
- rules
- 修复了 API 级别 23 上
ServiceTestRule
的问题,必须始终使用显式Intent
调用startService()
- 修复了 API 级别 23 上
- runner
- 修复了损坏的 gradle
JaCoCo
支持 - 修复了损坏的测试分片支持
- 修复了
JUnit3
样式测试超时后测试运行程序中状态不一致的问题
- 修复了损坏的 gradle
其他显著变更
- 改进了 Javadoc 修复和错误消息
- 在使用方法过滤器时,会忽略
suite()
方法,但不会忽略 init 错误
Espresso 2.2/ATSL 0.3 (2015-06-09)
新功能
- espresso-web 2.2
- 新增了
WebView
支持
- 新增了
- espresso-core 2.2
- 迁移至 dagger v2
- 迁移至 hamcrest v1.3
- espresso-contrib 2.2
- 无障碍检查
DrawerActions
重力支持
- rules 0.3
DisableOnAndroidDebug
规则
- runner 0.3
- 从 JUnit v4.10 升级到 JUnit v4.12
- 迁移至 hamcrest v1.3
bug 修复
- 修复了
DrawerActions
泄露ParentListener
的问题 - Assumption Failure 现在被视为忽略的测试,而不是失败的测试
- 通过
ExecutorService
修复了MonitoringInstrumentation
泄露 Activity 实例的问题 - 修复了孤立 Activity 陷入停滞状态的问题
- 更新了
Until.scrollFinished()
,以在没有生成滚动事件时返回 true。监控UiObject2#setText()
中可能存在的 NPE。
Espresso 2.1、Test Runner/Rules 0.2 和 UIAutomator 2.1.0 (2015-04-21)
重大变更
- 测试运行程序工件分成了两部分,名称从
com.android.support.test:testing-support-lib:0.1
变成了com.android.support.test:runner:0.2
和com.android.support.test:rules:0.2
。
新功能
- espresso-intents:一种类似于 Mockito 的 API,该 API 允许测试创建者验证输出的 Intent 并对其进行打桩处理,以此来执行封闭的 Activity 互动测试
IntentsTestRule
:在功能界面测试中扩展ActivityTestRule
、进行初始化并发布 Espresso-Intent
- espresso-core
ViewActions
:支持在运行操作之前运行全局断言。这有助于在 Espresso 的基础上构建的其他框架在执行现有 Espresso 测试套件的同时验证视图层次结构的状态ViewMatchers.withContentDescription()
resId
过载
- rules
ActivityTestRule
:此规则提供单个 Activity 的功能测试UiThreadRule
和UiThreadTest
注解:此规则允许使用UiThreadTest
注解的测试方法在应用的主线程(或界面线程)上执行ServiceTestRule
:此规则提供服务的功能测试
- runner
ApplicationLifecycleCallback
:用于监控应用生命周期事件的回调- 现在也可以使用
<meta-data>
标记在 Android 清单文件中指定所有运行程序参数
- UIAutomator
UiDevice.dumpWindowHierarchy()
现在可以接受File
或OutputStream
bug 修复
- espresso
- 现在如果找不到光标所在列,光标匹配器会返回
false
,以便 Hamcrest 可以继续处理下一个光标 - 不再出现带有
PreferenceMatchers
withTitle
的NullPointerException
- 注销空闲资源不会再使 Espresso 认为我们的空闲资源忙碌
- 更新了 Espresso Contrib 使用的支持注解版本
- 现在如果找不到光标所在列,光标匹配器会返回
- runner
AndroidJUnit4
现在使用 Failing Assumption 跳过测试
- UIAutomator
- 运行观察器以预防出现
StaleObjectException
- 运行观察器以预防出现
其他显著变更
- 添加了更清楚明白的错误消息以在无法使用非拉丁字符串键入文本时显示
UIAutomator 2.0 (2015-03-12)
UIAutomator 现在以 Android 插桩为基础,您可以使用 ./gradlew connectedCheck
命令来构建和运行测试。
Espresso 版本 2.0 和 Test Runner 0.1(发布日期:2014-12-19)
重大变更
- Espresso 已迁移到新的命名空间(从
android.support.test.espresso
迁移到android.support.test.espresso
) - Espresso 工件已重新命名
espresso-1.1.jar
现在为espresso-core-release-2.0.jar
IdlingResource
接口已移到单独的库中:espresso-idling-resource-release-2.0.jar
CountingIdlingResource
现在位于espresso-contrib-release-2.0.jar
中(和往常一样)
- 从公共 API 中移除了 Optional(一个 guava 依赖项)以支持重新打包 guava 依赖项并避免 DEX 冲突(开发难点的主要根源)。受影响的方法包括:
ViewAssertion.check()
HumanReadables.getViewHierarchyErrorMessage()
新功能
- 操作
ViewActions
replaceText()
openLink()
- 上下滑动
- espresso-contrib
RecyclerViewActions
:处理与RecyclerViews
的互动PickerActions
:处理与Date
和Time
选择器的互动
- 匹配器
RootMatchers
isPlatformPopup()
ViewMatchers
isJavascriptEnabled()
withSpinnerText()
withHint()
isSelected()
hasLinks()
LayoutMatchers
:用于与国际化相关的布局测试的匹配器CursorMatchers
:Cursor
对象的匹配器集合
- 断言
PositionAssertions
,包括isLeftOf()
和isAbove()
:ViewAssertions
的集合,用于检查元素在屏幕上的相对位置LayoutAssertions
:用于与国际化相关的布局测试的断言
- 测试应用:许多新的 Activity/测试示例
- 其他
Espresso.unregisterIdlingResources()
和Espresso.getIdlingResources()
:可更灵活地与IdlingResources
配合使用ViewInteraction.withFailureHandler()
:允许从onView()
替换失败处理程序onData()
支持由CursorAdapters
提供支持的AdapterViews
bug 修复
ViewMatchers.isDisplayed()
匹配占据整个屏幕但显示部分不低于 90% 的视图- 对
DrawerActions.openDrawer()
执行滑动操作调用不再导致IdlingResourceTimeoutException
其他显著变更
- 从使用 Maven 进行编译切换到使用 Gradle 进行编译
- 移除了 Espresso 依赖项(Guava、Dagger 和 Hamcrest)以避免 DEX 冲突
- 改为在注册和注销空闲资源时返回成功或失败
- Lollipop 支持:将
message.recycle()
置于接口之后,以说明与版本相关的变更 - 将目标 SDK 级别切换为 21,这主要影响测试应用
版本 1.1(发布日期:2014 年 1 月 8 日)
Espresso
- 新增了
swipeLeft
和swipeRight
ViewActions
- 多窗口支持:一项高级功能,方便您选择 Espresso 运行操作的目标窗口
- 对于
TypeTextAction
的改进:允许在预先聚焦的视图中输入文本,以便于附加文本 - 修复了大量问题
Espresso Contrib 库
- 此新库包含作为 Espresso 的补充但不属于核心库的功能
- 新增了用于在
DrawerLayout
上运行的DrawerActions
:依赖于 Android 支持库,因此未将其纳入核心 Espresso 库
测试示例
- 这些测试已重新定位,与测试应用位于同一软件包中
- 修复了 Maven POM 以移除重复的 guava 依赖项,因此
mvn install
现在应可以正常工作