Кіріспе

Java бағдарламалау тілі үшін тесттерді автоматтандыру фреймворкі

JUnit – Java бағдарламалау тілі үшін тесттерді автоматтандыру фреймворкі. JUnit көбінесе бірліктерді сынау үшін қолданылады және xUnit фреймворктерінің бірі болып табылады. JUnit компиляция кезінде JAR файлы ретінде қосылады. Фреймворктің ең соңғы нұсқасы, JUnit 5, жаңа пакет астында орналасқан. Алдыңғы нұсқалар JUnit 4 және JUnit 3 тиісінше және пакеттерінде болған. 2013 жылы GitHub-та орналастырылған 10 000 Java жобасы бойынша жүргізілген зерттеу көрсетті, JUnit (slf4j api-мен бірдей) ең көп қолданылатын сыртқы кітапхана екенін. Әрбір кітапхана жобалардың 30,7%-ында пайдаланылды.

JUnit өмірлік циклы

Әрбір JUnit тест класында әдетте бірнеше тест жағдайлары болады. Бұл тест жағдайлары тест өмірлік циклына бағынады. JUnit өмірлік циклының толық үш негізгі кезеңі бар:
Дайындық кезеңі – Бұл кезеңде тест инфрақұрылымы дайындалады. Екі деңгейлі дайындық бар. Бірінші тип – кластық деңгейдегі дайындық, онда дерекқорға қосылу сияқты есептеу шығындары жоғары объекті құрылып, аздаған жанама әсерлермен қайта пайдаланылады. Кластық деңгейдегі дайындық `@BeforeClass` аннотациясы арқылы іске асырылады. Екінші тип – әрбір тест жағдайын орындау алдындағы дайындық, ол `@Before` аннотациясын қолданады. Тест орындалуы – Бұл кезең тестті жүргізуге және нәтижені тексеруге жауапты. Тест нәтижесі тест сәтті аяқталды немесе сәтсіз аяқталды екенін көрсетеді. Мұнда `@Test` аннотациясы қолданылады. Тазалау кезеңі – Барлық тесттен кейінгі орындалулар аяқталғаннан кейін жүйе тазалау жұмыстарын жүргізуі қажет болуы мүмкін. Кластық деңгейдегі дайындық сияқты, кластық деңгейдегі тазалау да бар. `@AfterClass` аннотациясы кластық деңгейдегі тазалауды қолдау үшін қолданылады. `@After` аннотациясы тест орындалғаннан кейін тазалауға мүмкіндік береді.

Басқа құралдармен біріктіру

JUnit 5 бірқатар құралдарды, мысалы, құрастыру құралдарын, интеграцияланған даму орталарын (IDE), үздіксіз интеграция (CI) құралдарын және тағы да көптеген нәрселерді үйлестіреді.

Құралдарды құру

JUnit Apache Ant, Apache Maven және Gradle құрастыру жүйелерін қолдайды, бұл ең көп таралған жоба құрастыру жүйелері. Құрастыру жүйелері жобаны құру процесін автоматтандыру үшін маңызды.

Қыранның таралуы

Apache Ant, сондай-ақ Ant деп те аталады, жоғарыда аталған үш құралдың ішіндегі ең көп мүмкіндікке ие және ең ұзақ тарихы бар құралдардың бірі. Ant құрылыс.xml файлына негізделген, ол жобаны іске қосу үшін қажетті тапсырмаларды конфигурациялау үшін қолданылады. Ant-те Apache Ivy деп аталатын кеңейтім бар, ол тәуелділіктерді шешуге көмектеседі. Жобаның тәуелділіктері ivy.xml файлында жариялануы мүмкін. Ant, Java кодының жабуын қамтамасыз ететін құралдарды (JaCoCo) конфигурациялау арқылы JUnit 5-ке интеграциялана алады. ivy.xml файлы Java платформасының консолімен және JUnit 5 платформасының іске қосушысы тәуелділіктерімен конфигурацияланып, JUnit 5-ке интеграцияны қамтамасыз етеді.

Мавен кеңейтуі

Ant-тен айырмашылығы, Apache Maven, сонымен қатар Maven деп аталады, құрастыру процесіне стандартталған және біртілді тәсілді қолданады. Maven өзінің тәуелділіктерін басқару үшін "конфигурациядан гөрі конвенция" қағидасын ұстанады. Java бастапқы коды (немесе "src") src/main/java каталогында, ал тест файлдары src/test/java каталогында табылады. Maven кез келген Java жобасы үшін қолданылуы мүмкін. Ол жобаның құрастыру қадамдарын конфигурациялауға арналған XML негізделген тәсіл болып табылатын Project Object Model (POM) жүйесін қолданады. Maven-нің минималды pom.xml құрастыру файлында тәуелділіктер тізімі және бірегей жоба идентификаторы болуы керек. Maven жұмыс істеу үшін құрастыру жолында болуы тиіс. Maven, JUnit 5 тесттері үшін қораптан шыққан функционалдылықты қолдайтын jacoco maven плагинін пайдаланып, JUnit 5-пен интеграциялана алады. Осы міндеттерді орындау үшін әртүрлі Maven мақсаттарын көрсетуге болады.

Градл кеңейтуі

Gradle - Ant және Maven-нің көптеген түсініктерін қабылдаған құрастыру құралы. Ол жобаны құрастыру үшін қажетті қадамдарды жариялау үшін файлды пайдаланады. XML негізінде жұмыс істейтін Ant және Maven-нен айырмашылығы, Gradle Java негізіндегі бағдарламалау тілі Apache Groovy-ді пайдалануды талап етеді. Ant және Maven-нен өзгеше, Gradle XML-ді пайдалануды қажет етпейді. Gradle әлі де Maven-нің "конфигурациядан гөрі конвенция" қағидасын сақтайды және және каталогтары үшін бірдей құрылымды қолданады. Gradle құрастыру файлында JUnit 5 тобы ұсынған junit платформасы плагінімен бірге плагинды конфигурациялау арқылы JUnit 5-пен интеграциялана алады.