- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试自动化我的 Android 应用程序的某些 UI(我没有源代码,所以我使用的是 APK 文件)。
我已经完成了提供的教程 here以及 Google 提供的一些教程,但所有教程都需要源代码。
如果有人知道如何在没有源代码的情况下使用 Espresso 自动化 UI,请提供帮助。
我使用 IntelliJ 作为 IDE 和应用程序 android 版本 5.0.2。
最佳答案
答案是肯定的,您可以在没有应用源代码的情况下使用 Espresso 运行自动化测试。
Espresso 基于 Android 仪器框架,这意味着自动化测试被内置到单个测试 apk 中。此测试apk与普通应用apk不同:
在AndroidManifest.xml中注册了一个instrumentation,安装测试apk后会注册到Android系统
测试 apk 必须使用与应用程序 apk 相同的签名进行签名,以便运行自动化测试
测试apk与应用apk运行在同一个进程
以上是任何基于仪器的测试框架的唯一要求。所以不存在源码依赖。
但为什么我们发现大多数 Espresso 教程都混有源代码?因为这样会让测试更简单:
您可以使用类 ActivityTestRule 轻松控制 Activity 生命周期。
您可以轻松地测试应用程序定义的类。
您可以使用小部件 id 测试 UI 小部件
相反,如果不使用源代码进行编译,则必须编写大量反射代码才能获取所需的类。例如:
您必须使用 Class.forName 加载入口 Activity 并启动它
您必须使用 Java 反射来测试应用程序定义的类
您必须使用文字信息来查找 UI 小部件,因为您没有 UI 小部件的 ID
我认为是由于上述缺点,这使得谷歌更愿意将 Espresso 测试与源代码一起构建。
综上所述,在没有应用程序源代码的情况下运行 Espresso 自动化测试是可以的,但是这要困难得多,并且会使测试代码变得丑陋。
您可以引用AndroidTestWithoutSource中的示例项目.
关于android - 使用 Espresso 自动化 Android APK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32393159/
在android支持测试库中,为recyclerview编写测试用例时,某些演示使用TypeSafeMatcher,而其他演示则使用BoundedMatcher。谁能解释我为什么在使用示例或用例时使用
我们目前正在为我们的应用程序的一个区域编写 Espresso UI 测试,这需要我们在每次测试后清除应用程序数据 我们之前尝试过使用 Android Orchestrator 我们之前曾尝试使用带有
我已经看到了一些关于它的问题。 例如。 Android Espresso testing app flow 但是上面的答案在espresso 2中不起作用。这是我的摘录 @Rule public Ac
我正在尝试建立一个测试农场,但我发现了一个很大的障碍。手机处于休眠状态时无法运行 Espresso 测试。 android.support.test.espresso.NoActivityResume
我正在运行“gradlew connectedCheck”来在已安装的应用程序上运行 Espresso 测试,但是这个“gradlew connectedCheck”重写了我的应用程序,然后运行测试。
使用 AndroidInjector 和 Subcomponents 无法将作用域对象的事件注入(inject) Espresso 的 Test 类。 以前使用应用程序级组件和事件组件,只要您创建一个
我正在使用Espresso为我的Android应用程序编写UI测试,并想使用MockWebServer模拟HTTP请求。 在运行测试之前,我需要模拟身份验证响应并登录用户。 有没有一种方法可以使应用程
我有一个 ExpandableListView,我想 click() 它的一个 subview 。 我尝试了LOADS OF不同的方法,但我似乎无法理解 Espresso 的工作原理。 例如,为什么这
我目前不熟悉自动化测试和使用 Android Studio 使用 Espresso 执行自动化测试,我正在尝试对登录屏幕执行自动化测试,我目前在执行特定按钮的点击时遇到问题。我尝试了多种按钮方法,但对
Windows 10(64 位), 安卓工作室 3.1.2, Gradle 4.4,Java 1.8。 这是我的布局 xml 这里 @drawable/sign_in_login_bg
Firebase 测试实验室接受 App Bundle/APK 和 android 测试 APK,并且动态功能模块 UI 测试在 Firebase 测试实验室中失败。该错误是关于一些多 dex 问题,
根据我在网络上所做的搜索,我发现很少有人认为 Espresso UI 测试框架不支持 WebViews?是这样吗? 最佳答案 Espresso 支持 WebView,我在下面添加了一个示例 http:
使用 Espresso,我希望能够单击 ExpandableListView(名为 CustomExpandableView)的特定子项。 listview 创建一组RelativeLayouts(名
我有我的 xml 布局: 我想写 Espresso 测试检查 EditText 有android:drawableStart="@drawable/ic_sign_in_password". 我该怎
我正在尝试为 Android 应用程序编写 Espresso 测试,并且需要知道如何自动化使用 AutoCompleteTextView 的部分。下面提到了我的应用程序使用的代码: activity_
我正在尝试为 Android 应用程序编写 Espresso 测试,并且需要知道如何自动化使用 AutoCompleteTextView 的部分。下面提到了我的应用程序使用的代码: activity_
在我的应用中,我使用 Kotlin Flow。在我通过 EspressoIdlingResource.increment() 使用挂起函数之前,它不适用于 Kotlin Flow。如何解决这个问题?
在我的应用中,我使用 Kotlin Flow。在我通过 EspressoIdlingResource.increment() 使用挂起函数之前,它不适用于 Kotlin Flow。如何解决这个问题?
我正在尝试使用 onData 运行 espresso 测试,对于其中只有一个 AdapterView 的 View ,一切正常。但是,当屏幕显示其中嵌套了多个适配器 View 的 View 时,我得到
我想测试是否显示 ID 为 imageViewTour 且标签包含 some_text 的 imageView。 我的测试: onView(allOf(withId(R.id.imageViewTou
我是一名优秀的程序员,十分优秀!