11.06.2025
Gustas Mickus

ABLUnit testavimas VS Code su ABLUnit Test Runner plėtiniu

Vienetų testavimas (unit testing) yra svarbi modernaus programinės įrangos kūrimo dalis, ypač kai komandos laikosi testais grįsto kūrimo (Test-Driven Development, TDD) praktikos. Tačiau programuotojams, dirbantiems su Progress OpenEdge ABL kalba, testų konfigūravimas ir paleidimas ne visada buvo paprastas.

Štai čia į pagalbą ateina ABLUnit Test Runner plėtinys, skirtas Visual Studio Code aplinkai. Šis plėtinys integruoja ABLUnit testus tiesiai į VS Code Test Explorer skydelį, leisdamas programuotojams paleisti, derinti (debug) ir peržiūrėti testus tiesiogiai iš savo kūrimo aplinkos.

Šiame blogo įraše apžvelgsime, kas yra ABLUnit, kaip veikia šis plėtinys, kokias konfigūracijos galimybes jis palaiko, ir kokią naudą pastebėjome naudodami jį sudėtingame ERP projekte. Taip pat aptarsime dažniausiai pasitaikančias problemas ir praktinius jų sprendimo būdus.

Nesvarbu, ar tik pradedate susipažinti su ABL vienetų testavimu, ar norite patobulinti esamą darbo eigą – šis vadovas padės pradėti dirbti su didesniu pasitikėjimu.

Kas yra ABLUnit?

Prieš nagrinėjant patį plėtinį, verta suprasti, kas yra ABLUnit.

ABLUnit yra vienetų testavimo karkasas Progress OpenEdge Advanced Business Language programoms. Jis panašus į kitus xUnit stiliaus testavimo karkasus, tokius kaip JUnit ar NUnit, ir padeda suteikti daugiau struktūros bei automatizavimo ABL testavimui.

Pagal „Progress“ dokumentaciją, ABLUnit palaiko:

  • anotacijas testų atvejams apibrėžti;
  • patvirtinimo (assertion) metodų rinkinį;
  • galimybę grupuoti ir paleisti testus rinkiniuose (suites);
  • testų vykdytojus, paleidžiamus per komandinę eilutę arba paleidimo (launch) konfigūracijas;
  • vizualią rezultatų sąsają testų rezultatams peržiūrėti.

Praktikoje ABLUnit suteikia programuotojams įrankius, reikalingus regresijos testams rašyti, palaikomam kodui kurti ir efektyviau taikyti testais grįstą kūrimą (TDD) OpenEdge ABL projektuose.

Kodėl šis plėtinys svarbus

Naudojome ABLUnit Test Runner plėtinį dirbdami su kliento ERP sistema. Mūsų komanda buvo atsakinga tiek už sistemos front-end, tiek už back-end dalis, ir mums reikėjo efektyvesnio būdo testuoti verslo logikos sluoksnį.

Plėtinys padėjo mums paleisti vienetų testus tiesiogiai iš Visual Studio Code, palengvindamas automatizuoto testavimo įtraukimą į kūrimo procesą. Jis taip pat palaikė mūsų perėjimą prie testais grįsto kūrimo (TDD): pirma rašyti testus, tuomet įgyvendinti kodą, reikalingą, kad jie sėkmingai praeitų.

Kaip tai veikia

Kadangi plėtinys glaudžiai integruojasi su natūvia VS Code testavimo sistema, verta susipažinti su VS Code testavimo dokumentacija, ypač jei esate naujas šios testavimo sąsajos ar darbo eigų vartotojas.

Pats plėtinys yra gana paprastas. Žemiau pateikta diagrama iliustruoja įvesties ir išvesties srautą plėtinio viduje.

Plėtinys veikia, priimdamas įvestį testuojamų ABL failų pavidalu (klasių ar procedūrų), kartu su pasirinktiniais konfigūracijos failais. Štai pagrindinių komponentų apžvalga:

Įvestys (Inputs)

  • Testų failai (.cls, .p): ABL procedūros ar klasių failai, turintys vienetų testus.
  • Konfigūracijos failai:
  • .vscode/settings.json: apibrėžia testų failų įtraukimo ir išskyrimo šablonus. Tai ypač naudinga derinant (debugging) ir automatizuojant darbo eigas.
  • .vscode/ablunit-test-profile.json (pasirinktinai): suteikia pažangias testų paleidimo konfigūracijas, atspindinčias struktūrą, naudojamą pačios VS Code launch configurations. Tai itin naudinga dideliuose projektuose su keliomis testavimo aplinkomis ar duomenų bazėmis.
  • ablunit.json: konfigūracijos failas, kurį naudoja ABLUnit karkasas, nurodantis, kuriuos testus paleisti ir kokius parametrus naudoti. Jis sugeneruojamas testavimo proceso metu ir naudojamas paties karkaso.

Vykdymas ir išvestis

Norėdami paleisti ABLUnit testus Visual Studio Code aplinkoje, tiesiog naudokite integruotą Test Explorer skydelį:

  1. Atidarykite skydelį, spustelėdami stiklinės piktogramą Activity Bar juostoje arba pasirinkdami View > Testing.
  2. Norėdami paleisti visus testus, spustelėkite Run Tests mygtuką skydelio viršuje:

  1. Norėdami paleisti testus konkrečiame aplanke, naudokite paleidimo piktogramą šalia to aplanko ar testų rinkinio (suite):

Įvykdytų ABLUnit testų rezultatai fiksuojami results.xml faile – mašinai skaitomame faile, kurį plėtinio Testing skydelis naudoja testų rezultatams rodyti: spalvotiems sėkmės/nesėkmės žymikliams, praleisto testo statusui (pavyzdžiui, Test.cls rinkinys gali atspindėti testą, kuris nebuvo paleistas), ir aprėpties (coverage) rodikliams, padedantiems refaktorinti ir taisyti kodą. Testų rezultatai suskirstyti pagal darbo aplankas (workspace folder), katalogą, klasę ir atskirus testavimo metodus. Be to, rodomas kiekvieno testo ir grupės vykdymo laikas, palengvinantis bendro testų veikimo įvertinimą.

Keletas spąstų

Štai keletas pastebimų iššūkių, su kuriais susidūrėme naudodami šį įrankį:

Pradinis įspėjimas

Paleidžiant testus, pasirodo įspėjimas, kad konfigūracijos yra pasirinktinės. Tai paprastai nėra problema (dauguma testuojamų darbo aplankų veikia be jokios konfigūracijos), tačiau sudėtingesnėms konfigūracijoms pasirinktinio profilio apibrėžimas .vscode/ablunit-test-profile.json faile gali padėti išspręsti tam tikras anomalijas.

fig:

Pasenę testų vykdymai

Kartais, pasikeitus pirminiam kodui, testai nepasiima naujausios versijos. Taip gali nutikti dėl pasenusio rcode (sukompiliuoto rezultato). Paprastai šią problemą išsprendžia ABL kalbos serverio perkrovimas per VS Code komandų paletę, užtikrinant, kad testai naudoja naujausią kodą. Būsima plėtinio versija galėtų rodyti įspėjimą, kai rcode yra senesnis nei pirminis kodas, kad ši problema būtų pastebėta anksčiau: Issue #306.

results.xml failas nerandamas

Gali pasitaikyti tokios klaidos:

Error parsing results ...\results.xml.  err=EntryNotFound (FileSystemError): Error: ENOENT: no such file or directory, open '...\results.xml'

Tai dažniausiai nutinka, kai projektas atidaromas kaip aplankas, o ne kaip darbo aplankas (workspace). Sprendimas – visada atidaryti projektą kaip workspace. Workspace turėjimas yra numatytas plėtinio veikimo režimas.

Duomenų bazės prijungimo problemos

Kita dažna klaida susijusi su tuo, kad testuose naudojama duomenų bazė nerandama. Nors plėtinys bando pateikti diagnostinę informaciją, tokiais atvejais dažnai reikia rankiniu būdu patikrinti duomenų bazės prieigą ir konfigūraciją.

fig:

Jei jūsų testai priklauso nuo duomenų bazės, o ji netinkamai prijungta ar sukonfigūruota, greičiausiai pamatysite neaiškias arba klaidinančias testų klaidas, arba panašų pranešimą kaip aukščiau.

Naujausiuose atnaujinimuose pridedama vis daugiau naudingos diagnostikos, padedančios spręsti dažnas problemas, tokias kaip trūkstamas ar netinkamai sukonfigūruotas duomenų bazės ryšys. Šio darbo eigą galite sekti čia: PR #307 – Improve feedback for DB connection issues.

Rezultatai

ABLUnit Test Runner plėtinio naudojimas pagerino mūsų vienetų testavimo procesą ir palengvino testų vykdymą komandai. Įtraukus plėtinį į savo kūrimo aplinką, mums pavyko:

  • supaprastinti testų konfigūravimą ir vykdymą;
  • mažiau laiko skirti testų konfigūracijų valdymui;
  • pagerinti matomumą testų rezultatuose ir aprėptyje (coverage);
  • anksčiau pastebėti spragas kūrimo proceso metu;
  • pagreitinti testavimo darbo eigas;
  • sumažinti rankinį darbą;
  • likti Visual Studio Code aplinkoje be nereikalingo konteksto perjungimo.

Pamatę teigiamus rezultatus šiame ERP projekte, toliau naudojome ABLUnit Test Runner plėtinį kituose Progress ABL projektuose. Jo integracija su VS Code ir ABLUnit testavimo palaikymas padarė jį naudingu įrankiu mūsų kūrimo darbo eigoje.

Mūsų patirtimi, ABLUnit Test Runner plėtinys yra efektyvus būdas paleisti ABL vienetų testus dirbant Visual Studio Code aplinkoje.

Programuotojai, norintys plačiau susipažinti su šiuo įrankiu, gali rasti dokumentaciją, pavyzdžius, kodo fragmentus ir pirminį kodą plėtinio GitHub saugykloje.

Baigiamosios mintys

Vienetų testavimas padeda komandoms kurti patikimesnę, lengviau palaikomą programinę įrangą. Progress OpenEdge ABL projektuose ABLUnit suteikia testavimo karkasą, o ABLUnit Test Runner plėtinys palengvina šio proceso valdymą Visual Studio Code aplinkoje.

Jei jūsų komanda dirba su Progress OpenEdge ir nori patobulinti testavimo praktikas, „Baltic Amadeus“ gali padėti įvertinti jūsų esamą kūrimo darbo eigą ir pasiūlyti praktinius būdus, kaip sustiprinti kokybę, automatizavimą ir palaikomumą. Susisiekite su mūsų komanda.

Dažniausiai užduodami klausimai

Kas yra ABLUnit?

ABLUnit yra vienetų testavimo karkasas Progress OpenEdge ABL programoms, panašus į JUnit ar NUnit. Jis palaiko anotacijas testams, patvirtinimo metodus, testų grupavimą rinkiniuose ir vizualią rezultatų peržiūrą.

Kaip ABLUnit Test Runner plėtinys palengvina testavimą?

Plėtinys integruoja ABLUnit testus tiesiai į VS Code Test Explorer skydelį, leisdamas paleisti, derinti ir peržiūrėti testų rezultatus nepaliekant kūrimo aplinkos, taip sumažinant rankinį darbą ir konteksto perjungimą.

Kodėl reikia atidaryti projektą kaip workspace, o ne kaip aplanką?

Jei projektas atidaromas kaip paprastas aplankas, o ne workspace, plėtinys gali nerasti results.xml failo ir mesti klaidą. Workspace yra numatytas, plėtinio tikimasi veikimo režimas.

Ką daryti, jei testai naudoja pasenusią kodo versiją?

Tai dažniausiai nutinka dėl pasenusio rcode. Sprendimas – perkrauti ABL kalbos serverį per VS Code komandų paletę, kad testai naudotų naujausią sukompiliuotą kodą.

Pasikalbėkime apie jūsų projektą

Pradedate projektą arba norite sustiprinti jau vykdomą? Susisiekite ir atsakysime jums per vieną darbo dieną.

Parašykite mums

Ačiū! Jūsų pateikimas gautas!
Oi! Pateikiant formą kažkas nutiko.