Кіріспе
TestNG — Седрик Бист жасаған және JUnit мен NUnit-тен шабыт алған Java бағдарламалау тілі үшін тестілеу фреймворкі. TestNG-нің жобалау мақсаты — бірлік, функционалдық, бастан-аяқ, интеграциялық сияқты тест санаттарының кең ауқымын, күштірек және пайдалануға оңай функционалдық мүмкіндіктермен қамту болып табылады.
Құралдарды қолдау
TestNG үш негізгі Java IDE – Eclipse, IntelliJ IDEA және NetBeans-тың әрқайсысымен бірге қораптан шығарылған күйде немесе плагиндер арқылы қолдау көрсетіледі. Ол сонымен қатар Apache Ant үшін арнайы тапсырмамен бірге келеді және Maven құрастыру жүйесімен үйлесімді. Hudson үздіксіз интеграция сервері TestNG-ді қолдайды және уақыт өте келе тест нәтижелерін қадағалап, графиктік түрде көрсетуге мүмкіндік береді. Cobertura сияқты көптеген Java кодты жабу құралдары TestNG-мен үздіксіз жұмыс істейді. Ескерту: Eclipse үшін TestNG қолдауы тек 2018 жылғы 09 айының (4.9) Eclipse нұсқалары үшін ғана Eclipse Marketplace-ке енгізілген. Eclipse-тің жаңа нұсқалары үшін TestNG-ны TestNG сайтындағы нұсқауларға сәйкес қолмен орнату қажет.
Есеп беру
TestNG HTML және XML форматтарында тест есептерін жасап шығарады. XML нәтижесін Ant JUnitReport тапсырмасы арқылы JUnit қолданғандағы есептерге ұқсас есептерді дайындау үшін өзгертуге болады. 4.6 нұсқасынан бастап TestNG ReportNG, PDFngreport және TestNG XSLT сияқты үшінші тарап есептерді дайындаушыларды қолдануға рұқсат беретін репортерлік API-ді ұсынады.
PDFngreport and TestNG XSLT, to be used.
JUnit-пен салыстыру
TestNG-нің JUnit тағы бір тестілеу құралымен ұзақ жылдан бері қарым-қатынастағы бәсекелестігі бар. Әрбір аяқтың өзіндік айырмашылықтары мен тиімді жақтары бар. Stack Overflow пікірталастары осы мәселенің қызу дауға ұласқанын көрсетеді.
Түсініктемелер
JUnit 5-те @BeforeAll және @AfterAll әдістері көбінесе статикалық деп жариялануы тиіс. TestNG-де мұндай шектеу жоқ. TestNG тесттік жиынтықтар мен топтар үшін төрт қосымша дайындық/қорытындылау аннотация жұптарын қамтиды: @BeforeSuite, @AfterSuite, @BeforeTest, @AfterTest, @BeforeGroup және @AfterGroup, @BeforeMethod және @AfterMethod. TestNG сонымен қатар Selenium арқылы қосымшаны автоматты түрде тестілеуге қолдау көрсетеді.
Параметрленген сынау
Параметрленген тестілеу екі құралда да қолданылады, бірақ өте әртүрлі жолдармен. TestNG-де тест әдісіне өзгермелі параметрлерді берудің екі тәсілі бар: testng.xml файлын конфигурациялау арқылы және @DataProvider әдісін анықтау арқылы. JUnit 5-те @ParameterizedTest аннотациясы параметрленген тестілеуді жүзеге асыруға мүмкіндік береді. Бұл аннотация @ValueSource немесе @EnumSource сияқты параметрленген аргументтердің көзін көрсететін басқа аннотациямен біріктіріледі. @ArgumentsSource пайдалану пайдаланушыға одан да динамикалық ArgumentsProvider-ді іске асыруға мүмкіндік береді. JUnit 4-те параметрленген тесттерді жеңілдету үшін @RunWith және @Parameters қолданылады, мұнда @Parameters әдісі параметрленген мәндері бар List массивін қайтаруы керек, ол тест класының конструкторына жіберіледі.
Қорытынды
Әр түрлі пайдаланушылар көбінесе бір фреймворктің екіншісінен белгілі бір мүмкіндіктерін жақсы көреді. JUnit көбірек танымал және әдетте көптеген IDE-лерде бастапқыдан орнатылып келеді. TestNG кеңейтілген конфигурация опцияларымен және әртүрлі типтегі сынақтарды жүргізу мүмкіндігімен ерекшеленеді. Қайсысы тиімдірек екені қолданылу контексіне және талаптарға байланысты.