O unitate

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
O unitate
software
Tip cadru de testare unitară
Dezvoltator Ed Falis [1]
Ultima versiune 3.8
Sistem de operare Multiplatform
Limba Ada
Licență GPL
( licență gratuită )
Site-ul web libre.adacore.com/tools/aunit/

AUnit este un cadru de testare unitară a familiei xUnit pentru limba Ada , dezvoltat inițial de Ed Falis și întreținut de AdaCore , distribuit împreună cu GNAT . [1]

Cadru

AUnit constă dintr-un set de pachete care implementează diferitele componente ale cadrului, a cărui rădăcină este pachetul AUnit :

  • AUnit
    • Assertions
    • Last_Chanche_Handler
    • Memory
      • Utils
    • Options
    • Reporter
      • GNATtest
      • Text
      • XML
    • Run
    • Simple_Test_Cases
    • Test_Caller
    • Test_Cases
      • Registration
      • Specific_Test_Case_Registration
    • Test_Filters
    • Test_Fixtures
    • Test_Results
    • Test_Suites
    • Tests
    • Time_Measure

Cazuri de testare simple

Tipul rezumat etichetat AUnit.Simple_Test_Cases.Test_Case definește cel mai simplu caz de testare, din care derivă celelalte cazuri de testare din bibliotecă și care poate fi utilizat ca bază pentru tipurile de cazuri de test definite de utilizator. Pentru acest tip sunt definite unele rutine care, prin suprascriere , permit specificarea comportamentului:

 funcția Nume ( T : Test_Case ) return Message_String este abstract ;
procedura Run_Test ( T : in out Test_Case ) este abstractă ;
Procedura Set_Up ( T : in out Test_Case );
procedura Tear_Down ( T : in out Test_Case );

Funcția Name definește numele cazului de testare și procedura Run_Test conține codul pentru a rula în test, cu orice afirmații definite în pachetul AUnit.Assertions . Procedurile Set_Up și Tear_Down definesc orice acțiuni care trebuie efectuate înainte și după fiecare test, de obicei pentru a configura sau curăța mediul de execuție. [2]

Un exemplu este următorul:

 cu AUnit ;
cu AUnit.Simple_Test_Cases ;
pachetul Simple_Test este
   tip Test este nou AUnit . Simple_Test_Cases . Test_Case cu înregistrare nulă ;
   funcția de suprascriere Nume ( T : Test ) returnează AUnit . Message_String este
      ( dacă este adevărat atunci AUnit . Format ( "Operațiuni de testare" ) altfel AUnit . Format ( "" ));
   procedura de suprascriere Run_Test ( T : in out Test );
end Simple_Test ;

cu AUnit.Assertions ; utilizați AUnit.Assertions ;
corpul pachetului Simple_Test este
   procedura Run_Test ( T : in out Test ) este
      I , J : Număr întreg : = 1 ;
   începe
      Afirmați ( I + J = 2 , „Eroare în sumă” );
   încheie Run_Test ;
end Simple_Test ;

Cazuri de testare

În plus față de cel mai de bază tip definit în AUnit.Simple_Test_Cases , cadrul definește tipul abstract AUnit.Test_Cases.Test_Case , care vă permite să compuneți mai multe rutine într-un caz de testare. Procedura Run_Test este deja definită și nu trebuie înlocuită, iar pachetul oferă, de asemenea, un tip pentru rutinele de testare și unele proceduri:

 tip Test_Routine este procedura de acces (Test: în afara Test_Case "clasa);
procedura Register_Tests ( Test : in out Test_Case ) este abstractă ;
procedure Set_Up_Case ( Test : in out Test_Case );
procedure Tear_Down_Case ( Test : in out Test_Case );

Rutinele de testare individuale, care conțin aserțiunile, trebuie să fie accesibile ca Test_Routine , iar Register_Tests procedura vă permite să înregistrați rutine de testare care urmează să fie executate, prin AUnit.Test_Cases.Registration.Register_Routine procedurii, în timp ce Set_Up_Case și Tear_Down_Case rutine sunt executate , respectiv înainte și după întregul caz de testare (adică setul de rutine înregistrate). [2]

Dispozitiv de testare

Tipul abstract AUnit.Test_Fixtures.Test_Fixture vă permite să definiți fixtures , ale căror variabile sunt câmpurile adăugate prin extinderea înregistrării. Fiecare rutină de testare are propria instanță a dispozitivului, deci nu există riscul ca unele teste să le afecteze pe celelalte prin efecte secundare . De asemenea, pentru corpuri de iluminat este posibil să se definească procedurile Set_Up și Tear_Down , efectuate respectiv înainte și după fiecare rutină de testare. Testele pot fi create, de exemplu, într-o suită, începând de la dispozitiv prin instanțierea pachetului generic AUnit.Test_Caller și invocând funcția Create . [2]

 cu AUnit ;
cu AUnit.Test_Fixtures ;

pachetul Test_Con_Fixture este
   tip Test este nou AUnit . Test_Fixtures . Test_Fixture cu înregistrare
      I , J : Întreg ;
   înregistrare finală ;
   procedura de suprascriere Set_Up ( T : in out Test );
   procedure Test_Subtrazione ( T : in out Test );
end Test_Con_Fixture ;

cu AUnit.Assertions ; utilizați AUnit.Assertions ;
corpul pachetului Test_Con_Fixture este
   procedura Set_Up ( T : in out Test ) este
   începe
      T. I : = 1 ;
      T. J : = 1 ;
   end Set_Up ;

   procedure Test_Subtrazione ( T : in out Test ) este
   începe
      Afirmați (T. I - T. J = 0, "Eroare la scădere");
   end Test_Subtraction ;
end Test_Con_Fixture ;

Suită

Mai multe cazuri de testare pot fi combinate într-o singură suită de testare, utilizând tipurile definite în AUnit.Test_Suites . O suită constă dintr-un pachet care conține o funcție Suite , care returnează un acces la un obiect de tip Test_Suite , la care au fost adăugate cazurile de testare care trebuie executate. Testele pot fi alocate static sau dinamic în corpul pachetului și sunt adăugate în suită prin procedura Add_Test . [2] Suitele și testele sunt implementate cu modelul compozit , deoarece au un tip de bază în comun; deoarece procedura Add_Test acceptă ca parametru un argument de tip Test_Suite'Class pentru elementul care trebuie adăugat, este de asemenea posibil să combinați mai multe suite adăugând una la cealaltă. [3]

De exemplu, pentru a crea o suită care efectuează cele două teste definite în exemplele anterioare (rețineți că, în timp ce primul este alocat static, al doilea, bazat pe un dispozitiv fix, este creat cu funcția AUnit.Test_Caller.Create ):

 cu AUnit.Test_Suites ; utilizați AUnit.Test_Suites ;
pachetul Test_Suite este
   function Suite return Access_Test_Suite ;
end Test_Suite ;

cu Simple_Test ;
cu Test_Con_Fixture ;
cu AUnit.Test_Caller ;
corpul pachetului Test_Suite este
   pachet Apelant este nou AUnit.Test_Caller ( Test_Con_Fixture.Test );
   T : aliased Simple_Test . Test ;

   function Suite return Return_Test_Suite este
      S : constant Access_Test_Suite : = new Test_Suite ;
   începe
      S. Add_Test ( T ' Access );
      S. Add_Test ( Caller . Create ( "Test scăderea" , Test_Con_Fixture . Test_Subtraction ' Access ));
      retur S ;
   end Suite ;
end Test_Suite ;

Reporter

O suită poate fi rulată printr-un reporter, care efectuează diferitele teste conținute și generează un raport. Cadrul oferă două tipuri implicite pentru reporter care generează o singură ieșire la sfârșitul executării tuturor testelor; una ( AUnit.Reporter.Text.Text_Reporter ) returnează o ieșire în text simplu și poate fi utilizată pe linia de comandă, în timp ce cealaltă ( AUnit.Reporter.XML.XML_Reporter ) returnează o ieșire în XML , utilă pentru generarea fișierelor de raport sau includerea rularea testelor unitare într-un mediu de dezvoltare integrat. [2] Versiunea AUnit distribuită cu GNAT conține și reporterul AUnit.Reporter.GNATtest.GNATtest_Reporter , utilizat pentru testele generate automat cu instrumentul GNATtest, inclus de exemplu în mediul GNAT Programming Studio . [4]

Un exemplu de program pentru rularea suitei definit în exemplul anterior, generând un raport de linie de comandă în text simplu:

 cu Test_Suite ;
cu AUnit.Run ;
cu AUnit.Reporter.Text ;
procedura Execute_Test este
   procedura Executare este nouă AUnit . Aleargă . Test_Runner ( Test_Suite . Suite );
   Reporter : AUnit . Reporter . Text . Text_Reporter ;
începe
   Reporter . Set_Use_ANSI_Colors ( True ); - utilizați culori în ieșirea din linia de comandă
   Run ( Reporter );
încheie Run_Test ;

Notă

  1. ^ a b AUnit , la libre.adacore.com , AdaCore.
  2. ^ a b c d și AUnit Cookbook , pe docs.adacore.com , AdaCore, 8 august 2015 (arhivat din original la 30 august 2015) .
  3. ^ Comentarii la codul sursă al fișierului aunit-test.ads din cadrul AUnit distribuit cu GNAT GPL Edition.
  4. ^ Comentarii la codul sursă al fișierului aunit-reporter-gnattest.ads din cadrul AUnit distribuit cu GNAT GPL Edition.

linkuri externe

  • AUnit Cookbook , pe docs.adacore.com , AdaCore, 8 august 2015 (arhivat din original la 30 august 2015) .
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT