KataSuperHeroesAndroid测试案例详解MainActivity篇【免费下载链接】KataSuperHeroesAndroidSuper Heroes Kata for Android Developers. The main goal is to practice UI Testing.项目地址: https://gitcode.com/gh_mirrors/ka/KataSuperHeroesAndroidKataSuperHeroesAndroid是一个专为Android开发者设计的超级英雄测试练习项目主要目标是帮助开发者掌握UI测试技能。本文将详细解析MainActivity的测试案例带你了解如何为Android应用构建可靠的UI测试。MainActivity测试概览MainActivity作为应用的主界面负责展示超级英雄列表并处理用户交互。其测试文件位于app/src/androidTest/java/com/karumi/katasuperheroes/MainActivityTest.java包含了8个核心测试用例覆盖了从空状态显示到列表项点击的完整交互流程。图1KataSuperHeroes应用的MainActivity界面展示超级英雄列表测试环境配置测试类使用了DaggerMockRule和IntentsTestRule进行依赖注入和Activity管理DaggerMockRule用于模拟依赖组件隔离测试环境IntentsTestRule管理MainActivity的生命周期支持Intent验证关键依赖声明如下Rule public DaggerMockRuleMainComponent daggerRule new DaggerMockRule(MainComponent.class, new MainModule()); Rule public IntentsTestRuleMainActivity activityRule new IntentsTestRule(MainActivity.class, true, false); Mock SuperHeroesRepository repository;核心测试场景解析1. 空状态显示测试当没有超级英雄数据时应用应显示空状态提示Test public void showsEmptyCaseIfThereAreNoSuperHeroes() { givenThereAreNoSuperHeroes(); startActivity(); onView(withText(¯\\_(ツ)_/¯)).check(matches(isDisplayed())); }此测试验证了在SuperHeroesRepository返回空列表时空状态文本是否正确显示。2. 超级英雄列表展示测试验证列表是否正确显示超级英雄名称Test public void showsSuperHeroesNameIfThereAreSuperHeroes() { ListSuperHero superHeroes givenThereAreSomeSuperHeroes(ANY_NUMBER_OF_SUPER_HEROES); startActivity(); RecyclerViewInteraction.SuperHeroonRecyclerView(withId(R.id.recycler_view)) .withItems(superHeroes) .check(new RecyclerViewInteraction.ItemViewAssertionSuperHero() { Override public void check(SuperHero superHero, View view, NoMatchingViewException e) { matches(hasDescendant(withText(superHero.getName()))).check(view, e); } }); }该测试使用自定义的RecyclerViewInteraction工具类验证列表项是否包含正确的超级英雄名称。3. 复仇者联盟徽章显示测试验证属于复仇者联盟的超级英雄是否显示特殊徽章Test public void showsAvengersBadgeIfASuperHeroIsPartOfTheAvengersTeam() { ListSuperHero superHeroes givenThereAreSomeAvengers(ANY_NUMBER_OF_SUPER_HEROES); startActivity(); RecyclerViewInteraction.SuperHeroonRecyclerView(withId(R.id.recycler_view)) .withItems(superHeroes) .check(new RecyclerViewInteraction.ItemViewAssertionSuperHero() { Override public void check(SuperHero superHero, View view, NoMatchingViewException e) { matches(hasDescendant(allOf(withId(R.id.iv_avengers_badge), withEffectiveVisibility(ViewMatchers.Visibility.VISIBLE)))).check(view, e); } }); }对应的非复仇者联盟成员不应显示徽章这通过另一个测试用例doesNotShowAvengersBadgeIfASuperHeroIsNotPartOfTheAvengersTeam进行验证。4. 列表项点击交互测试验证点击列表项是否正确跳转到详情页Test public void opensSuperHeroDetailActivityOnRecyclerViewItemTapped() { ListSuperHero superHeroes givenThereAreSomeSuperHeroes(); int superHeroIndex 0; startActivity(); onView(withId(R.id.recycler_view)). perform(RecyclerViewActions.actionOnItemAtPosition(superHeroIndex, click())); SuperHero superHeroSelected superHeroes.get(superHeroIndex); intended(hasComponent(SuperHeroDetailActivity.class.getCanonicalName())); intended(hasExtra(super_hero_name_key, superHeroSelected.getName())); }图2点击列表项后打开的超级英雄详情页5. 加载状态和列表数量测试加载完成后隐藏进度条doesNotShowLoadingViewOnceSuperHeroesAreShown测试验证加载完成后进度条是否隐藏列表数量验证showsTheExactNumberOfSuperHeroes测试确保列表项数量与数据源一致测试辅助方法测试类中定义了多个辅助方法简化测试 setupgivenThereAreSomeSuperHeroes()创建指定数量的测试超级英雄数据givenThereAreNoSuperHeroes()模拟空数据场景startActivity()启动测试Activity这些方法使用Mockito框架模拟SuperHeroesRepository的返回数据实现测试隔离。如何运行测试要运行这些测试首先克隆项目git clone https://gitcode.com/gh_mirrors/ka/KataSuperHeroesAndroid然后使用Android Studio或命令行运行Instrumented Tests./gradlew connectedAndroidTest总结MainActivity的测试案例展示了Android UI测试的最佳实践包括使用Espresso进行UI交互和断言通过DaggerMock隔离依赖组件覆盖空状态、加载状态、正常显示等多场景验证列表展示、交互跳转等核心功能通过这些测试可以确保MainActivity在各种场景下都能正确工作提高应用的质量和可靠性。图3应用完整操作流程动画【免费下载链接】KataSuperHeroesAndroidSuper Heroes Kata for Android Developers. The main goal is to practice UI Testing.项目地址: https://gitcode.com/gh_mirrors/ka/KataSuperHeroesAndroid创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考