Token导航 LogoToken导航TokenDH.com
研究检索需要联网github未标认证来源可访问许可证需确认审计通过

flutter-testing-appsFlutter 测试 apps

Agent Skill

用于辅助测试设计、自动化测试、用例整理和回归验证。它适合让 Agent 编写单元测试、端到端测试、测试计划或根据失败日志定位问题。使用时需要确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑;涉及浏览器或外部服务时,应区分本地模拟、测试环境和生产环境。

总安装

392

周安装

16

GitHub Stars

公开资料未说明

下载量

125
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:flutter-testing-apps(Flutter 测试 apps)
来源仓库:https://github.com/gsmlg-dev/code-agent
仓库路径:skills/flutter-testing-apps
安装命令:
npx skills add https://github.com/gsmlg-dev/code-agent --skill flutter-testing-apps
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/gsmlg-dev/code-agent --skill flutter-testing-apps

简介

该技能用于 Flutter 应用的测试设计与自动化验证。

  • 适用于单元测试、端到端测试用例编写与回归检查。
  • 可在多种宿主环境中调用,提升测试覆盖率与质量。
  • 安装方式:npx skills add https://github.com/gsmlg-dev/code-agent --skill flutter-testing-apps。
  • 应区分测试环境与生产环境,避免误操作影响线上服务。

SKILL.md

Testing Flutter Applications

Contents

Core Testing Strategies

Balance your testing suite across three main categories to optimize for confidence, maintenance cost, dependencies, and execution speed.

Unit Tests

Use unit tests to verify the correctness of a single function, method, or class under various conditions.

  • Mock all external dependencies.
  • Do not involve disk I/O, screen rendering, or user actions from outside the test process.
  • Execute using the test or flutter_test package.

Widget Tests

Use widget tests (component tests) to ensure a single widget's UI looks and interacts as expected.

  • Provide the appropriate widget lifecycle context using WidgetTester.
  • Use Finder classes to locate widgets and Matcher constants to verify their existence and state.
  • Test views and UI interactions without spinning up the full application.

Integration Tests

Use integration tests (end-to-end or GUI testing) to validate how individual pieces of an app work together and to capture performance metrics on real devices.

  • Add the integration_test package as a dependency.
  • Run on physical devices, OS emulators, or Firebase Test Lab.
  • Prioritize integration tests for routing, dependency injection, and critical user flows.

Architectural Testing Guidelines

Design your application for observability and testability. Ensure all components can be tested both in isolation and together.

  • ViewModels: Write unit tests for every ViewModel class. Test the UI logic without relying on Flutter libraries or testing frameworks.
  • Repositories & Services: Write unit tests for every service and repository. Mock the underlying data sources (e.g., HTTP clients, local databases).
  • Views: Write widget tests for all views. Pass faked or mocked ViewModels and Repositories into the widget tree to isolate the UI.
  • Fakes over Mocks: Prefer creating Fake implementations of your repositories (e.g., FakeUserRepository) over using mocking libraries when testing ViewModels and Views to ensure well-defined inputs and outputs.

Plugin Testing Guidelines

When testing plugins, combine Dart tests with native platform tests to ensure full coverage across the method channel.

  • Dart Tests: Use Dart unit and widget tests for the Dart-facing API. Mock the platform channel to validate Dart logic.
  • Native Unit Tests: Implement native unit tests for isolated platform logic.

- Android: Configure JUnit tests in android/src/test/. - iOS/macOS: Configure XCTest tests in example/ios/RunnerTests/ and example/macos/RunnerTests/. - Linux/Windows: Configure GoogleTest tests in linux/test/ and windows/test/.

  • Native UI Tests: Use Espresso (Android) or XCUITest (iOS) if the plugin requires native UI interactions.
  • Integration Tests: Write at least one integration test for each platform channel call to verify Dart-to-Native communication.
  • End-to-End Fallback: If integration tests cannot cover a flow (e.g., mocking device state), synthesize calls to the method channel entry point using native unit tests, and test the Dart public API using Dart unit tests.

Workflows

Workflow: Implementing a Component Test Suite

Copy and track this checklist when implementing tests for a new architectural feature.

  • Task Progress

- Create Fake implementations for any new Repositories or Services. - Write Unit Tests for the Repository (mocking the API/Database). - Write Unit Tests for the ViewModel (injecting the Fake Repositories). - Write Widget Tests for the View (injecting the ViewModel and Fake Repositories). - Write an Integration Test for the critical path involving this feature. - Run validator -> review coverage -> fix missing edge cases.

Workflow: Running Integration Tests

Follow conditional logic based on the target platform when executing integration tests.

  1. If testing on Mobile (Local):

- Connect the Android/iOS device or emulator. - Run: flutter test integration_test/app_test.dart

  1. If testing on Web:

- Install and launch ChromeDriver: chromedriver --port=4444 - Run: flutter drive --driver=test_driver/integration_test.dart --target=integration_test/app_test.dart -d chrome

  1. If testing on Linux (CI System):

- Invoke an X server using xvfb-run to provide a display environment. - Run: xvfb-run flutter test integration_test/app_test.dart -d linux

  1. If testing via Firebase Test Lab:

- Build the Android test APKs: flutter build apk --debug and ./gradlew app:assembleAndroidTest - Upload the App APK and Test APK to the Firebase Console.

Examples

Example: ViewModel Unit Test

Demonstrates testing a ViewModel using a Fake Repository.

import 'package:flutter_test/flutter_test.dart';

void main() {
  group('HomeViewModel tests', () {
    test('Load bookings successfully', () {
      // Inject fake dependencies
      final viewModel = HomeViewModel(
        bookingRepository: FakeBookingRepository()..createBooking(kBooking),
        userRepository: FakeUserRepository(),
      );

      // Verify state
      expect(viewModel.bookings.isNotEmpty, true);
    });
  });
}

Example: View Widget Test

Demonstrates testing a View by pumping a localized widget tree with fake dependencies.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
  group('HomeScreen tests', () {
    late HomeViewModel viewModel;
    late FakeBookingRepository bookingRepository;

    setUp(() {
      bookingRepository = FakeBookingRepository()..createBooking(kBooking);
      viewModel = HomeViewModel(
        bookingRepository: bookingRepository,
        userRepository: FakeUserRepository(),
      );
    });

    testWidgets('renders bookings list', (WidgetTester tester) async {
      await tester.pumpWidget(
        MaterialApp(
          home: HomeScreen(viewModel: viewModel),
        ),
      );

      // Verify UI state
      expect(find.byType(ListView), findsOneWidget);
      expect(find.text('Booking 1'), findsOneWidget);
    });
  });
}

Example: Integration Test

Demonstrates a full end-to-end test using the integration_test package.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
import 'package:my_app/main.dart';

void main() {
  IntegrationTestWidgetsFlutterBinding.ensureInitialized();

  group('end-to-end test', () {
    testWidgets('tap on the floating action button, verify counter', (tester) async {
      // Load app widget
      await tester.pumpWidget(const MyApp());

      // Verify initial state
      expect(find.text('0'), findsOneWidget);

      // Find and tap the button
      final fab = find.byKey(const ValueKey('increment'));
      await tester.tap(fab);

      // Trigger a frame to allow animations/state to settle
      await tester.pumpAndSettle();

      // Verify updated state
      expect(find.text('1'), findsOneWidget);
    });
  });
}

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

34.49%
按下载量换算43

Claude

31.14%
按下载量换算39

Cursor

19.11%
按下载量换算24

Gemini CLI

9.64%
按下载量换算12

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills