INDEX / JOURNAL / LOG-007
VOL. 2026 · ENGINEERING
SERIES 7 / 7
LOG-007 · TEST LAYERS

Flutter のテストを三つの層で理解する

PUBLISHED
2026 · 07 · 24
AUTHOR
MIGIWAYA
READ
約 4 分
TAGS
#flutter#dart

§ 01WHY

§ 02UNIT

test/unit/counter_test.dartDART
test('increment で state が 1 増える', () {
final container = ProviderContainer();
addTearDown(container.dispose);
 
expect(container.read(counterProvider), 0);
container.read(counterProvider.notifier).increment();
expect(container.read(counterProvider), 1);
});

§ 03WIDGET

test/widget/counter_screen_test.dartDART
testWidgets('+ ボタンで表示が 1 になる', (tester) async {
await tester.pumpWidget(
const ProviderScope(child: MaterialApp(home: CounterScreen())),
);
expect(find.text('0'), findsOneWidget);
 
await tester.tap(find.byIcon(Icons.add));
await tester.pump(); // 状態変更後のフレームを進める
 
expect(find.text('1'), findsOneWidget);
});

§ 04E2E

§ 05FAKE

DART
await tester.pumpWidget(
ProviderScope(
overrides: [
itemRepositoryProvider.overrideWithValue(FakeItemRepository()),
],
child: const MaterialApp(home: ItemsScreen()),
),
);

§ 06RULE

何を速さ使いどころ
純粋なロジック・状態遷移速い計算・判定・Notifier
単一画面の描画と操作画面単体の UI
アプリ全体のフロー遅い画面をまたぐ重要な導線

§ 07SUMMARY

脚注 · NOTES
  1. [1]
  2. [2]
  3. [3]
同シリーズ · Flutter の基礎を実コードで学ぶ
§ + RELATED すべて見る →
INQUIRY
CONTACT
LOCATION
STATUS
Active / Open
ESTABLISHED
2024 · 5 · 5
FORM