Viadeo Twitter Google Bookmarks ! Facebook Digg del.icio.us MySpace Yahoo MyWeb Blinklist Netvouz Reddit Simpy StumbleUpon Bookmarks Windows Live Favorites 
Logo Documentation Qt ·  Page d'accueil  ·  Toutes les classes  ·  Toutes les fonctions  ·  Vues d'ensemble  · 

Chapter 3: Data driven testing

The first page of this tutorial gave an example of testing creation of a contact:

    creating_a_contact: function()
    {
        // Start the application
        startApplication( "Contacts" );

        // Open the options menu and choose "New contact"
        select( "New contact", optionsMenu() );

        // Enter some details in the "Name" and "Emails" fields
        enter( "Frank Grimes", "Name" );
        enter( "frank@example.com", "Emails" );

        // Select 'Back' from the softkey menu to commit changes
        select( "Back", softMenu() );

        // We should now be at the contacts list.
        // Verify that we can select the contact we just created.
        select( "Frank Grimes" );

        // We should now be viewing the contact.
        // Move to "Details" tab.
        select( "Details", tabBar() );

        // Now verify that the details screen contains
        // the expected details.
        var text = getText();
        verify( text.contains("Frank Grimes") );
        verify( text.contains("frank@example.com") );
    }

One problem with this test function is that only one set of values is tested. If we want to test additional values, the best way to do it is with QtUiTest's built-in support for data driven testing.

We create a new object, named the same as our testfunction with '_data' appended, and we make the object consist of a series of arrays:

    creating_a_contact_data: {
        simple:          [ "Frank Grimes",        "frank@example.com", "+61 0321 FRANK" ],
        no_email:        [ "Bob Jones",           undefined,          "+61 0321 BOB"   ],
        with_middlename: [ "Jane Middlename Doe", "jmd@example.com",      undefined        ]
    }

testcase.creating_a_contact_data is a table of test data with rows simple, no_email and with_middlename. Each row has 3 columns, and these are passed to the creating_a_contact test function as the arguments name, email, homephone in the example below:

    creating_a_contact: function(name, email, homephone)
    {
        // Start the application
        startApplication( "Contacts" );

        // Open the options menu and choose "New contact"
        select( "New contact", optionsMenu() );

        // Enter details
        enter( name, "Name" );
        enter( email, "Emails" );
        enter( homephone, "Home Phone" );

        // Select 'Back' from the softkey menu to commit changes
        select( "Back", softMenu() );

        // We should now be at the contacts list.
        // Verify that we can select the contact we just created.
        select( name );

        // We should now be viewing the contact.
        // Move to "Details" tab.
        select( "Details", tabBar() );

        // Now verify that the details screen contains
        // the expected details.
        var text = getText();
        if (name != undefined)      verify( text.contains(name) );
        if (email != undefined)     verify( text.contains(email) );
        if (homephone != undefined) verify( text.contains(homephone) );
    }

This test is now much more extensible. New test cases can simply be added as new rows to the testdata table and will automatically be tested without needing to add further logic to the test function.

[Previous: Chapter 2] [Contents] [Next: Chapter 4]

Publicité

Best Of

Actualités les plus lues

Semaine
Mois
Année
  1. « Quelque chose ne va vraiment pas avec les développeurs "modernes" », un développeur à "l'ancienne" critique la multiplication des bibliothèques 64
  2. Apercevoir la troisième dimension ou l'utilisation multithreadée d'OpenGL dans Qt, un article des Qt Quarterly traduit par Guillaume Belz 0
  3. Les développeurs ignorent-ils trop les failles découvertes dans leur code ? Prenez-vous en compte les remarques des autres ? 17
  4. BlackBerry 10 : premières images du prochain OS de RIM qui devrait intégrer des widgets et des tuiles inspirées de Windows Phone 0
  5. Quelles nouveautés de C++11 Visual C++ doit-il rapidement intégrer ? Donnez-nous votre avis 10
  6. Adieu qmake, bienvenue qbs : Qt Building Suite, un outil déclaratif et extensible pour la compilation de projets Qt 17
  7. La rubrique Qt a besoin de vous ! 1
Page suivante

Le Qt Quarterly au hasard

Logo

Implémenter un mutex en lecture et en écriture

Qt Quarterly est la revue trimestrielle proposée par Nokia et à destination des développeurs Qt. Ces articles d'une grande qualité technique sont rédigés par des experts Qt. Lire l'article.

Communauté

Ressources

Liens utiles

Contact

  • Vous souhaitez rejoindre la rédaction ou proposer un tutoriel, une traduction, une question... ? Postez dans le forum Contribuez ou contactez-nous par MP ou par email (voir en bas de page).

Qt dans le magazine

Cette page est une traduction d'une page de la documentation de Qt, écrite par Nokia Corporation and/or its subsidiary(-ies). Les éventuels problèmes résultant d'une mauvaise traduction ne sont pas imputables à Nokia. Qt qtextended4.4
Copyright © 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon, vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.
Vous avez déniché une erreur ? Un bug ? Une redirection cassée ? Ou tout autre problème, quel qu'il soit ? Ou bien vous désirez participer à ce projet de traduction ? N'hésitez pas à nous contacter ou par MP !
 
 
 
 
Partenaires

Hébergement Web