LibreOffice 25.2 laguntza
UnitTest zerbitzuak unitate-probak automatizatzeko lan-markoa eskaintzen du Basic lengoaiarako. Besteak beste, honakoak egin ditzake:
proba-kasuak proba-suitetan eta unitate-probetan bildu.
Unitate-proben artean konfiguraziorako eta itzaltzerako kodea partekatu.
Proben emaitzak jakinarazi Console bidez.
Bai unitate-proba bai probatuko den kodea Basic lengoaian idatzi behar dira. Probatuko den kodeak beste lengoaia batzuetan idatzitako funtzioei dei diezaieke.
UnitTest zerbitzua ezin da erabili Python scriptekin.
Proba-kasu bat probetarako banakako unitatea da. Sarrera multzo jakin baten erantzun espezifikoa egiaztatzen du.
UnitTest zerbitzuan, proba-kasu bat Basic-en Sub bakar baten bidez adierazten da. Bere izena aurrizki arrunt batekin hasi ohi da (lehenetsia "Test_" da).
Proba-kasuak huts egiten du AssertX metodoetako batek False itzultzen badu.
Proba-suite bat elkarrekin exekutatu daitezkeen proba-kasuen bilduma bat da.
Proba-suite bateko kasu guztiak Basic modulu bakar batean biltegiratzen dira.
Proba-suite batek SetUp egta TearDown metodoak inplementatu ditzake bere moduluko proba-kasuetarako prestatzeko.
Unitate-proba bat Basic liburutegi bereko proba-suiten multzo bat da.
UnitTest zerbitzua erabiltzeko, ScriptForge liburutegia kargatu edo inportatu behar da:
Deitu zerbitzuari modu sinplean AssertX funtzioei proba-suiten eta proba-kasuen hierarkia osoa eraiki behar izan gabe deitu ahal izateko.
Modu sinplean, zerbitzuari testu-probaren barruan deitzen zaio, beheko adibidean erakusten den moduan:
    Sub SimpleTest
        On Local Error GoTo CatchError
        Dim myTest As Variant
        myTest = CreateScriptService("UnitTest")
        ' Simulatutako proba batzuk
        myTest.AssertEqual(1 + 1, 2)
        myTest.AssertEqual(1 - 1, 0)
        MsgBox("Proba guztiak gainditu dira")
        Exit Sub
    CatchError:
        myTest.ReportError("Proba batek huts egin du")
    End Sub
  Honako adibidean, AssertEqual deietako edozeinek huts egiten badu, interpretatzailea CatchError etiketara joango da eta errorearen berri emango du ReportError metodoari deituta.
Modu osoan deitua izatean, zerbitzuaren sorrera proba-kodetik kanpo gertatzen da eta proba guztiak proba-kasuetan eta proba-suitetan antolatzen dira liburutegi bakar batean.
Hurrengo adibidean, probak uneko dokumentuko (ThisComponent) "Tests" liburutegian dituen UnitTest instantzia bat sortzen da.
    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
    Dim myUnitTest As Variant
    myUnitTest = CreateScriptService("UnitTest", ThisComponent, "Tests")
  Kontuan izan ODS fitxategi batek "MathUtils" izeneko modulua duela "Standard" liburutegian, eta modulu horrek honako kodea duela:
    ' Standard.MathUtils moduluko kodea
    Function Sum(a, b) As Double
        Sum = a + b
    End Function
    
    Function Multiply(a, b) As Double
        Multiply = a * b
    End Function
  Proba-suite oso bat sortzeko, kontuan hartu "AllTests" izeneko modulu bakar bat duen "Tests" liburutegi berria sortzen dela fitxategian, eta honako kodea duela:
    ' Tests.AllTests moduluko kodea
    Sub Main()
        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim test As Variant
        test = CreateScriptService("UnitTest", ThisComponent, "Tests")
        test.RunTest("AllTests")
        test.Dispose()
    End Sub
    
    Sub Setup(test)
        ' Lehen proba-kasuaren aurretik exekutatzen den prestakuntza-kodea
        Dim exc As Variant
        exc = CreateScriptService("Exception")
        exc.Console(Modal := False)
    End Sub
    
    Sub TearDown(test)
        ' Azken proba-kasuaren ondoren deitutako garbiketa-kodea, aukerakoa
    End Sub
    
    Sub Test_Sum(test)
        On Local Error GoTo CatchError
        test.AssertEqual(Sum(1, 1), 2, "Bi osoko balio positiboren batuketa")
        test.AssertEqual(Sum(-10, 20), 10, "Osoko balio negatibo eta positiboen batuketa")
        test.AssertEqual(Sum(1.5, 1), 2.5, "Koma mugikorreko balioen eta osoko balioen batuketa")
        Exit Sub
    CatchError:
        test.ReportError("Batuketa egiteko metodoa hondatuta dago")
    End Sub
    
    Sub Test_Multiply(test)
        On Local Error GoTo CatchError
        test.AssertEqual(Multiply(2, 2), 4, "Biderkatu osoko bi balio positibo")
        test.AssertEqual(Multiply(-4, 2), -8, "Biderkatu osoko balio negatiboak eta positiboak")
        test.AssertEqual(Multiply(1.5, 3), 4.5, "Koma mugikorreko balioen eta osoko balioen biderketa")
        Exit Sub
    CatchError:
        test.ReportError("Biderketa egiteko metodoa hondatuta dago")
    End Sub
  Goiko proba-suiteak bi proba-kasu ditu, Test_Sum eta Test_Multiply. Proba guztiak exekutatzeko, exekutatu "AllTests" moduluko Main metodoa.
Exception zerbitzuaren Console erabiltzen da probaren emaitzaren erakusteko irteera lehenetsi gisa. Goiko adibidea exekutatu ondoren, honako irteera erakutsiko da kontsolan:
    ' RUNTEST ENTER testsuite='Tests.AllTests', pattern='Test_*'
    '   SETUP Tests.AllTests.Setup() ENTER
    '   SETUP Tests.AllTests.Setup() EXIT
    '   TESTCASE Tests.AllTests.Test_Multiply() ENTER
    '   TESTCASE Tests.AllTests.Test_Multiply() EXIT (0,017 sec)
    '   TESTCASE Tests.AllTests.Test_Sum() ENTER
    '   TESTCASE Tests.AllTests.Test_Sum() EXIT (0,016 sec)
    '   TEARDOWN Tests.AllTests.TearDown() ENTER
    '   TEARDOWN Tests.AllTests.TearDown() EXIT
    ' RUNTEST EXIT testsuite='Tests.AllTests' (0,223 sec)
  AssertEqual metodoetako batek huts egiten badu probetan zehar, errore-mezu bat gehituko zaio kontsolari.
| Izena | Irakurtzeko soilik | Mota | Deskribapena | 
|---|---|---|---|
| LongMessage | Ez | Boolean | True (balio lehenetsia) ezarrita badago, kontsolak mezu estandarra erakutsiko du probatzaileak emandako mezuari erantsita. False bada, probatzaileak definitutako mezua soilik erabiliko da. | 
| ReturnCode | Bai | Integer | RunTest funtzioak itzultzen duen balioa unitate-proba amaitzen denean. Balio posibleen zerrenda: 0 - Proba errorerik gabe amaitu da edo ez da hasi | 
| Verbose | Ez | Boolean | True ezarrita badago, baieztapen guztiak (huts egiten dutenak eta ez dutenak) kontsolan jakinaraziko dira. False (lehenetsia) badago, huts egiten duten baieztapenak soilik jakinaraziko dira. | 
| WhenAssertionFails | Ez | Integer | Baieztapen batek huts egiten duenean zer egingo den definitzen du. Balio posibleen zerrenda: 0 - Ez ikusiarena egin hutsegiteari eta jarraitu proba exekutatzen | 
Baieztapen guztiek adierazpen bat edo bi probatzen dituzte. Laguntza-orri honetan A eta B izenak eman zaizkie adierazpen horiei. Beti dira AssertX metodoaren bi argumentuetako lehena edo bigarrena.
AssertX metodo guztiek onartzen dute message argumentu bat, baieztapenari buruzko mezu pertsonalizatu bat jakinarazteko kontsolan. Kate hutsa da balio lehenetsia. Argumentu hau beti dago baieztapenaren azken kokagunean.
Zenbait AssertX metodok argumentu gehigarriak ere onartzen dituzte, behean azaltzen diren sintaxien arabera.
True (egia) itzultzen du A eta B zenbakizko balioak direnean eta elkarrekiko hurbil daudela kontsideratzen denean, emandako tolerantzia baten arabera.
svc.AssertAlmostEqual(a: any, b: any, tolerance: double = 1E-09, message: str = ""): bool
True itzultzen du beheko bi baldintzak betetzen badira:
A zein B Double motara bihurtu daitezke.
A eta B balioen arteko diferentzia absolutua zati Aren edo Bren balio absolutu handiena tolerance argumentuan zehaztutako balioa baino txikiagoa da.
True itzultzen du A eta B berdinak direla kontsideratzen denean.
svc.AssertEqual(a: any, b: any, message: str = ""): bool
A eta B eskalarrak badira, True itzuliko da baldin eta:
Bi adierazpenek VarType bera badute edo biak zenbakizkoak badira.
Zenbakizko balioak eta balio boolearrak = eragilearekin konparatzen badira.
Kateak StrComp funtzio integratuarekin konparatzen badira. Maiuskulak eta minuskulak kontuan hartzen dira konparazioan.
Datak eta orduak segundora arte konparatzen badira.
Null, Empty eta Nothing ez badira berdinak, bainaAssertEqual(Nothing, Nothing) funtzioak True (egia) itzultzen badu.
UNO objektuak EqualUnoObjects metodo integratuaren bidez konparatzen badira.
Kontuan izan Basic objektuak ez direla inoiz berdinak.
A eta B matrizeak direnean, True itzuliko da baldin eta:
Bi matrizeek dimentsio kopuru bera badute (2 dimentsiora arte) eta haien goiko eta beheko mugak berdinak badira dimentsio guztietarako.
Bi matrizeetako elementu guztiak berdinak badira, banan-banan.
Hutsik dauden bi matrize berdinak direla kontsideratzen bada.
True itzultzen du A elementuaren mota Boolean denean eta bere balioa False denean.
svc.AssertFalse(a: any, message: str = ""): bool
True itzultzen du A B baino handiagoa denean.
svc.AssertGreater(a: any, b: any, message: str = ""): bool
A eta B arteko konparazioak honakoa onartzen du:
Erabili daitezkeen datu motak String, Date edo zenbakiak dira.
Bi adierazpenek VarType bera izan behar dute edo biek zenbakizkoak izan behar dute.
Kateen arteko konparazioetan maiuskulak/minuskulak kontuan hartzen dira.
True (egia) itzultzen du A balioa B balioa baino handiagoa edo berdina bada.
svc.AssertGreaterEqual(a: any, b: any, message: str = ""): bool
A eta B arteko konparazioak honakoa onartzen du:
Erabili daitezkeen datu motak String, Date eta zenbakiak dira.
Bi adierazpenek VarType bera izan behar dute edo biek zenbakizkoak izan behar dute.
Kateen arteko konparazioetan maiuskulak/minuskulak kontuan hartzen dira.
True itzultzen du A balioa B balioan aurkitzen bada.
svc.AssertIn(a: any, b: any, message: str = ""): bool
Baieztapen horrek honakoa onartzen du:
B adierazpena izan daiteke 1D matrize bat, ScriptForge Dictionary objektu bat edo kate bat.
B adierazpena 1D matrize bat bada, A adierazpena data bat edo zenbakizko balio bat izan daiteke.
B adierazpena ScriptForge Dictionary objektua bada, A katea arakatzen da Bko kateen bila.
Kateen konparazioetan maiuskulak/minuskulak kontuan hartzen dira.
True itzultzen du A zehaztutako objektu motaren instantzia bat denean. Objektua motaren izena duen kate gisa zehaztu behar da.
svc.AssertIsInstance(a: any, objecttype: str, message: str = ""): bool
A adierazpena honakoetako bat izan daiteke:
ScriptForge objektua. Kasu horretan, objecttype argumentua kate bat da, adibidez "DICTIONARY", "calc", "Dialog", etab.
UNO objektua. Kasu horretan, objecttype argumentuak SF_Session.UnoObjectType() metodoak itzultzen dituen balioen berdina den kate bat izan behar du.
Matrize bat. Kasu horretan, objecttype argumentuak "array" izan behar du.
Beste edozein aldagai (Object zein Array ). Kasu horretan, objecttype zera da, integratutako TypeName funtzioak itzultzen duen balioarekin bat datorren kate bat.
True itzultzen du A Nothing balioa duen objektu bat bada.
svc.AssertIsNothing(a: any, message: str = ""): bool
True itzultzen du Ak Null balioa duenean.
svc.AssertIsNull(a: any, message: str = ""): bool
True itzultzen du A B baino txikiagoa denean.
svc.AssertLess(a: any, b: any, message: str = ""): bool
A eta B arteko konparazioak honakoa onartzen du:
String, Date edo zenbakiak erabili daitezke.
Bi adierazpenek VarType mota bera izan behar dute edo biek zenbakizkoak izan behar dute.
Kateen arteko konparazioek maiuskulak eta minuskulak kontuan hartzen dituzte.
True (egia) itzultzen du A balioa B balioa baino txikiagoa edo berdina denean.
svc.AssertLessEqual(a: any, b: any, message: str = ""): bool
A eta B arteko konparazioak honakoa onartzen du:
String, Date edo zenbakiak erabili daitezke.
Bi adierazpenek VarType bera izan behar dute edo zenbakizkoak izan behar dute.
Kate-konparazioetan maiuskulak/minuskulak kontuan hartzen dira.
True (egia) itzultzen du A balioa komodinak dituen eredu jakin batekin bat badator.
svc.AssertLike(a: any, pattern: str = "", message: str = ""): bool
Honako komodinak onartzen dira:
? - Karaktere bakarra.
* - Zero, bat edo anitz karaktere.
True (egia) itzultzen du A eta B zenbakizko balioak badira eta ez bada kontsideratzen elkarrengandik hurbil daudela, emandako tolerantzia erlatibo bati kasu eginez.
svc.AssertNotAlmostEqual(a: any, b: any, tolerance: double = 1E-09, message: str = ""): bool
Baieztapenak True (egia) itzultzen du beheko bi baldintzak betetzen badira:
A eta B Double motara bihurtu daitezke.
A eta B balioen arteko diferentzia absolutua zati Aren edo Bren balio absolutu handiena tolerance argumentuan zehaztutako balioa baino handiagoa da.
True (egia) itzultzen du A eta B berdintzat hartzen ez badira.
svc.AssertNotEqual(a: any, b: any, message: str = ""): bool
Metodo honek eskalarrekin zein matrizeekin funtzionatzen du. Irakurri AssertEqual baieztapen honetan berdintasunak zer esan nahi duen jakitzeko.
True itzultzen du A (kate bat) aurkitzen ez bada B adierazpenean.
svc.AssertNotIn(a: any, b: any, message: str = ""): bool
Irakurri AssertIn metodo honi buruzko informazio gehiago jasotzeko.
True (egia) itzultzen du A zehaztutako objektu motaren instantzia bat ez bada.
svc.AssertNotInstance(a: any, objecttype: str, message: str = ""): bool
Irakurri AssertIsInstance metodo honi buruzko informazio gehiago jasotzeko.
True (egia) itzultzen du A komodinak dituen emandako eredu batekin bat ez badator.
svc.AssertNotLike(a: any, pattern: str = "", message: str = ""): bool
Irakurri AssertLike metodo honi buruzko informazio gehiago jasotzeko.
True (egia) itzultzen du A Nothing balioa duen objektu bat bada salbu.
svc.AssertNotNothing(a: any, message: str = ""): bool
True (egia) itzultzen du A adierazpenak Null balioa badu salbu.
svc.AssertNotNull(a: any, message: str = ""): bool
True (egia) itzultzen du A kate bat ez bada edo emandako adierazpen erregularrarekin bat egiten ez badu.
svc.AssertNotRegex(a: any, regex: str = "", message: str = ""): bool
Konparazioan maiuskulak/minuskulak kontuan hartzen dira.
True itzultzen du A katea emandako adierazpen erregularrarekin bat datorrenean.
svc.AssertRegex(a: any, regex: str = "", message: str = ""): bool
Konparazioan maiuskulak/minuskulak kontuan hartzen dira.
True (egia) itzultzen du A adierazpena Boolean bat bada eta bere balioa True bada.
svc.AssertTrue(a: any, message: str = ""): bool
Proba-kasu batek huts egin dezan behartzen du.
svc.Fail(message: str = "")
Mezu bat eman daiteke kontsolan agertu dadin.
Zehaztutako message mezua kontsolan idazten du.
svc.Log(message: str = "")
Mezu bat eman daiteke kontsolan agertu dadin.
Exception zerbitzuaren uneko propietate-balioa eta mezu bat dituen koadro bat erakusten du.
Metodo hau normalean proba-kasua duen Sub prozeduran erabiltzen da, salbuespenak maneiatzeko sekzioan. Baieztapenak huts egiten duenean edo Fail metodoari deitzen zaionean aktibatzen da.
svc.ReportError(message: str = "")
WhenAssertionFails propietatearen balioaren arabera, probaren exekuzioak aurrera jarraitu dezake edo eten egin daiteke.
Proba-kasuak idazten direnean, gomendagarria da ReportError metodoari deitzea Sub prozedurak salbuespenak maneiatzeko duen sekzioan.
LongMessage propietatea True bada, zehaztutako message mezuaren ondoren mezuaren deskribapen estandarra erakutsiko da. Bestela, message mezua soilik bistaratuko da.
Zehaztutako moduluan inplementatutako proba-suite osoa exekutatzen du. Proba-kasuak bakoitza bere aldetik exekutatzen dira.
Proba-suite bat exekutatzeko:
Moduluko Setup metodoa exekutatzen da.
Proba-kasu bakoitza behin exekutatzen da, ordenarik gabe.
Moduluko aukerako TearDown metodoa exekutatzen da.
svc.RunTest(testsuite: str, testcasepattern: str = "", message: str = ""): int
testcasepattern argumentuak "?" eta "*" komodinez osatutako eredu bat zehazten du, zein proba-kasu exekutatuko diren hautatzeko. Konparazioan ez dira maiuskulak/minuskulak bereizten.
message parametroa ematen bada, kontsolan idatziko da proba hasten denean.
Exekutatzen ari den proba-suitea eteten du TearDown metodoari deitu gabe.
Setup metodoan zehar probak saltatzea logikoa izan daiteke proba exekutatzeko baldintza guztiak ez direnean betetzen.
Setup metodoak berak erabakiko du Sub prozeduratik irtetea SkipTest deitu eta berehala.
SkipTest proba-kasu baten barrutik deitzen bada, proba-suitearen exekuzioa eten egingo da eta gainerako proba-kasuak ez dira exekutatu. Kontuan izan proba-suitearen barruko proba-kasuak exekutatzen diren ordena ausazkoa dela.
svc.SkipTest(message: str = "")
message mezu bat ematen bada, kontsolan idatziko da.