„JUnit“ žinyno „Java“ kodo testavimas – pamoka. Java įgūdžių testas – pagrindai Internetinis java rabarbarų testas

Testuvannya toli gražu nėra zavzhd buvaє mums smagu ir tsіkavim. Tsey procesas zvchichay dosit trivaly ir monotoniško darbo pakartojimų valanda. Na, atrodo, kad neseniai programuotojai naudojo standartinę visnovka arba derintuvą, kad išbandytų java klasę.

Šiame straipsnyje aprašysiu JUnit 4 biblioteką, kad ji galėtų padėti automatizuoti testų rašymo procesą.

Norėdami parodyti pagrindines JUnit Framework galimybes, parašykite primityvią Java klasę ir sužinokite apie ją. Ši matymo klasė turi du metodus – begalinio skaičiaus faktorialo ir dviejų skaičių sumos reikšmę. Be to, klasės kopijoje bus viklikiv metodų kopija.

Viešoji klasė MathFunc ( int skambučiai; viešieji int getCalls() ( grįžtantys skambučiai; ) viešasis ilgas faktorialus (int numeris) ( skambučiai++; if (skaičius 1) ( for (int i = 1; i

Dabar parašykime vieneto testą. Kuriems sukuriame klasę iš daugybės testavimo metodų. Akivaizdu, kad klasė gali būti kerštas ir standartiniai papildomi metodai. Kad bėgikų testai galėtų akimirksniu nustatyti kas, kas, testavimo metodus ir būtina pažymėti @Test anotaciją.

Anotacijai gali būti pateikti šie parametrai:

  • tikimasi – nurodykite, koks mirktelėjimas bus sugeneruotas naudojant metodą (div. butt žemiau);
  • timeout – po tam tikros valandos milisekundėmis prisekite testą prie testo ir zarahuvat jį kaip nesėkmingą.

Jei norite nurodyti, kad pirmąjį testą reikia praleisti, pažymėkite jį kaip @Ignore anotation. Jei norite, galite tiesiog ištrinti @Test instrukciją.

Na, pavyzdžiui, jums reikia dainos konteksto odos testo scenarijui, pavyzdžiui, klasės egzempliorių kūrimo atsilikimo. O po to būtina patikrinti rezervuotus išteklius. Kaip manote, kokios anotacijos reikia @Prieš ir @Po. Po metodo, pažymėto @Before, bus atliktas odos testo kritimas, o po metodo, pažymėto @Po, – odos testo kritimas.

Jei to resurso lygio inicijavimą reikia atlikti tik vieną kartą – tik po visų testų – įvertinkite porą komentarų @BeforeClass ir @AfterClass.

Ir pati ašis i yra bandomoji klasė iš dekіlkom su bandymo scenarijais:

Viešoji klasė MathFuncTest (privati ​​MathFunc matematika; @Prieš public void init() ( math = new MathFunc(); ) @Po public void tearDown() ( math = null; ) @Test public void calls() ( assertEquals(0, math) .getCalls()), math.factorial(1); assertEquals(1, math.getCalls()); math.factorial(1); ( assertTrue(math.factorial(0) == 1); assertTrue(math.factorial) (1) == 1); assertTrue(math.factorial(5) == 120); ) @Test(expected = IllegalArgumentException.class) public void factorialNeigiamas() ( math.factorial(-1); ) @Ignore @Test public void todo() ( assertTrue(math.plus(1, 1) == 3); ) )

Skambučių metodas patikrina skambėjimo teisingumą. Faktorinis metodas tikrina faktorinio skaičiavimo teisingumą tam tikroms standartinėms reikšmėms. FactorialNegative metodas nepaiso to, kad esant neigiamoms faktorialo reikšmėms, jis pateiks NelegalArgumentException. Todo metodas bus ignoruojamas. Jei eksperimentuojate su kodu, pabandykite išvalyti komentarą @Ignore.

Metodas assertTrue patikrina, ar rezultatas patikrintas. Deyakі іnshі metodai, yakі gali tapti naudai:

  • assertEquals – sugeneruojamas rezultato patvirtinimas ir rezultato atėmimas;
  • assertNull - viruso rezultatas yra nulis;
  • assertNotNull - virazu vіdminny vіd null rezultatas;
  • AssertSame – objekto patvirtinimas ir atmetimas vienu ir tuo pačiu objektu.
  • fail – kaltinimų generavimo metodas AssertionError – dodaemo, kur tai nėra programos antraštės kaltė.

Mūsų į dabartinį pasaulį IDE žino, kaip tiesiog vykdyti projekto testus. Deja, jei norite juos paleisti rankiniu būdu, kad gautumėte pagalbos dėl programos kodo. Kam galite pagreitinti Runner "om. Naudokite tekstą - junit.textui.TestRunner, grafines versijas - junit.swingui.TestRunner, junit.awtui.TestRunner.

Tačiau modernesnis metodas yra toks pat kaip JUnitCore klasė. Pridėkite kitą pagrindinį metodą prie MathFuncTest klasės:

Vieša statinė void main(String args) meta Išimtį ( JUnitCore runner = new JUnitCore(); Result result = runner.run(MathFuncTest.class); System.out.println("paleisti testus: " + result.getRunCount()); System.out.println("nepavyko testai: " + result.getFailureCount()); System.out.println("nepaisomi testai: " + result.getIgnoreCount()); System.out.println("sėkmė: " + rezultatas .buvo sėkmingas()); )

І vikonanny rezultatas:

Vykdyti testus: 3 nepavykę testai: 0 ignoruotų testų: 1 sėkmingas: tiesa

Daugiau ankstyvosios versijos JUnit norėdami parašyti bandomąją klasę, turite išskleisti junit.framework.TestCase. Tada reikia paskirti konstruktorių, kuris priima kaip String parametrą – pavadinsiu metodą – ir perduoti tėvo klasei. Bandymo metodo oda kalta, kad prasideda nuo bandymo priešdėlio. Išteklių inicijavimui ir mastelio keitimui buvo naudojami sąrankos ir išardymo metodai. Trumpai tariant, wow. Na, dabar viskas paprasta, tiesa.

Ašis i visus metus. Šūdas, JUnit Framework yra daug tuo, kas jums padės. Komentarai ir mityba yra apie statistiką.

JUnit- Biblioteka, skirta Java programų vienetiniam testavimui. Kento Becko ir Erico Gamma sukurtas JUnit yra pagrįstas tomis pačiomis xUnit sistemomis įvairioms programavimo kalboms, kurių šaknys yra Kento Becko SUnit for Smalltalk. JUnit sukuria plėtinių ekosistemą – JMock, EasyMock, DbUnit, HttpUnit ir kt.

biblioteka JUnit bula buvo perkeltas kitų MOV, įskaitant PHP (PHPUnit), C# (NUnit), Python (PyUnit), Fortran (fUnit), Delphi (DUnit), Free Pascal (FPCUnit), Perl (testas::Unit), C++ ( CPPUnit), Flex (FlexUnit), JavaScript (JSUnit).

JUnit- Tai yra „Java“ sistema, skirta testavimui, todėl išbandoma daug kodo, pavyzdžiui, metodų ar klasių. Dosvidas, atimant darbo valandas iš JUnit, svarbus kuriant testavimo koncepcijas programinė įranga.

užpakalio testas JUnit

Importuoti org.junit.Test; importuoti junit.framework.Assert; public class MathTest ( @Test public void testEquals() ( Assert.assertEquals(4, 2 + 2); Assert.assertTrue(4 == 2 + 2); ) @Test public void testNotEquals() ( Assert.assertFalse(5 = = 2 + 2 ;))

Reikia JUnit wiki

JUnit leidžia bet kada pakeisti kodą. Jei programa nustos būti dar paprastesnė ir apima anonimines klases bei metodus, pakartotiniam patikrinimui gali prireikti nemažai valandos. Akivaizdu, kad visas procesas gali būti automatizuotas greičiau. Vikoristanija JUnit leidžia perrašyti programos kodą be reikšmingų zuilių ir neužima daug laiko.

vieneto testas klasėms ir funkcijoms bei savo dokumentams, prieš juos pripažįstant jų peržiūros rezultatuose. Ir ne tik dokumentacija, bet ir dokumentacija, kad galėtumėte automatiškai patikrinti kodo atitikimą pateiktoms funkcijoms. Tse zruchno ir dažnai išbando rozroblyayat kaip laiką, todėl і prieš klasės įgyvendinimą. Kūrimas testuojant yra labai populiari technologija, skirta sukurti rimtą programinės įrangos saugumą.

Žiūrėkite testą toje vietoje JUnit testą klasifikatoriuje

Programinės įrangos testavimą galima suskirstyti į du tipus:

  • testuvannya juodas ekranas;
  • baltų ekranų testavimas.

Valandai, kai programa bandoma kaip juodas ekranas, nepriimama gerbti vidinės programos struktūros. Viskas, kas gali būti prasminga, funkcionalu, kaip programa, gali būti saugi. Bandant tokias programas kaip dėžė, atsižvelgiama į vidinę struktūrą, tai yra. metodų klasė. Krym tsgogo, testuvannya galima suskirstyti į chotiri lygius:

  • bandymo blokas - okremih kodo numerio testavimas;
  • integracijos testavimas – abipusio modalumo ir jungtinių robotų komponentų testavimas;
  • sistemos testavimas – visos sistemos kaip visumos testavimas;
  • pirminis tyrimas – paruoštos sistemos sub-bag testavimas vimogamų gyvybingumui nustatyti.

Baltų ekranų paskyrimo ir testavimo testavimo vienetas.

Yra du vienetų testavimo variantai - JUnit 3 ir JUnit 4. Galime pažvelgti į pažeidžiančias versijas, nes senuose projektuose yra 3 versija, kuri palaiko Java 1.4.

3 junitas

Norėdami sukurti testą, sumažinkite TestCase testavimo klasę, prireikus iš naujo apibrėžkite sąrankos ir tearDown metodus ir, svarbiausia, išplėskite testavimo metodus, kurie gali būti pavadinti santrumpa "testas". Kai testas paleidžiamas, bandymo klasės egzempliorius sukuriamas skrydžio metu (atliekant odos testą klasėje, yra klasės egzempliorius), tada įveikiamas setUp metodas, paleidžiamas pats testas ir tada TearDown metodas buvo sumuštas iki galo. Tarsi būtų koks nors kaltinimo būdas, testas laikomas tokiu, kad nepavyksta.

Pastaba: Bandymo metodai turi būti vieši, gali būti statiniai.

Testus sudaro vikonnannya dainavimo kodas ir pakartotinis patikrinimas. Perevіrki daugiausia vykonuyutsya pagalbos klasėje tvirtinti norintis pakeisti tvirtinimo raktinį žodį.

Kaip pavyzdį galime pažvelgti į robotų su eilėmis įrankį, kuris apima tuščios eilutės pakartotinio patikrinimo ir baitų sekos pateikimo 16 eilučių eilutėje metodus:

Viešoji klasė JUnit3StringUtilsTest išplečia TestCase (privatus galutinis žemėlapis toHexStringData = New HashMap(); apsaugotas void setUp() meta išimtį ( toHexStringData. put("", Naujas baitas); 13, 17, 45, 127)); aišku (); ) public void testToHexString() (skirta (Iterator iterator = toHexStringData.keySet().iterator(); iterator.hasNext();) (laukiama paskutinė eilutė = (String)iterator.next(); galutinis baitas testData = (baitas) toHexStringData.get(expected); galutinė eilutė faktinė = StringUtils.toHexString(testData); assertEquals(expected, fact); ) ) //... )

Papildomos galimybės, TestSuite

JUnit gegužės 3 d papildomų galimybių. Pavyzdžiui, galite sugrupuoti viprobuvannya. Kam būtina laimėti klasę TestSuite:

Viešoji klasė JUnit3StringUtilsTestSuite išplečia TestSuite (viešoji JUnit3StringUtilsTestSuite() ( addTestSuite(StringUtilsJUnit3Test.class); addTestSuite(OtherTest1.class); addTestSuite(OtherTest2.class); ) )

Galite pakartoti testą keletą kartų. Kam laimėti pakartotinį testą:

Viešoji klasė JUnit3StringUtilsRepeatedTest išplečia RepeatedTest ( public JUnit3StringUtilsRepeatedTest() ( super(new JUnit3StringUtilsTest(), 100); ) )

Paveldėję testo klasę, pvz., „ExceptionTestCase“, galite pakeisti kodą wikidexclusion:

Viešoji klasė JUnit3StringUtilsExceptionTest išplečia ExceptionTestCase ( viešas JUnit3StringUtilsExceptionTest(galutinis eilutės pavadinimas) ( super(vardas, NullPointerException.class); ) public void testToHexString() ( StringUtils.toHexString(null); ) )

Kaip matote iš aplikacijų, viską padaryti paprasta ir nėra ką rašyti – bent jau kodas JUnit testavimui.

4 JUNTAS

„JUnit 4“ pridėjo naujų „Java 5.0“ funkcijų; Bandytojai gali būti atviri papildomoms pastaboms. Bet kuriuo metu yra daug painiavos iš ankstesnės sistemos versijos. Tuo tarpu viskas, kas buvo peržiūrėta ir pritaikyta, bus praktikuojama naudojant JUnit 4 Crime RepeatedTest, kuris yra naujas naujojoje versijoje.

Kokie pakeitimai pasirodė JUnit 4? Pažvelkime į patį užpakalį, o tada vėl su naujomis galimybėmis:

Viešoji klasė JUnit4StringUtilsTest išplečia Assert (privatus galutinis žemėlapis toHexStringData = naujas HashMap (); @Prieš viešą statinį void setUpToHexStringData() ( toHexStringData.put(", naujas baitas); toHexStringData.put("01020d112d7f", naujas baitas(1,2,13,17,45,127)); toHexStringData.put,("10f" baitas(0,-1,-14,17,-128)); //... ) @Po viešo statinio void tearDownToHexStringData() ( toHexStringData.clear(); ) @Test public void testToHexString() ( for (Žemėlapis) .Įėjimas įrašas: toHexStringData.entrySet()) (galutinis baitas testData = įrašas.getValue(); laukiama galutinė eilutė = entry.getKey(); galutinė eilutė faktinė = StringUtils.toHexString(testData); assertEquals(tikėtas, faktinis); ) ) )

Kas pasikeitė JUnit 4?

  • Dėl atleidimo darbo klasėje galima sumažinti tvirtinti nori neobov'yazkovo.
  • Abstraktus @Prieš reiškia metodus, kurie bus iškviesti prieš bandymų nugalėtojus. Metodas padaryti buti viešoji tuštuma. Čia išgirsite išankstinius testo nustatymus, tuo pačiu ir testo duomenų generavimą (metodas setUpToHexStringData).
  • Galite laimėti instrukcijas @BeforeClass kaip pažymėti metodus, kaip jie bus iškviesti prieš sukuriant testo klasės kopiją; kaltės metodai vieša statinė tuštuma. Pateiktos instrukcijos (metodas) gali būti sens vikoristovuvaty testavimui vienu metu, jei bandymo klasė gali būti išbandyta, vikoristovuyut skirtingi išankstiniai nustatymai arba jei bandomasis vietinis testas atliekamas atskirai, tada valandinis valymas atliekamas odos tyrimui.
  • Abstraktus @Po paskirti metodus, viklikanі po vikonannya testіv. Metodas padaryti buti viešoji tuštuma. Čia resurso veikimas leidžiamas po testo; mūsų vipad - bandymo duomenų išgryninimas (metodas tearDownToHexStringData).
  • Abstraktus @Po pamokų pov'azana už zmіstom z @BeforeClass ale vikonuє metodus išbandę klasę. Jak i u vipadku z @BeforeClass, kaltės metodai vieša statinė tuštuma.
  • Abstraktus @Test nurodyti bandymo metodus. Kaip ir anksčiau, tsі methodi plauti buti viešoji tuštuma. Čia yra išsklaidytos pačios peržiūros. Be to, šioje instrukcijoje galite laimėti du numatytus parametrus - nustatyti vinų skaičių ir skirtąjį laiką - nustatyti valandą, po kurios testas laikomas tokiu, kad jis nepavyks.

Taikykite tinkintą komentarą su parametrais, JUnit testą:

@Test(expected = NullPointerException.class) public void testToHexStringWrong() ( StringUtils.toHexString(null); ) @Test(timeout = 1000) public void infinity() ( while (true); )

JUnit Ignoruoti

Kaip vieną iš testų dėl rimtos priežasties būtina jį įjungti, pavyzdžiui, testas pamažu baigiamas atleidžiant. Testo pataisymas gali būti įtrauktas į lengvą būsimą anotaciją @Ignoruoti. Jei pateikiate šį nurodymą klasėje, visi tos klasės testai bus įtraukti.

@Ignore @Test(timeout = 1000) public void infinity() ( while (true); )

Tatuiruotės taisyklės, JUnit taisyklė

JUnit leidžia įveikti dainas pagal taisyklės sąrašą iki kito karto, kai baigsite testą, o tai išplečia funkcionalumą. Pavyzdžiui, yra taisyklės, kaip nustatyti testo skirtąjį laiką (Timeout), kaltės taškus (ExpectedException), darbui su laiko failais (TemporaryFolder) ir int.

Kad taisyklės būtų kurtesnės, būtina kurti viešas ne statinis lauką į panašaus tipo MethodRule tipą ir pagalbos raktinio žodžio anotacijos yogo tipą taisyklė.

Viešoji klasė JUnitOtherTest ( @Taisyklės viešas galutinis Laikinasis aplankas = New TemporaryFolder (); @Taisyklės viešasis galutinis skirtasis laikas = Naujas laikas ); ) @Test public void testFileWriting() meta IOException (galutinis failo žurnalas = aplankas.newFile("debug.log"); galutinis FileWriter logWriter = naujas FileWriter(log); logWriter.append("Sveiki, "); logWriter. append("Pasaulis!!!"); logWriter.flush(); logWriter.close(); ) @Test public void testExpectedException() išmeta IOException ( thrown.expect(NullPointerException.class); StringUtils.toHexString (null); ) )

Test Suite, JUnit Suite, SuiteClasses

Testo vykdymą galima patobulinti, kad būtų pateikti papildomi komentarai @RunWith. Testo klases, kurias galima naudoti su savo testavimo metodais, galima paimti iš testų rinkinių (Suite). Pavyzdžiui, buvo sukurtos dvi testavimo objektų klasės: TestFilter, TestConnect. Šios dvi testų klasės gali būti sujungtos į vieną testavimo klasę TestWidgets.java:

Paketas com.objects; importuoti org.junit.runner.RunWith; importuoti org.junit.runners.Suite; @RunWith(Suite.class) @Suite.SuiteClasses (( TestFilter.class, TestConnect.class )) viešoji klasė TestWidgets ()

Norint pagerinti testų rezultatus, pridedama anotacija @SuiteClasses, testai įtraukiami į klasę.

Abstrakčios kategorijos

Abstraktus Kategorijos leidžia sujungti testus kategorijoje (grupėje). Kam testas turi kategoriją @Kategorija, po kurio koreguojamos „Suite“ paleidžiamų testų kategorijos. Galite atrodyti taip:

Viešoji klasė JUnitStringUtilsCategoriesTest išplečia Assert ( //... @Category (Unit.class) @Test public void testIsEmpty() ( //... ) //... ) @RunWith(Categories.class) @Categories.IncludeCategory ( Unit.class) @Suite.SuiteClasses (( JUnitOtherTest.class, JUnitStringUtilsCategoriesTest.class )) viešoji klasė JUnitTestSuite()

Anotacija, JUnit parametrizuotas

Abstraktus Parametras leidžia apklausti parametrizuotus testus. Kuriam testo klasėje yra statinis metodas, kuris sukasi duomenų sąrašą, kuris bus naudojamas kaip argumentai klasės konstruktoriui.

@RunWith(Parameterized.class) viešoji klasė JUnitStringUtilsParameterizedTest išplečia Assert (privatus galutinis CharSequence testData; tikimasi privačių galutinių loginių duomenų; viešųjų JUnitStringUtilsParameterizedTest(galutinis CharSequence testData, laukiamas galutinis loginis) (šis.testasDataI =E StringUtils.isEmpty(testData); assertEquals(tikėtas, faktinis); ) @Parameterized.Parameters viešas statinis sąrašas isEmptyData() ( return Arrays.asList(new Object ( ( null, true ), ( "", true ), ( " ", false ), ( "kaži kuri eilutė", klaidinga ), )) )

Metodo parametrizavimas: Theories.class, DataPoints, DataPoint, Theory

Abstraktus teorijos parametrizuoja bandymo metodą, o ne konstruktorių. Dani paskirtas padėti @DataPointsі @DataPoint, bandymo metodas – už pagalbą @Teorija. Testas, kuris yra tam tikra funkcija, gali atrodyti maždaug taip:

@RunWith(Theories.class) viešoji klasė JUnitStringUtilsTheoryTest išplečia Assert ( @DataPoints viešas statinis objektas isEmptyData = new Object ( "", true ), ( " ", false ), ( "some string", false ), ); @DataPoint viešas statinis Objektas nullData = naujas objektas ( null, true ); @Theory public void testEmpty(galutinis objektas... testData)

Testavimo tvarka

Jei pirmiausia reikia reitinguoti testą, galite jį paspartinti naudodami @FixMethodOrder(MethodSorters.NAME_ASCENDING) anotaciją, kurią pristatė JUnit 4.11. Pavyzdžiui:

@FixMethodOrder(MethodSorters.NAME_ASCENDING) viešoji klasė MyTest ( @Test public void test01()(...) @Test public void test02()(...) ... @Test public void test09()(...) )

Kitame posūkyje galite įveikti kitus 2 žingsnius.

Netinkamas testas01(); negaliojantis testas02(); ... galiojantis testas09(); @Test public void testOrder1() ( test1(); test3(); ) @Test(expected = Exception.class) public void testOrder2() ( test2(); test3(); test1(); ) @Test(expected = NullPointerException.class) public void testOrder3() ( test3(); test1(); test2(); )

@ Išbandyti public void testAllOrders() (skirta (Objekto pavyzdys: permute(1, 2, 3)) (skirta (Objekto indeksas: pavyzdys) ( jungiklis (((Integer) index).intValue()) ( 1 atvejis: test1() ); pertrauka; 2 atvejis: test2(); pertrauka; 3 atvejis: testas3 (); pertrauka; ) ) ) )

Pagrindinių komentarų sąrašas

Abstraktusapibūdinimas
@Test
viešasis testas()
metodas yra išbandomas
@Test(timeout=100)
viešasis testas()
jei laikas pasibaigs, skirtojo laiko parametras bus perrašytas, testas greitai nebus baigtas
@Test(tikimasi = MyException.class)
viešasis testas()
metodas kaltas dėl vikingo ir kaltinimo iki MyException klasės, kitaip testas bus baigtas netoli
@Ignoruoti
viešasis testas()
nepaisyti bandymo metodo
@BeforeClass
metodas, kuris klasei iškviečiamas vieną kartą prieš iškviečiant testavimo metodus; čia galima įdėti inicializaciją, kad laimėti reikia tik vieną kartą, pavyzdžiui, perskaityti duomenis, kad jie laimėtų testavimo metoduose arba sukurti duomenų bazę su duomenų baze
@Po pamokų
viešas statinis galiojantis testo metodas()
metodas, kuris iškviečiamas vieną kartą klasei, iškvietus testavimo metodus; čia galima išplėsti inicializaciją, kad reikia atlikti tik vieną kartą, pvz., uždaryti duomenis su duomenų baze, arba ištrinti duomenis, nes jų nebereikia
@Prieš
vieša statinė tuštuma prieš metodą()
metodas, kuris testo klasėje vadinamas prieš odos testo metodą; Čia galite atlikti reikiamą inicijavimą, pavyzdžiui, nustatyti parametrus
@Po
vieša statinė tuštuma afterMethod()
metodas, kuris testų klasėje vadinamas odos testo metodu; Čia galite atlikti reikiamą inicializaciją, pavyzdžiui, pašalinti duomenis, nes daugiau nereikia

Teiginių tipų sąrašas

Apžvalgos tipasapibūdinimas
nepavyko ()
nepavyko (eilutės pranešimas)
perevannya testas su malone, tobto. testas nepavyks
assertTrue (bulio sąlyga)
assertTrue(java.lang.String pranešimas, loginė sąlyga)
dar kartą patikrinimas, ar yra protų pusiausvyra, sąlyga vertė teisinga
assertFalse (bulio sąlyga)
assertFalse (eilutės pranešimas, loginė sąlyga)
dar kartą patikrinkite tinkamumą proto sąlygos reikšmė klaidinga
assertEquals(<тип>tikimasi,<тип>faktinis)
assertEquals(stygos pranešimas,<тип>tikimasi,<тип>faktinis)
dar kartą patikrinkite tinkamumą;<тип>- ce Objektas, tarpinis, dvigubas і ir kt.
assertArrayEquals (tikėtinas baitas, faktinis baitas)
assertArrayEquals(Eilutės pranešimas,<тип>tikisi,<тип>faktai)
masyvų pakartotinis patikrinimas siekiant lygybės; panašus į assertEquals;<тип>- ce Objektas, tarpinis, dvigubas і ir kt.
assertNotNull(Objekto objektas)
assertNotNull (eilutės pranešimas, objekto objektas)
patikrinkite, ar objektas nėra nulis
assertNull (objekto objektas)
assertNull (eilutės pranešimas, objekto objektas)
patikrinkite, ar objektas yra nulinis
assertSame (tikimasi objekto, tikrasis objektas)
assertSame (Eilutės pranešimas, Laukiamas objektas, Objektas tikras)
dviejų laukiamų ir faktinių objektų lygybės pakartotinis patikrinimas, tobto. vienas ir tas pats objektas

JUnit užpakalio testas

Norėdami parodyti pagrindines JUnit galimybes, naudojame primityvią java klasę FuncMath, kuri turi du metodus - begalinio skaičiaus faktorialo reikšmę ir dviejų skaičių sumą. Be to, klasės kopijoje bus viklikiv metodų kopija.

Viešoji klasė FuncMath ( int skambučiai; viešieji int getCalls() ( grįžtantys skambučiai; ) viešasis ilgas faktorialus (int numeris) ( skambučiai++; if (numeris< 0) throw new IllegalArgumentException(); long result = 1; if (number >1) ( už (int i = 1; i< = number; i++) result = result * i; } return result; } public long plus(int num1, int num2) { calls++; return num1 + num2; } }

Be odos testo scenarijaus, būtinas ir būtinas kontekstas, pavyzdžiui, kuriant klasių egzempliorius. O po to būtina patikrinti rezervuotus išteklius. Turiu antotaciją @Prieš ir @Po. Po metodo, pažymėto @Before, bus atliktas odos testo kritimas, o po metodo, pažymėto @Po, – odos testo kritimas. Kaip ir tokio lygio resursų inicijavimą, jį sukurti reikia tik vieną kartą – tik po visų testų – tada laimėk porą anotacijų @BeforeClass ir @AfterClass.

Bandymo klasė su kilcom scenarijais atrodo taip:

Importuoti org.junit.Test; importuoti org.junit.After; importuoti org.junit.Before; importuoti org.junit.Assert; importuoti org.junit.AfterClass; importuoti org.junit.BeforeClass; public class JUnit_funcMath išplečia Assert (privatus FuncMath math; @Prieš public void init() ( math = new FuncMath(); ) @Po public void tearDown() ( math = null; ) @Test public void calls() ( assertEquals(") math.getCalls() != 0", 0, dao.getConnection()); math.factorial (1); assertEquals(1, math.getCalls()); math.factorial (1); assertEquals (2, math. getCalls()); ) @Test public void factorial() ( assertTrue(math.factorial(0) == 1); assertTrue(math.factorial(1) == 1); assertTrue(math.factorial(5) == 120);) @Test(expected = IllegalArgumentException.class) public void factorialNeigiamas() ( math.factorial(-1); ) @Ignore @Test public void todo() ( assertTrue(math.plus(1, 1) == 3);

Skambučių metodas patikrina skambėjimo teisingumą. Faktorinis metodas tikrina faktorinio skaičiavimo teisingumą tam tikroms standartinėms reikšmėms. FactorialNegative metodas nepaiso to, kad esant neigiamoms faktorialo reikšmėms, jis pateiks NelegalArgumentException. Todo metodas bus ignoruojamas.

Pavyzdžiui, nurodykite, kad straipsnis pateikiamas bendrame JUnit kontekste. Tačiau, kaip matote iš programų nurodymų, karkasą lengva naudoti pergalėse, nėra daug papildomų galimybių, tačiau ją galima išplėsti už taisyklių ir paleidimo priemonių ribų.

Žinau, kad PŽ plėtra yra daugiau, mažiau darbo. Pats dirbu su amatininku, kuris kiekvieną dieną stengiasi tapti geresnis. Lengviausias būdas kiekvienam – pažinti šprotus geri įrankiai patarimas kitam valgymui:

  • Jei aš kaltas dėl pergalingo X įrankio?
  • Kaip aš kaltas dėl pergalingo X įrankio?

Automatizuotas testavimas yra svarbi programinės įrangos kūrimo dalis, tačiau programuotojų tinklaraščiuose yra trys įrašai apie testuojamus įrankius. Leiskite man pažvelgti į mano „ekraną su įrankiais“. Papasakosiu apie 12 bibliotekų ir struktūrų, pavyzdžiui, esu įsilaužęs į vienetų ir integravimo testų rašymą, taip pat suteiksiu jums šiek tiek pagalbos dėl šonų, kad galėčiau padėti suprasti, kaip juos nulaužti.

Pažvelkime į mano įrankių dėžę

Prieš tai, kadangi galite pakoreguoti įrankių aprašymą, esate atsakingas už lankstymo reguliavimą, tarsi automatiškai paleistumėte integravimo ir vienetų testus. Turiu 2 pastabas šia tema:

  • „Maven“ integravimo testavimas aprašo, kaip galime pritaikyti „Maven“ lankstymą, naudodami integravimo ir vienetų testus skirtinguose kataloguose.
  • Gradle Start: integracijos testavimas su TestSets papildiniu aprašo Gradle skirtus testus.

Dabar esate pasiruošę stebėtis mano įrankiais. Suskirstiau juos į kategorijas, kad jums būtų lengviau naršyti.

Taip pat 12 įrankių ašis, pavyzdžiui, vicorous su integravimu ir vienetų testavimu.

Vykdomi bandymai

„AssertJ“ suteikia lanksčią API, skirtą tvirtam pareiškimui apie atleidimą rašyti, pagerinti bandomojo kodo skaitomumą, leidžiantį perrašyti testus pagal parašytus ypatumus, kaip reikia į domeną orientuotiems filmams.

Dodatkovo:

  • „Hamcrest“ įsilaužimas bandymo tikslais, kaip nulaužti „Hamcrest“ rašant testus ir kaip išplėsti jo galimybes naudojant papildomus pagrindinius modulius.
  • Teiginį paverčiame į dalykinę raidos kalbą, tarsi siekdami sukurti koristuvach teiginį AssertJ.
  • Rašome švariai: kietumą pakeičiame į dalyką orientuota mina. Rozpovida, kodėl mes kalti standartinį JUnit kietumą pakeitę žodžiais, pavyzdžiui, pergalinga kalba, dalykinė kalba.

Duomenų prieigos kodo testas

Duomenų bazės kodas skirtas integracijos testams, kurie vykdomi vietiniame mažmenininko kompiuteryje, rašyti.

JUnit plėtinys, kad galėtumėte kreiptis dėl duomenų bazės inicijavimo administracijoje prieš atlikdami odos integracijos testą ir užpildydami duomenų bazę reikalingais duomenimis. „DbUnit“ turi trūkumų, tačiau tai taip pat yra pagrindinis įrankis, leidžiantis dalytis bandymo duomenimis ir bandymo kodu.

Dodatkovo:

  • Aprašomi pagrindiniai DbUnit komponentai, žinios apie visus būtinus rašymo testus su papildomu DbUnit.
  • nada 5 rašymo taisyklės geriausi testai duomenų prieigos kodas.

„Java“ – į objektą orientuotas, stipriai įvestų kalbų programavimas, platinamas „Sun Microsystems“ 1991 m. Kalba iš pradžių buvo vadinama Oak ir buvo naudojama programuojant elektroniką keliaujant, tačiau vėliau ji buvo pervadinta į Java. Oficialus „Java“ išleidimas 1995 m. pasirodė dar sėkmingesnis ir netrukus po naujosios kalbos „Java“ užėmė tvirtą poziciją kaip serverio priedų kūrimo įrankis.

Mūsų laikais Java laimi visose programinės įrangos kūrimo srityse – serverių programose, darbalaukio programose, įrankiuose, žiniatinklio prieduose – viskas kuriama Java ir prieštaringų technologijų pagalba.

„Java“ testo tikslinė auditorija

Išbandykite „Java“, kad išbandytumėte galią ir žinotumėte daugiau mažmenininkų, turinčių minimalių Java programavimo žinių. Testas bus turtingesnis tiek žmonių, kurie negali galvoti apie daug darbo su Java ir nori kuo mažiau dėmesio pagrindinės sąvokos tsієї populiarus filmų programavimas. Be to, šis testas gali būti pažįstamas studentams, pavyzdžiui, mokantis Java, norint įtvirtinti žinias, perimti iš VNZ ar kaip savarankiško darbo rezultatas.

Persiųsti į Java testavimą

Prieš išlaikydami testą, jau žinote pagrindines Java sąvokas, tokias kaip "pakeitimas", "ciklas", "metodas" ir žinote pagrindinių šiuolaikinių konstrukcijų sintaksę. Jei ne, rekomenduojame išmokti Java pagrindus perskaičius įvadinį kursą.

Java testo struktūra

Testas „Java – pagrindai“ apima šias temas:

Toliau galite perskaityti pranešimą apie maisto tyrimų temas:

  • Tos klasės objektai: temos maistas aprėpiamas taip, kad būtų suprantamas kaip klasė, klasės egzempliorius (objektas), konstruktoriai, lauko metodai klasei.
  • Sintaksė: šio padalijimo galia yra peržiūrėti žinias apie judėjimo raktinius žodžius, operatorius, pagrindinius tipus (primityvus, eilutę), valdomus konstruktus (if-else, while, for), taip pat apdorojimo supratimą. kaltininkų situacijų (išimtis).
  • Be to: tsey razdіl kerštas suprasti pagrindus, terminus ir santrumpas, klasių pavadinimų susitarimus, keitimą ir metodus. Be to, kiekvienam platinimui mes žiūrime į skirtingų failų (.java, .class, .jar) ir paketų pasiūlą, objektų gyvavimo ciklą, saugyklų kolekciją.

Atlikdami internetinį „Java“ testą, galėsite peržiūrėti ir sustiprinti savo žinias apie „Java“ pagrindus, taip pat atlikti daugiau sutraukiamų testų iš „Java“ testų šakos.

Tikėkimės Danijos testas tu keiks ir verksi.

Tolesnis Java testo tobulinimas

„Java“ testas nuolat atnaujinamas naujais maisto produktais.

Artimiausi Quizful komandos planai – ekspertinio lygio testų kūrimas Java kalba. Gali būti, kad bus sukurtas Java Puzzlers testas, bet, deja, jis labiau primins maistą.

Jei gerbiate tešlos maistingumą, parašykite mums apskritai. Hai būk laiminga.

Ieškodamas bandomųjų užduočių Java programuotojams, nusiunčiau jas į cicavia svetainę ( Koristuwacham Avast neik, tai Trojos arklys su scenarijais, kitaip galite) – http://www.betterprogrammer.com. Paprasčiausiu būdu įgykite „Java“ programuotojų kvalifikaciją automatiškai: nedelsdami parašykite kai kurias lankstymo funkcijas (metodus) ir nukopijuokite kodą į TextArea. Atidavėme variklį svetainei dirbti su užduotimis (ne kitaip kaip vienetinis testas), apskaičiuojame pirmąjį kvalifikacinį indeksą pagal kriterijus „saldumas-kokybė“ ir atrodome taip:

Dali pochinayutsya maistas. Aš pats gyvenime netikėtai programavau Java (ir tiesiog praleidau užduotį), todėl 82% testo laikomi lygiaverčiai ne Java programuotojas. Kiek kreditų įvesti Java Junior, Java Programer ir ypač Java Senior?! Kuris rezultatas vertinamas teisingai Java programuotojas – 90, 95, 99? Ir dabar kaip buti, kaip „programuotojas“ rašo mažiau nei 82, bet ar jis neapsimeta robotu, mažesniu nei ?!

Mobilieji priedai