Integraatiotestaus
Suorittakaa integraatiotestejä useiden widgetien välisen vuorovaikutuksen ja sovelluksen kokonaisten käyttäjäpolkujen validoimiseksi.
Integraatiotestaus on ilmainen Mobiilikehitys Flutterilla-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Mobiilikehitys Flutterilla-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Mobiilikehitys Flutterilla-kurssilla on yhteensä 4 oppituntia.
Mitä integraatiotestit ovat
Tervetuloa! Tässä oppitunnissa tutustumme integraatiotestaukseen, joka on tärkeä vaihe vakaiden Flutter-sovellusten rakentamisessa.
Integraatiotesteillä tarkistetaan, kuinka sovelluksen eri osat toimivat yhdessä. Voitte ajatella sitä käyttäjän toiminnan simulointina sovelluksen läpi kulkevassa kokonaisessa työnkulussa, kuten kirjautumisessa, navigoinnissa ja toimintojen suorittamisessa.
Miksi integraatiotestit ovat tärkeitä
Siinä missä aiemmin käsitellyissä widget-testeissä keskitytään yksittäisiin käyttöliittymäkomponentteihin, integraatiotestit antavat varmuutta siitä, että kokonaiset käyttäjäpolut toimivat oikein.
- Todellisen maailman tilanteet: Jäljittelevät käyttäjän todellista toimintaa.
- Virheiden havaitseminen varhain: Paljastavat ongelmia, jotka ilmenevät vasta useiden widgetien tai palveluiden toimiessa yhdessä.
- Vakauden varmistaminen: Varmistavat, etteivät muutokset riko olemassa olevia ominaisuuksia.
Integraatiotestien määrittäminen
Flutter käyttää integration_test-pakettia näiden testien mahdollistamiseen. Sen avulla testejä voidaan suorittaa suoraan oikealla laitteella tai emulaattorissa, mikä antaa tarkan kuvan sovelluksen toiminnasta.
Lisätkää ensin integration_test-riippuvuus pubspec.yaml-tiedostoon sekä dependencies- että dev_dependencies-osioon:
dependencies:
flutter:
sdk: flutter
integration_test:
sdk: flutter
dev_dependencies:
flutter_test:
sdk: flutter
integration_test:
sdk: flutterIntegraatiotestin rakenne
Integraatiotestit sisältävät yleensä kaksi pääasiallista tiedostoa:
- Testiajuri, yleensä tiedostossa
test_driver/app_test.dart. Tämä tiedosto määrittää ympäristön integraatiotestien suorittamista varten. - Varsinainen testisarja, yleensä tiedostossa
integration_test/app_test.dart. Tähän kirjoitetaan testin logiikka.
Testiajurin aloituspiste
test_driver/app_test.dart-tiedosto on yksinkertainen. Se alustaa IntegrationTestWidgetsFlutterBinding-sidonnan ja kutsuu integrationDriver()-funktiota testien suorittamisen hallintaa varten.
import 'package:integration_test/integration_test_driver.dart';
Future<void> main() async {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();
await integrationDriver();
}Sovellus integraatiotestausta varten
Luodaan yksinkertainen laskurisovellus integraatiotestin havainnollistamista varten. Huomaa, että lisäämme Key-avaimet widgeteihin, jotka haluamme löytää ja joiden kanssa haluamme toimia testeissä.
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),
),
),
);
}
}Integraatiotestin kirjoittaminen
Kirjoitetaan nyt varsinainen testi tiedostoon integration_test/app_test.dart. Käytämme tester.pumpAndSettle()-menetelmää animaatioiden ja käyttöliittymän päivitysten valmistumisen odottamiseen sekä tester.tap()-menetelmää käyttäjän toiminnan simulointiin.
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');
});
});
}Integraatiotestien suorittaminen
Integraatiotestit suoritetaan projektin juurihakemistosta flutter drive-komennolla. Varmistakaa, että Android-emulaattori tai -laite taikka iOS-simulaattori tai -laite on käynnissä.
Tämä komento käskee Flutteria käyttämään testiajuria integraatiotestisarjan suorittamiseen sovellusta vasten.
flutter drive \
--driver=test_driver/app_test.dart \
--target=integration_test/app_test.dartKehittyneet toiminnot
Integraatiotesteillä voidaan simuloida monimutkaisia käyttäjän työnkulkuja useiden näyttöjen välillä. Voitte:
- Syöttää tekstiä: Käyttää komentoa
tester.enterText(find.byType(TextField), 'Hello'); - Vierittää: Käyttää
tester.scrollUntilVisible()-menetelmää widgetien tuomiseksi näkyviin. - Navigoida: Napauttaa painikkeita, jotka käynnistävät
Navigator.push()- taiNavigator.pop()-kutsun, ja tarkistaa näyttöjen vaihtumisen.
Käyttäkää aina Key-avaimia widgetien luotettavaan tunnistamiseen, erityisesti dynaamisten käyttöliittymien tai useiden samankaltaisten widgetien yhteydessä.
Pikatarkistus
Mitkä seuraavista ovat integraatiotestien käytön tärkeimmät hyödyt Flutter-kehityksessä?
Kertaus: integraatiotestaus
Hienoa työtä! Olette oppineet Flutterin integraatiotestauksesta. Käsittelimme seuraavat aiheet:
- Mitä integraatiotestit ovat ja miksi ne ovat ratkaisevan tärkeitä sovelluksen vakaudelle.
- Kuinka
integration_test-paketti määritetään. - Integraatiotestien rakenne ja niiden kirjoittaminen.
- Kuinka testejä suoritetaan
flutter drive-komennolla.
Integraatiotestit antavat vahvan varmuuden siitä, että sovelluksen ominaisuudet toimivat saumattomasti yhdessä käyttäjän kokemalla tavalla.
Opi Dart tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 22
- Oppitunnit
- 88
Usein kysytyt kysymykset
Onko oppitunti ”Integraatiotestaus” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Mobiilikehitys Flutterilla-oppimispolun 3 oppituntia, myös oppitunnin “Integraatiotestaus”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Mobiilikehitys Flutterilla-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Integraatiotestaus”?
Suorittakaa integraatiotestejä useiden widgetien välisen vuorovaikutuksen ja sovelluksen kokonaisten käyttäjäpolkujen validoimiseksi. Harjoittelet Mobiilikehitys Flutterilla-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Mobiilikehitys Flutterilla-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Mobiilikehitys Flutterilla-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.
Kuinka kauan ”Integraatiotestaus”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Mobiilikehitys Flutterilla-oppitunnilla?
Kyllä. Jokainen Mobiilikehitys Flutterilla-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Widget-testauksen periaatteet
- Integraatiotestaus
- Virheenkorjaustyökalut ja -tekniikat
- Yksikkötestaus ja mockaus