LibreOfficeDev 25.8 Hjelp
Tjenesten UnitTest gir et rammeverk for å automatisere enhetstester ved å bruke Basic-språket, inkludert muligheten til å:
Samle testtilfeller i testsuiter og enhetstester.
Del oppsetts- og avslutningskode blant testtilfeller.
Rapporter testresultater ved hjelp av konsollen.
Både enhetstestene og koden som skal testes skal skrives i Basic. Koden som testes kan kalle funksjoner skrevet på andre språk.
Tjenesten UnitTest er ikke tilgjengelig for Python-skript.
Et testtilfelle er den individuelle testenheten. Den ser etter en spesifikk respons på et bestemt sett med input.
I UnitTest-tjenesten er et testtilfelle representert av en enkel Basic Sub hvis navn starter med et vanlig prefiks (standard er "Test_").
Testtilfellet mislykkes hvis en av AssertX-metodene returnerer Usann.
En testpakke er en samling av testtilfeller som bør utføres sammen.
Alle testtilfeller av en testpakke er lagret i en enkelt Basic-modul.
En testpakke kan implementere metodene SetUp og TearDown for å forberede seg på testtilfeller i modulen.
En full enhetstest består av et sett med testsuiter i det samme Basic-biblioteket.
Før du bruker UnitTest-tjenesten, må ScriptForge-biblioteket lastes eller importeres:
Påkall tjenesten i enkel modus for å kalle AssertX-funksjoner uten å måtte bygge hele hierarkiet av testpakker og testtilfeller.
I enkel modus påkalles tjenesten inne i testsaken, som vist i eksemplet nedenfor:
    Sub SimpleTest
        On Local Error GoTo CatchError
        Dim myTest As Variant
        myTest = CreateScriptService("UnitTest")
        ' Noen få dummy-tester
        myTest.AssertEqual(1 + 1, 2)
        myTest.AssertEqual(1 - 1, 0)
        MsgBox("Alle tester bestått")
        Exit Sub
    CatchError:
        myTest.ReportError("En test feilet")
    End Sub
  I dette eksemplet, hvis noen av AssertEqual-kallene mislykkes, vil tolken gå til CatchError-etiketten og rapportere feilen ved å kalle ReportError-metoden .
Når den startes i full modus, er tjenesteopprettelsen eksternt i forhold til testkoden, og alle testene er organisert i testtilfeller og testsuiter i et enkelt bibliotek.
Følgende eksempel oppretter en UnitTest-forekomst hvis tester er plassert inne i det gjeldende dokumentet (ThisComponent) i "Tests"-biblioteket.
    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
    Dim myUnitTest As Variant
    myUnitTest = CreateScriptService("UnitTest", ThisComponent, "Tests")
  Tenk på at en ODS-fil har en modul kalt "MathUtils" i "Standard"-biblioteket med følgende kode:
    ' Kode i modulen Standard.MathUtils
    Function Sum(a, b) As Double
        Sum = a + b
    End Function
    
    Function Multiply(a, b) As Double
        Multiply = a * b
    End Function
  For å lage en full testpakke, tenk på at et nytt bibliotek kalt "Tester" er opprettet i filen med en enkelt modul "AllTests" som inneholder koden nedenfor:
    ' Kode i modulen Tests.AllTests
    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)
        ' Forberedelseskode kjørte før den første testsaken
        Dim exc As Variant
        exc = CreateScriptService("Exception")
        exc.Console(Modal := False)
    End Sub
    
    Sub TearDown(test)
        ' Valgfri oppryddingskode kalt etter siste testtilfelle
    End Sub
    
    Sub Test_Sum(test)
        On Local Error GoTo CatchError
        test.AssertEqual(Sum(1, 1), 2, "Sum to positive heltall")
        test.AssertEqual(Sum(-10, 20), 10, "Sum av negative og positive heltall")
        test.AssertEqual(Sum(1.5, 1), 2.5, "Sum av desimal- og heltallsverdier")
        Exit Sub
    CatchError:
        test.ReportError("Summetoden er ødelagt")
    End Sub
    
    Sub Test_Multiply(test)
        On Local Error GoTo CatchError
        test.AssertEqual(Multiply(2, 2), 4, "Multipliser to positive heltall")
        test.AssertEqual(Multiply(-4, 2), -8, "Multipliser negative og positive heltall")
        test.AssertEqual(Multiply(1.5, 3), 4.5, "Multiplikasjon av flyte- og heltallsverdier")
        Exit Sub
    CatchError:
        test.ReportError("Multiplikasjonsmetoden er ødelagt")
    End Sub
  Testpakken ovenfor består av to testtilfeller Test_Sum og Test_Multiply. For å kjøre alle testene, kjør Hoved-metoden fra "AllTests"-modulen.
Konsoll fra Exception-tjenesten er brukes som standard utgang for å skrive ut testresultater. Etter å ha kjørt eksemplet ovenfor, vil følgende utgang vises i konsollen:
    ' 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)
  Hvis noen av AssertEqual-metodene mislykkes under disse testene, legges en feilmelding til konsollen.
| Navn | Skrivebeskyttet | Type | Beskrivelse | 
|---|---|---|---|
| LongMessage | Nei | Boolean | Når satt til True (standard) viser konsollen standardmeldingen som er lagt til meldingen levert av testeren. Når Usann, brukes bare meldingen som er definert av testeren. | 
| ReturnCode | Ja | Integer | Verdi returnert av RunTest etter at enhetstesten er fullført. Neste er en liste over mulige verdier: 0 - Test fullført uten feil eller test ikke startet | 
| Verbose | Nei | Boolean | Når satt til Sann, rapporteres alle påstander i konsollen (mislykket eller ikke). Når Usann (standard), rapporteres kun feilaktige påstander. | 
| WhenAssertionFails | Nei | Integer | Definerer hva som gjøres når en påstand feiler. Neste er en liste over mulige verdier: 0 - Ignorer feilen og fortsett å kjøre testen | 
Alle påstander tester ett eller to uttrykk, i resten av denne hjelpesiden referert til som A og B. De er alltid de første eller to argumentene i AssertX-metoden.
Alle AssertX-metoder godtar et melding-argument som spesifiserer en egendefinert melding som skal rapporteres i konsollen angående påstanden. Som standard brukes en tom streng. Dette argumentet er alltid i siste posisjon i påstanden.
Noen AssertX-metoder godtar også tilleggsargumenter, som er beskrevet av deres syntakser nedenfor.
Returnerer True når A og B er numeriske verdier og anses å være nær hverandre, gitt en relativ toleranse.
svc.AssertAlmostEqual(a: any, b: any, tolerance: double = 1E-09, message: str = ""): bool
Denne påstanden returnerer Sann hvis de to betingelsene nedenfor er oppfylt:
A og B kan konverteres til typen Dobbel.
Den absolutte forskjellen mellom A og B delt på den største absolutte verdien av A eller B er lavere enn verdien spesifisert i toleranse.
Returnerer Sann når A og B anses å være like.
svc.AssertEqual(a: any, b: any, message: str = ""): bool
Når A og B er skalarer, returneres Sann hvis:
Begge uttrykkene har samme VarType eller er begge numeriske.
Boolske og numeriske verdier sammenlignes med =-operatoren.
Strenger sammenlignes med den innebygde StrComp-funksjonen. Sammenligningen skiller mellom store og små bokstaver.
Datoer og klokkeslett sammenlignes opp til sekundet.
Null, Tom og Ingenting er ikke like, men AssertEqual(Nothing, Nothing) returnerer Sann.
UNO-objekter sammenlignes med den innebygde EqualUnoObjects-metoden.
Merk at Basic-objekter aldri er like.
Når A og B er matriser, returneres Sann hvis:
Begge matrisene har samme antall dimensjoner (opptil 2 dimensjoner), og deres nedre og øvre grenser er identiske for alle dimensjoner.
Alle elementer i begge matrisene er like, én etter én.
To tomme matriser anses å være like.
Returnerer True når typen A er Boolsk og verdien er Usann.
svc.AssertFalse(a: any, message: str = ""): bool
Returnerer Sann når A er større enn B.
svc.AssertGreater(a: any, b: any, message: str = ""): bool
Sammenligningen mellom A og B forutsetter følgende:
Kvalifiserte datatyper er Streng, Dato eller numeriske.
Begge uttrykkene må ha samme VarType eller begge må være numeriske.
Strengesammenligninger skiller mellom store og små bokstaver.
Returnerer Sann når A er større enn eller lik B.
svc.AssertGreaterEqual(a: any, b: any, message: str = ""): bool
Sammenligningen mellom A og B forutsetter følgende:
Kvalifiserte datatyper er Streng, Dato eller numeriske.
Begge uttrykkene må ha samme VarType eller begge må være numeriske.
Strengesammenligninger skiller mellom store og små bokstaver.
Returnerer Sann når A er funnet i B.
svc.AssertIn(a: any, b: any, message: str = ""): bool
Denne påstanden forutsetter følgende:
Uttrykk B kan være en 1D-matrise, et ScriptForge Ordbok-objekt eller en streng.
Når uttrykk B er en 1D-matrise, kan uttrykk A være en dato eller en numerisk verdi.
Når uttrykk B er et ScriptForge Ordbok-objekt, søkes det etter streng A blant nøklene i B.
Strengesammenligninger skiller mellom store og små bokstaver.
Returnerer True når A er en forekomst av en spesifisert objekttype, spesifisert som en streng som inneholder typenavnet.
svc.AssertIsInstance(a: any, objecttype: str, message: str = ""): bool
Uttrykk A kan være ett av følgende:
Et ScriptForge-objekt. I dette tilfellet er objecttype-argumentet en streng som "DICTIONARY", "calc", "Dialog" osv.
Et UNO-objekt. I dette tilfellet må objecttype-argumentet være en streng som er identisk med verdien som returneres av metoden SF_Session.UnoObjectType().
En matrise. I dette tilfellet forventes objecttype-argumentet å være "matrise".
Enhver annen variabel (verken et Objekt eller en Matrise). I dette tilfellet er objekttype en streng som samsvarer med verdien som returneres av den innebygde funksjonen TypeName.
Returnerer Sann når A er et objekt som har Ingenting-verdien.
svc.AssertIsNothing(a: any, message: str = ""): bool
Returnerer Sann når A har Null-verdien.
svc.AssertIsNull(a: any, message: str = ""): bool
Returnerer True når A er mindre enn B.
svc.AssertLess(a: any, b: any, message: str = ""): bool
Sammenligningen mellom A og B forutsetter følgende:
Kvalifiserte datatyper er Streng, Dato eller numeriske.
Begge uttrykkene må ha samme VarType eller begge må være numeriske.
Strengesammenligninger skiller mellom store og små bokstaver.
Returnerer Sann når A er mindre enn eller lik B.
svc.AssertLessEqual(a: any, b: any, message: str = ""): bool
Sammenligningen mellom A og B forutsetter følgende:
Kvalifiserte datatyper er Streng, Dato eller numeriske.
Begge uttrykkene må ha samme VarType eller begge må være numeriske.
Strengesammenligninger skiller mellom store og små bokstaver.
Returnerer True hvis streng A samsvarer med et gitt mønster som inneholder jokertegn.
svc.AssertLike(a: any, pattern: str = "", message: str = ""): bool
Følgende jokertegn godtas:
? - Representerer et enkelt tegn.
* - Representerer null, ett eller flere tegn.
Returnerer True når A og B er numeriske verdier og ikke anses å være nær hverandre, gitt en relativ toleranse.
svc.AssertNotAlmostEqual(a: any, b: any, tolerance: double = 1E-09, message: str = ""): bool
Denne påstanden returnerer True hvis de to betingelsene nedenfor er oppfylt:
A og B kan konverteres til typen Dobbel.
Den absolutte forskjellen mellom A og B delt på den største absolutte verdien av A eller B er større enn verdien spesifisert i toleranse.
Returnerer True når A og B ikke anses å være like.
svc.AssertNotEqual(a: any, b: any, message: str = ""): bool
Denne metoden fungerer både for skalarer og matriser. Les instruksjonene i AssertEqual for mer informasjon om hva likhet betyr i denne påstand.
Returnerer Sann når A (en streng) ikke finnes i B.
svc.AssertNotIn(a: any, b: any, message: str = ""): bool
Les instruksjonene i AssertIn for mer informasjon om forutsetningene for denne metoden .
Returnerer True når A ikke er en forekomst av en spesifisert objekttype.
svc.AssertNotInstance(a: any, objecttype: str, message: str = ""): bool
Les instruksjonene i AssertIsInstance for mer informasjon om forutsetningene for denne metoden .
Returnerer True hvis streng A ikke samsvarer med et gitt mønster som inneholder jokertegn.
svc.AssertNotLike(a: any, pattern: str = "", message: str = ""): bool
Les instruksjonene i AssertLike for mer informasjon om forutsetningene for denne metoden .
Returnerer True bortsett fra når A er et objekt som har Ingenting-verdien.
svc.AssertNotNothing(a: any, message: str = ""): bool
Returnerer True bortsett fra når A har Null-verdien.
svc.AssertNotNull(a: any, message: str = ""): bool
Returnerer True når A ikke er en streng eller ikke samsvarer med det gitte regulære uttrykket.
svc.AssertNotRegex(a: any, regex: str = "", message: str = ""): bool
Sammenligningen skiller mellom store og små bokstaver.
Returnerer True når streng A samsvarer med det gitte regulære uttrykket.
svc.AssertRegex(a: any, regex: str = "", message: str = ""): bool
Sammenligningen skiller mellom store og små bokstaver.
Returnerer Sann når uttrykk A er en boolesk og verdien er Sann.
svc.AssertTrue(a: any, message: str = ""): bool
Tvinger en test til å mislykkes.
svc.Fail(message: str = "")
En melding kan gis som skal rapporteres i konsollen.
Skriver den spesifiserte meldingen i konsollen.
svc.Log(message: str = "")
En melding kan gis som skal rapporteres i konsollen.
Viser en meldingsboks med en melding og gjeldende egenskapsverdier for Unntak-tjenesten.
Denne metoden brukes ofte i unntakshåndteringsdelen av Sub som inneholder testsaken, som nås når en påstand mislykkes eller når Fail-metoden kalles.
svc.ReportError(message: str = "")
Avhengig av verdien av egenskapen WhenAssertionFails, kan testkjøringen fortsette eller bli avbrutt.
Når du skriver testtilfeller, anbefales det å inkludere et kall til ReportError-metoden i unntakshåndteringsdelen av Sub.
Hvis egenskapen LongMessage er lik True, blir den spesifiserte meldingen fulgt av standard feilmeldingsbeskrivelsen. Ellers vises bare meldingen.
Utfører hele testpakken implementert i den angitte modulen. Hver testcase kjøres uavhengig av hverandre.
Å kjøre en testpakke består av:
Kjøre den valgfrie Setup-metoden som finnes i modulen.
Utføres én gang i hvert testtilfelle, uten spesifikk rekkefølge.
Kjøre den valgfrie TearDown-metoden som finnes i modulen.
svc.RunTest(testsuite: str, testcasepattern: str = "", message: str = ""): int
Argumentet testcasepattern spesifiserer et mønster som består av "?" og "*" jokertegn for å velge hvilke testtilfeller som skal kjøres. Sammenligningen skiller ikke mellom store og små bokstaver.
Hvis en melding er gitt, skrives den til konsollen når testen starter.
Avbryter den kjørende test-siuten uten å kalle TearDown-metoden.
Å hoppe over en test er vanligvis meningsfullt under Oppsett-metoden når ikke alle betingelsene for å kjøre testen er oppfylt.
Det er opp til Setup-metoden å avslutte Sub kort tid etter SkipTest-anropet.
Hvis SkipTest kalles opp fra en testsak, avbrytes kjøringen av testpakken og de gjenværende testsakene kjøres ikke. Husk at rekkefølgen testtilfellene kjøres i er vilkårlig i en testpakke.
svc.SkipTest(message: str = "")
Hvis en melding er gitt, skrives den til konsollen.