山西百度公司做网站的,社交网站制作,wordpress博客排行,中国有哪些建筑公司写在开头#xff1a;Android UI 自动化测试推荐网易的Airtest#xff0c;也是谷歌推荐的#xff0c;操作简单#xff0c;而且基于图像识别根据用户操作界面自动生成Python测试代码JUnit单元测试testImplementation junit:junit:4.12image.pngimage.png使用gradle命令进行单…写在开头Android UI 自动化测试推荐网易的Airtest也是谷歌推荐的操作简单而且基于图像识别根据用户操作界面自动生成Python测试代码JUnit单元测试testImplementation junit:junit:4.12image.pngimage.png使用gradle命令进行单元测试gradle test还可以通过gradle testDebugUnitTest或者是gradle testReleaseUnitTest分别运行 debug 和 release 版本的 unit testingEspresso黑盒白盒测试区别如下黑盒测试已知产品的功能设计规格可以进行测试证明每个实现了的功能是否符合要求。白盒测试已知产品的内部工作过程可以通过测试证明每种内部操作是否符合设计规格要求所有内部成分是否以经过检查。Espresso是官方默认引入的我们先看一下这个白盒测试工具androidTestImplementation androidx.test.espresso:espresso-core:3.2.0发个牢骚看英文文档好费劲只能用翻译插件一点一点翻译效率很低效果还不如看一些相关中文博客但是毕竟官网全面系统而且很多技术文档都是英文。希望自己坚持看英文文档提高英文水平。当我根据文档书写代码的时候发现找不到onView方法双击Shift发现该方法在Espresso.onViewimage.png然后执行测试报错java.lang.RuntimeException: No activities found. Did you forget to launch the activity by calling getActivity() or startActivitySync or similar?解决方法get:Rulevar mActivityRule ActivityTestRule(MainActivity::class.java)简单介绍一下Rule一个JUnit Rule就是一个实现了TestRule的类这些类的作用类似于Before、After是用来在每个测试方法的执行前后执行一些代码的一个方法RunWith(AndroidJUnit4::class)class ExampleInstrumentedTest {get:Rulevar mActivityRule ActivityTestRule(MainActivity::class.java)Testfun useA() {//EditText输入文字onView(withId(R.id.et)).perform(replaceText(刘德华))val btn onView(withId(R.id.btn))println(-------------------$btn)//验证更新按钮是否显示btn.check(matches(isDisplayed()))//点击更新按钮btn.perform(click())}}这里记录一个遇到的问题输入中文的时候由于键盘上没有中文所以要用replaceText而不是typeText否则会报错误i.e. current IME does not understand how to translate the string into key events). As a workaround, you can use replaceText action to set the text directly in the EditText field.单页面测试使用Espresso多页面测试使用 UI Automator3.UI Automator测试录屏.gif参考官方文档在 Android 应用模块的 build.gradle 文件中您必须设置对 UI Automator 库的依赖项引用dependencies {...androidTestImplementation androidx.test.uiautomator:uiautomator:2.2.0}示例代码private const val PACKAGE_NAME club.guozengjie.jetpackprivate const val LAUNCH_TIMEOUT 5000LRunWith(AndroidJUnit4::class)SdkSuppress(minSdkVersion 18)class UIAutomatorTest {private lateinit var device: UiDeviceBeforefun startMainActivityFromHomeScreen() {device UiDevice.getInstance(InstrumentationRegistry.getInstrumentation())device.pressHome()// Wait for launcherval launcherPackage: String device.launcherPackageNameassertThat(launcherPackage, notNullValue())device.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)),LAUNCH_TIMEOUT)// Launch the appval context ApplicationProvider.getApplicationContext()val intent context.packageManager.getLaunchIntentForPackage(PACKAGE_NAME)?.apply {// Clear out any previous instancesaddFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)}context.startActivity(intent)// Wait for the app to appeardevice.wait(Until.hasObject(By.pkg(PACKAGE_NAME).depth(0)),LAUNCH_TIMEOUT)}Testfun aaa() {// Type text and then press the button.device.findObject(By.res(PACKAGE_NAME,et)).text 文川雪device.findObject(By.res(PACKAGE_NAME,btn)).click()device.waitForIdle()device.findObject(By.res(PACKAGE_NAME, tv)).click()}}AirtestAirtest是一款由网易研发并开源的自动化测试框架官网官网有详细的文档这里就不记录了。只想对Airtest说一个字牛。强烈推荐SoloPiSoloPi是一个无线化、非侵入式的Android自动化工具公测版拥有录制回放、性能测试、一机多控三项主要功能能为测试开发人员节省宝贵时间。