JUnit Märkuste õpetus koos näitega: Mis on @Test ja @After
Mis on JUnit Märkused?
JUnit Annotatsioonid on süntaktiliste metaandmete erivorm, mida saab lisada Java lähtekood koodi paremaks loetavuse ja struktuuri tagamiseks. Annoteerida saab muutujaid, parameetreid, pakette, meetodeid ja klasse. Junit4-s võeti kasutusele märkused, mis teeb Java kood loetavamaks ja lihtsamaks. See on suur erinevus Junit3 ja Junit4 vahel, et Junit4 põhineb annotatsioonil.
Junit5 annotatsioonide tundmisega saab hõlpsasti õppida ja rakendada a JUnit katsetada. Allpool on toodud olulised ja sageli kasutatavad JUnit märkuste loend:
S.No. | Annotatsioonid | Kirjeldus |
---|---|---|
1. | @Test | See märkus asendab faili org.junit.TestCase, mis näitab, et avaliku tühisuse meetodit, millele see on lisatud, saab käivitada testjuhtumina. |
2. | @Enne | Seda märkust kasutatakse juhul, kui soovite enne iga testjuhtumit täita mõnda avaldust, näiteks eeltingimusi. |
3. | @BeforeClass | Seda märkust kasutatakse juhul, kui soovid täita mõned laused enne, kui kõik testjuhtumid, nt testühenduse jaoks, peavad olema sooritatud enne kõiki testjuhtumeid. |
4. | @Pärast | Seda märkust saab kasutada, kui soovite pärast iga lauset täita mõned laused Testjuhtum nt muutujate lähtestamiseks, ajutiste failide, muutujate jne kustutamiseks. |
5. | @AfterClass | Seda märkust saab kasutada, kui soovid täita mõningaid lauseid pärast kõiki testjuhtumeid, näiteks Ressursside vabastamine pärast kõigi testjuhtumite täitmist. |
6. | @Ignoreerib | Seda märkust saab kasutada juhul, kui soovite testi täitmise ajal eirata mõnda lauset, näiteks keelata mõned testijuhtumid testi täitmise ajal. |
7. | @Test(timeout=500) | Seda märkust saab kasutada, kui soovite testi täitmise ajal teatud ajalõpu määrata, nt kui töötate mõne SLA (teenusetaseme lepingu) alusel ja testid tuleb teatud aja jooksul lõpule viia. |
8. | @Test(expected=IllegalArgumentException.class) | Seda märkust saab kasutada, kui soovite testi täitmise ajal käsitleda mõnda erandit. Näiteks kui soovite kontrollida, kas konkreetne meetod teeb kindlaksmääratud erandi või mitte. |
JUnit Märkuste näide
Loome klassi, mis hõlmab olulisi JUnit annotatsioonid lihtsate trükilausetega ja käivitage see testimisklassiga:
Step 1) Kaaluge allolevat java klassi, millel on erinevad meetodid, mis on lisatud ülaltoodud annotatsioonidele:
JunitAnnotationsExample.java
package guru99.junit; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.util.ArrayList; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; public class JunitAnnotationsExample { private ArrayList<String> list; @BeforeClass public static void m1() { System.out.println("Using @BeforeClass , executed before all test cases "); } @Before public void m2() { list = new ArrayList<String>(); System.out.println("Using @Before annotations ,executed before each test cases "); } @AfterClass public static void m3() { System.out.println("Using @AfterClass ,executed after all test cases"); } @After public void m4() { list.clear(); System.out.println("Using @After ,executed after each test cases"); } @Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); } @Ignore public void m6() { System.out.println("Using @Ignore , this execution is ignored"); } @Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); } @Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); } }
Step 2) loome testjooksja klassi ülaltoodud testi täitmiseks:
TestRunner.java
package guru99.junit; import org.junit.runner.JUnitCore; import org.junit.runner.Result; import org.junit.runner.notification.Failure; public class TestRunner { public static void main(String[] args) { Result result = JUnitCore.runClasses(JunitAnnotationsExample.class); for (Failure failure : result.getFailures()) { System.out.println(failure.toString()); } System.out.println("Result=="+result.wasSuccessful()); } }
Oodatud Tulemus
- Kõik testjuhtumid täidetakse ükshaaval ja kõiki printimislauseid saab näha konsoolil.
- Nagu ülaltoodud tabelis @Before annotation in JUnit, @BeforeClass [ meetod m1() ja m2() ] käivitatakse vastavalt enne iga ja enne kõiki testjuhtumeid.
- Samamoodi @After in JUnit, @afterClass (meetod m3() ja m4()) käivitatakse vastavalt iga ja pärast kõiki testjuhtumeid. @ignoreeri (meetod m6()) käsitletakse testi ignoreerimisena.
Analüüsime üksikasjalikult ülaltoodud java klassis kasutatud testjuhtumeid:
- Vaatleme meetodit m5(), nagu on näidatud allpool:
@Test public void m5() { list.add("test"); assertFalse(list.isEmpty()); assertEquals(1, list.size()); }
Ülaltoodud meetodil lisate stringi muutujasse "list" nii
- list.isEmpty() tagastab vale.
- assertFalse(list.isEmpty()) peab tagastama tõeseks.
- Selle tulemusena katsejuhtum sooritama.
Kuna olete loendisse lisanud ainult ühe stringi, on suurus üks.
- list.size() peab tagastama int väärtuse "1" .
- So assertEquals(1, list.size()) peab tagastama tõeseks.
- Selle tulemusena katsejuhtum sooritama.
- Vaatleme meetodit m7(), nagu on näidatud allpool:
@Test(timeout = 10) public void m7() { System.out.println("Using @Test(timeout),it can be used to enforce timeout in JUnit4 test case"); }
Nagu eespool arutatud @Test(ajalõpp = 10)annotatsiooni kasutatakse katsejuhtumi ajalõpu jõustamiseks.
- Vaatleme meetodit m8(), nagu on näidatud allpool:
@Test(expected = NoSuchMethodException.class) public void m8() { System.out.println("Using @Test(expected) ,it will check for specified exception during its execution"); }
Nagu eespool arutatud @Test (oodatud) kontrollib selle täitmise ajal määratud erandit, nii et meetod m8() viskab "Sellist meetodi erandit pole". Selle tulemusena viiakse test läbi erandiga.
Kuna kõik testjuhtumid on läbitud, on selle tulemuseks edukas testi täitmine.
Tegelik tulemus
Kuna ülaltoodud näites on kolm testjuhtumit, täidetakse kõik testjuhtumid ükshaaval. Vaata väljundit allpool:
Vaadake allolevaid printimisavaldusi, mida saab näha konsoolil:
Kasutades @BeforeClass , käivitatakse enne kõiki testjuhtumeid
@Before märkuste kasutamine, käivitatakse enne iga testjuhtumit
Kasutades @After, käivitatakse pärast iga testjuhtumit
@Before märkuste kasutamine, käivitatakse enne iga testjuhtumit
Kasutades @Test(timeout), saab seda kasutada ajalõpu jõustamiseks JUnit4 katsejuhtumit
Kasutades @After, käivitatakse pärast iga testjuhtumit
@Before märkuste kasutamine, käivitatakse enne iga testjuhtumit
Kasutades @Test(expected), kontrollib see täitmise ajal määratud erandit
Kasutades @After, käivitatakse pärast iga testjuhtumit
Kasutades @AfterClassi, käivitatakse pärast kõiki testjuhtumeid
JUnit Kinnitusklass
See klass pakub hulga kinnitusmeetodeid, mis on kasulikud testjuhtumi kirjutamisel. Kui kõik kinnituslaused on läbitud, on testi tulemused edukad. Kui mõni kinnituslause ebaõnnestub, on testi tulemused ebaõnnestunud.
Nagu varem nägite, kirjeldab allolev tabel olulisi Assert meetodeid ja kirjeldust.
S.No. | Meetod | Kirjeldus |
---|---|---|
1. | void assertEquals (oodatav tõeväärtus, tegelik tõeväärtus) | See kontrollib, kas kaks väärtust on võrdsed objektiklassi võrdse meetodiga |
2. | void assertFalse (tõve tingimus) | funktsiooni eesmärk on kontrollida, kas tingimus on vale. |
3. | void assertNotNull(Objektobjekt) | Funktsioon "assertNotNull" on kontrollida, kas objekt pole null. |
4. | void assertNull (objektobjekt) | Funktsioon "assertNull" on kontrollida, kas objekt on null. |
5. | void assertTrue (tõve tingimus) | Funktsioon "assertTrue" on kontrollida, kas tingimus on tõene. |
6. | tühine ebaõnnestumine () | Kui soovite esitada väite vea, on teil fail(), mille tulemuseks on alati ebaõnnestunud otsus. |
7. | void assertSame([String teade] | Funktsioon "assertSame" on kontrollida, kas need kaks objekti viitavad samale objektile. |
8. | void assertNotSame([stringsõnum] | Funktsioon "assertNotSame" on kontrollida, et kaks objekti ei viitaks samale objektile. |
JUnit Testjuhtumite klass
Mitme testi käivitamiseks on TestCase klass saadaval org.junit.TestCase paketid. @Testi annotatsioon ütleb JUnit et seda avaliku tühisuse meetodit (siin testjuhtum), millele see on lisatud, saab käivitada testjuhtumina.
Allolevas tabelis on toodud mõned olulised meetodid, mis on saadaval org.junit.TestCase klass:
S.No. | Meetod | Kirjeldus |
---|---|---|
1. | int countTestCases() | Seda meetodit kasutatakse katsejuhtumite arvu loendamiseks jooks (TestResult tr) meetod. |
2. | TestResult createResult() | Seda meetodit kasutatakse a Testi tulemus objekt |
3. | String getName() | See meetod tagastab stringi, mis pole midagi muud kui a TestCase. |
4. | TestResult run() | Seda meetodit kasutatakse testi läbiviimiseks, mis tagastab a Testi tulemus objekt |
5. | tühine jooks (testitulemus) | Seda meetodit kasutatakse testi läbiviimiseks, millel on a Testi tulemus objekt, mis ei tagasta midagi. |
6. | void setName (stringi nimi) | Seda meetodit kasutatakse a nime määramiseks TestCase. |
7. | void setUp() | Seda meetodit kasutatakse ressursi seose koodi kirjutamiseks. nt Loo andmebaasiühendus. |
8. | tühine tearDown() | Seda meetodit kasutatakse ressursi väljalaskekoodi kirjutamiseks. nt Vabasta andmebaasiühendus pärast tehingutoimingu sooritamist. |
JUnit Testi tulemuste klass
Kui sooritate testi, tagastab see tulemuse (kujul Testi tulemus objekt). Seda TestResult objekti saab kasutada tulemuseks oleva objekti analüüsimiseks. See testi tulemus võib olla ebaõnnestunud või edukas.
Allolevast tabelist leiate olulised klassis org.junit.TestResult kasutatavad meetodid:
S.No. | Meetod | Kirjeldus |
---|---|---|
1. | void addError (Testi test, visatav t) | Seda meetodit kasutatakse juhul, kui soovite testile vea lisada. |
2. | void addFailure(Test test, AssertionFailedError t) | Seda meetodit kasutatakse juhul, kui soovite rikete loendisse lisada rikke. |
3. | tühine lõputest (testi test) | Seda meetodit kasutatakse testi sooritamisest (lõpetamisest) teavitamiseks |
4. | int errorCount() | Seda meetodit kasutatakse vea tuvastamiseks testimise ajal. |
5. | Loendamine vead () | See meetod tagastab lihtsalt vigade kogumi (loend siin). |
6. | int errorCount() | Seda meetodit kasutatakse testimise käigus tuvastatud vigade arvu saamiseks. |
7. | tühikäik (TestCase test) | Seda meetodit kasutatakse testjuhtumi läbiviimiseks. |
8. | int runCount() | See meetod lihtsalt loeb sooritatud testi. |
9. | tühine algusTest (testi test) | Seda meetodit kasutatakse testi alustamisest teatamiseks. |
10. | tühine peatus () | Seda meetodit kasutatakse peatamise katsetamiseks. |
JUnit Test Suite Class
Kui soovite läbi viia mitu testi kindlas järjekorras, saate seda teha, ühendades kõik testid ühte kohta. Seda kohta kutsutakse testkomplektideks.
Vaadake allolevat tabelit, et näha olulisi meetodeid, mida kasutatakse org.junit.TestSuite klass:
S.No. | Meetod | Kirjeldus |
---|---|---|
1. | tühine lisaTest (testi test) | Seda meetodit kasutatakse juhul, kui soovite komplektile testi lisada. |
2. | void addTestSuite(klass testClass) | Seda meetodit kasutatakse juhul, kui soovite komplekti testi lisamise ajal klassi täpsustada. |
3. | int countTestCases() | Seda meetodit kasutatakse testjuhtumite arvu loendamiseks. |
4. | String getName() | Seda meetodit kasutatakse testkomplekti nime saamiseks. |
5. | tühine jooks (testitulemus) | Seda meetodit kasutatakse testi läbiviimiseks ja testitulemuste kogumiseks Testi tulemus objekt |
6. | void setName (stringi nimi) | Seda meetodit kasutatakse nime määramiseks TestSuite. |
7. | Test testAt(int index) | Seda meetodit kasutatakse juhul, kui soovite testi antud indeksiga tagastada. |
8. | int testCount() | Seda meetodit kasutatakse juhul, kui soovite komplektis arvukalt teste tagastada. |
9. | staatilise testi hoiatus (stringsõnum) | See meetod tagastab testi, mis ebaõnnestub ja logib hoiatusteate. |
kokkuvõte
- JUnit pakub kaasaskantavat API-d, mis pakub kõiki olulisi klasse ja Selenium ühikutesti kirjutamisel kasulikud märkused.
- Tunnid, mis on testitöö kirjutamisel väga kasulikud
- org.junit.Assert
- org.junit.TestCase
- org.junit.TestResult
- org.junit.TestSuite
- Oluline ja sageli kasutatav JUnit märkuste loend@Enne@BeforeClass@Pärast
@AfterClass
@Test
@Ignoreeri