Integrationstest
Udfør integrationstests for at validere samspillet mellem flere widgets og komplette brugerflows i Deres applikation.
Integrationstest er en gratis Mobiludvikling med Flutter-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Mobiludvikling med Flutter, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Mobiludvikling med Flutter-kurset indeholder 4 lektioner i alt.
Hvad er integrationstest?
Velkommen! I denne lektion udforsker vi integrationstest, som er et afgørende trin i udviklingen af robuste Flutter-apps.
Integrationstest kontrollerer, hvordan forskellige dele af din app fungerer sammen. Se det som en simulering af en bruger, der interagerer med din app gennem et komplet forløb, for eksempel logger ind, navigerer og udfører handlinger.
Hvorfor integrationstest er vigtigt
Mens widget-tests (som vi gennemgik tidligere) fokuserer på individuelle brugergrænsefladekomponenter, giver integrationstest dig sikkerhed for, at komplette brugerforløb fungerer korrekt.
- Scenarier fra virkeligheden: Efterligner faktisk brugeradfærd.
- Find fejl tidligt: Afslører problemer, der kun opstår, når flere widgets eller tjenester interagerer.
- Sikrer stabilitet: Validerer, at ændringer ikke ødelægger eksisterende funktioner.
Konfiguration af integrationstest
Flutter bruger pakken integration_test til at aktivere disse test. Den giver dig mulighed for at køre test direkte på en rigtig enhed eller emulator, så du får en nøjagtig gengivelse af din apps adfærd.
Føj først afhængigheden integration_test til din pubspec.yaml-fil under både dependencies og dev_dependencies:
dependencies:
flutter:
sdk: flutter
integration_test:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
integration_test:
sdk: flutterStrukturen i en integrationstest
Integrationstest omfatter typisk to hovedfiler:
- testdriveren, normalt i
test_driver/app_test.dart. Denne fil konfigurerer miljøet til at køre dine integrationstest. - den faktiske testsamling, typisk i
integration_test/app_test.dart. Her skriver du testlogikken.
Testdriverens indgangspunkt
Filen test_driver/app_test.dart er enkel. Den initialiserer IntegrationTestWidgetsFlutterBinding og kalder integrationDriver() for at håndtere testkørslen.
import 'package:integration_test/integration_test_driver.dart';
Future<void> main() async {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
await integrationDriver();
}App til integrationstest
Lad os oprette en enkel tællerapp for at demonstrere en integrationstest. Bemærk, at vi tilføjer Keys til de widgets, som vi vil finde og interagere med i vores test.
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatefulWidget {
const MyApp({super.key});
@override
State<MyApp> createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
int _counter = 0;
void _incrementCounter() {
setState(() {
_counter++;
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Counter App',
home: Scaffold(
appBar: AppBar(title: const Text('Counter App')),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
const Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
key: const Key('counterText'),
style: Theme.of(context).textTheme.headlineMedium,
),
],
),
),
floatingActionButton: FloatingActionButton(
key: const Key('incrementButton'),
onPressed: _incrementCounter,
tooltip: 'Increment',
child: const Icon(Icons.add),
),
),
);
}
}Skriv din integrationstest
Lad os nu skrive den faktiske test i integration_test/app_test.dart. Vi bruger tester.pumpAndSettle() til at vente på animationer og opdateringer af brugergrænsefladen og tester.tap() til at simulere brugerinteraktion.
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:integration_test/integration_test.dart';
// Import your app's main file.
// Replace 'my_app_name' with your actual package name.
import 'package:my_app_name/main.dart' as app;
void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
group('Counter App Integration Tests', () {
testWidgets('Verify counter increments on button tap', (tester) async {
app.main(); // Start the application
await tester.pumpAndSettle(); // Wait for the UI to build
// Find the counter text and verify its initial value
final counterTextFinder = find.byKey(const Key('counterText'));
expect(counterTextFinder, findsOneWidget);
expect(tester.widget<Text>(counterTextFinder).data, '0');
// Find and tap the increment button
final incrementButtonFinder = find.byKey(const Key('incrementButton'));
await tester.tap(incrementButtonFinder);
await tester.pumpAndSettle(); // Wait for state change & UI update
// Verify the counter text has updated to 1
expect(tester.widget<Text>(counterTextFinder).data, '1');
// Tap again and verify it updates to 2
await tester.tap(incrementButtonFinder);
await tester.pumpAndSettle();
expect(tester.widget<Text>(counterTextFinder).data, '2');
});
});
}Kørsel af integrationstest
Du kører dine integrationstest med kommandoen flutter drive fra projektets rodmappe. Sørg for, at du har en Android-emulator eller -enhed eller en iOS-simulator eller -enhed kørende.
Denne kommando fortæller Flutter, at den skal bruge din testdriver til at køre testsamlingen mod din app.
flutter drive \
--driver=test_driver/app_test.dart \
--target=integration_test/app_test.dartAvancerede interaktioner
Integrationstest kan simulere komplekse brugerforløb på tværs af flere skærme. Du kan:
- Indtaste tekst: Brug
tester.enterText(find.byType(TextField), 'Hello'); - Rulle: Brug
tester.scrollUntilVisible()til at bringe widgets frem i visningen. - Navigere: Tryk på knapper, der udløser
Navigator.push()ellerNavigator.pop(), og kontrollér ændringer på skærmen.
Brug altid Keys til robust identifikation af widgets, især når du arbejder med dynamiske brugergrænseflader eller flere ens widgets.
Hurtig kontrol
Hvilke af følgende er de primære fordele ved at bruge integrationstest i Flutter-udvikling?
Opsummering: Integrationstest
Godt klaret! Du har lært om integrationstest i Flutter. Vi gennemgik:
- Hvad integrationstest er, og hvorfor det er afgørende for appens stabilitet.
- Sådan konfigurerer du pakken
integration_test. - Strukturen i integrationstest, og hvordan du skriver dem.
- Sådan kører du test med
flutter drive.
Integrationstest giver stor sikkerhed for, at appens funktioner fungerer problemfrit sammen, sådan som en bruger oplever dem.
Lær Dart med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 22
- Lektioner
- 88
Ofte stillede spørgsmål
Er lektionen “Integrationstest” gratis?
Ja — alle 3 lektioner i læringssporet Mobiludvikling med Flutter, inklusive “Integrationstest”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Mobiludvikling med Flutter-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Integrationstest”?
Udfør integrationstests for at validere samspillet mellem flere widgets og komplette brugerflows i Deres applikation. Du øver dig i Mobiludvikling med Flutter med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Mobiludvikling med Flutter?
Der kræves ingen tidligere erfaring. Mobiludvikling med Flutter på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Integrationstest”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Mobiludvikling med Flutter-lektion?
Ja. Alle Mobiludvikling med Flutter-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Principper for widget-test
- Integrationstest
- Fejlfindingsværktøjer og -teknikker
- Unit testing og mocking