LibreOffice 25.2 Hjelp
Tenesta UnitTest gjev eit rammeverk for å automatisere testar av einingar ved å bruka BASIC-språket, medrekna høve til å:
Oppsummer testtilfelle i testsuiter og einingstestar.
Dela setup- og shutdown-kode mellom test-tilfella.
Rapportera testresultata ved hjelp av konsollen.
Både einingstestane og koden som skal testast må skrivast i BASIC. Koden som vert testa kan kalla opp funksjonar skrive i andre språk.
Tenesta UnitTest er ikkje tilgjengeleg for Python-skript.
Eit testtilfelle er den individuelle testeininga. Det ser etter ein spesifikk respons i eit bestemt sett med inndata.
I tenesta UnitTest er eit testtilfelle representert av ein enkel BASIC-Sub der namnet byrjar med eit vanleg prefiks (standard er "Test_").
Testtilfellet er mislukka viss ein av metodane AssertX returnerer Usann.
Ein testsuite er ei samling av testtilfelle som bør utførast saman.
Alle testtilfella av ein testsuite er lagra i ein enkelt BASIC-modul.
Ein testsuite kan implementera metodane SetUp og TearDown for å gjera seg klar for testtilfelle i modulen.
Ein full einingstest inneheld eit sett med testsuiter i det same Basic-biblioteket.
Før du brukar tenesta UnitTest må biblioteket ScriptForge vera lasta inn eller importert:
Påkall tenesta i enkel modus for å kalla opp AssertX-funksjonar utan å måtta byggja opp heile hierarkiet av testsuiter og testtilfelle.
I enkel modus vert tenesta kalla opp inne i testsaken, som vist i eksempelet nedanfor:
    Sub SimpleTest
        On Local Error GoTo CatchError
        Dim myTest As Variant
        myTest = CreateScriptService("UnitTest")
        ' Nokre få dummy-testar
        myTest.AssertEqual(1 + 1, 2)
        myTest.AssertEqual(1 - 1, 0)
        MsgBox("Alle testar bestått")
        Exit Sub
    CatchError:
        myTest.ReportError("Ein test feila")
    End Sub
  I dette eksempelet, viss eit av AssertEqual oppkalla ikkje lukkast, går tolken til etiketten CatchError og rapporterer feilen ved å kalla opp metoden ReportError.
Ved oppkall i full modus, skjer tenesteopprettinga eksternt i høve til testkoden, og alle testane er organiserte i testtilfelle og testsuiter i eit enkelt bibliotek.
Eksempelet nedanfor lagar ein førekomst av UnitTest der testane er plasserte inne i det gjeldande dokumentet (ThisComponent) i "Tests"-biblioteket.
    GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
    Dim myUnitTest As Variant
    myUnitTest = CreateScriptService("UnitTest", ThisComponent, "Tests")
  Gå ut frå at ei ODS-fil har ein modul kalla "MathUtils" i "Standard"-biblioteket med denne koden:
    ' 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 å laga ei full testpakke, tenk på at eit nytt bibliotek kalla "Tests" er oppretta i fila med ein enkelt modul "AllTests" som inneheld koden nedanfor:
    ' 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)
        ' Førebuingskoden vart utført før det første testtilfellet
        Dim exc As Variant
        exc = CreateScriptService("Exception")
        exc.Console(Modal := False)
    End Sub
    
    Sub TearDown(test)
        ' Valfri oppryddingskode kalla opp etter siste testtilfelle
    End Sub
    
    Sub Test_Sum(test)
        On Local Error GoTo CatchError
        test.AssertEqual(Sum(1, 1), 2, "Sum to positive heiltal")
        test.AssertEqual(Sum(-10, 20), 10, "Sum av negative og positive heiltal")
        test.AssertEqual(Sum(1.5, 1), 2.5, "Sum av desimal- og heiltalsverdiar")
        Exit Sub
    CatchError:
        test.ReportError("Summermetoden mislukkast")
    End Sub
    
    Sub Test_Multiply(test)
        On Local Error GoTo CatchError
        test.AssertEqual(Multiply(2, 2), 4, "Multipliser to positive heiltal")
        test.AssertEqual(Multiply(-4, 2), -8, "Multipliser negative og positive heiltal")
        test.AssertEqual(Multiply(1.5, 3), 4.5, "Multiplikasjon av flyttals- og heiltalsverdiar")
        Exit Sub
    CatchError:
        test.ReportError("Multiplikasjonsmetoden mislukkast")
    End Sub
  Testpakken ovanfor inneheld dei to testtilfella Test_Sum og Test_Multiply. For å køyra alle testane, køyr Main-metoden frå modulen «AllTests»".
Konsoll frå tenesta Exception vert brukt som standard utgang for å skriva ut testresultat. Etter å ha køyrt eksempelet ovanfor, vert desse utdataa viste 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)
  Viss nokre av AssertEqual-metodane ikkje lukkast under desse testane, vert det lagt ut ei feilmelding i konsollen.
| Skriv inn eit namn for objektet | Skriveverna | Type | Beskriving | 
|---|---|---|---|
| LongMessage | Nei | Boolean | Når denne er sett til True (standard) viser konsollen standardmeldinga som er lagt til meldinga levert av testaren. Når Usann, vert berre meldinga som er definert av testaren brukt. | 
| ReturnCode | Ja | Integer | Verdi returnert av RunTest etter at einingstesten er fullført. Neste er ei liste over moglege verdiar: 0 – Test fullført utan feil eller test ikkje byrja | 
| Verbose | Nei | Boolean | Når denne er sett til True, vert alle utsegnene rapporterte i konsollen (mislukka eller ikkje). Når False (standard), vert berre mislukka utsegner rapporterte | 
| WhenAssertionFails | Nei | Integer | Definerer kva som skal gjerast når ein påstand feilar. Neste er ei liste over moglege verdiar: 0 – Ignorer feilen og hald fram med å køyra testen | 
Alle påstandar testar eitt eller to uttrykk, i resten av denne hjelpesida referert til som A og B. Dei er alltid dei første eitt eller to argumenta i metoden AssertX.
Alle AssertX-metodane godtar eit message-argument som spesifiserer ei sjølvdefinert melding som skal rapporterast i konsollen om utsegnet. Som standard vert det brukt ein tom streng. Dette argumentet er alltid på siste plass i utsegnet.
Nokre AssertX-metodar godtek også tilleggsargument som er forklarte av syntaksane deira nedanfor.
Returnerer True når A og B er numeriske verdiar og vert sette å vera nær kvarandre i høve til ein gjeven, relativ toleranse.
svc.AssertAlmostEqual(a: any, b: any, tolerance: double = 1E-09, message: str = ""): bool
Dette utsegnet returnerer True viss dei to vilkåra nedanfor er oppfylte:
A og B kan konverterast til typen Double.
Den absolutte skilnaden mellom A og B delt på den største absolutte verdien av A eller B er lågare enn verdien spesifisert i tolerance.
Returnerer True når A og B vert sett på som like.
svc.AssertEqual(a: any, b: any, message: str = ""): bool
Når A og B er skalarar, vert True returnert viss:
Begge uttrykka har same VarType eller er begge numeriske.
Boolske og numeriske verdiar vert samanlikna med operatoren =.
Strengar vert samanlikna med den innebygde StrComp-funksjonen. Samanlikninga skil mellom store og små bokstavar.
Datoar og klokkeslett vert samanlikna opp til sekundet.
Null, Empty og Nothing er ikkje like, men AssertEqual(Nothing, Nothing) returnerer True.
UNO-objekt vert samanlikna med den innebygde EqualUnoObjects-metoden.
Merk at Basic-objekt aldri er like.
Når A og B er matriser, vert True returnert viss:
Begge matrisene har same talet på dimensjonar (opptil 2), og dei nedre og øvre grensene er identiske for alle dimensjonane.
Alle elementa i begge matrisene er like.
To tomme matriser vert sett på som like.
Returnerer True når typen A er Boolsk og verdien er False.
svc.AssertFalse(a: any, message: str = ""): bool
Returnerer True når A er større enn B.
svc.AssertGreater(a: any, b: any, message: str = ""): bool
Samanlikninga mellom A og B krev følgjande:
Kvalifiserte datatypar er String, Date eller numeriske.
Begge uttrykka må ha same VarType eller begge må vera numeriske.
Strengsamanlikningar skil mellom store og små bokstavar.
Returnerer True når A er større enn eller lik B.
svc.AssertGreaterEqual(a: any, b: any, message: str = ""): bool
Samanlikninga mellom A og B krev følgjande:
Kvalifiserte datatypar er String, Date eller numeriske.
Begge uttrykka må ha same VarType eller begge må vera numeriske.
Strengsamanlikningar skil mellom store og små bokstavar.
Returnerer True når A er funne i B.
svc.AssertIn(a: any, b: any, message: str = ""): bool
Ei utsegn krev følgjande:
Uttrykk B kan vera ei 1D-matrise, eit ScriptForge Dictionary-objekt eller ein streng.
Når uttrykk B er ei 1D-matrise, kan uttrykket A vera ein dato eller ein numerisk verdi.
Når uttrykk B er eit ScriptForge Dictionary-objekt, vert det søkt etter streng A mellom nøklane i B.
Strengsamanlikningar skil mellom store og små bokstavar.
Returnerer True når A er ein førekomst av ein spesifisert objekttype, spesifisert som ein streng som inneheld typenamnet.
svc.AssertIsInstance(a: any, objecttype: str, message: str = ""): bool
Uttrykket A kan vera eitt av desse:
Eit ScriptForge-objekt. I dette tilfellet er objecttype-argumentet ein streng som «DICTIONARY», «calc», «Dialog» osv.
Eit UNO-objekt. I dette tilfellet må objecttype-argumentet vera ein streng som er identisk med verdien som vert returnert av metoden SF_Session.UnoObjectType().
Ei matrise. I dette tilfellet går ein ut frå at objecttype-argumentet er ei «matrise».
Kva annan variabel som helst (korkje eit Objekt eller ei Matrise). I dette tilfellet er objecttype ein streng som svarer til verdien som som vert returnert av den innebygde funksjonen TypeName.
Returnerer True når A er eit objekt med verdien Nothing.
svc.AssertIsNothing(a: any, message: str = ""): bool
Returnerer True når A har verdien Null.
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
Samanlikninga mellom A og B krev følgjande:
Kvalifiserte datatypar er String, Date eller numerisk.
Begge uttrykka må ha same VarType eller begge må vera numeriske.
Strengsamanlikningar skil mellom store og små bokstavar.
Returnerer True når A er mindre enn eller lik B.
svc.AssertLessEqual(a: any, b: any, message: str = ""): bool
Samanlikninga mellom A og B krev følgjande:
Kvalifiserte datatypar er String, Date eller numerisk.
Begge uttrykka må ha same VarType eller begge må vera numeriske.
Strengsamanlikningar skil mellom store og små bokstavar.
Returnerer True viss streng A samsvarar med eit gjeve mønster som inneheld jokerteikn.
svc.AssertLike(a: any, pattern: str = "", message: str = ""): bool
Desse jokerteikna vert aksepterte:
? – står for eitt enkelt teikn
* – representerer null, eitt eller fleire teikn.
Returnerer True når A og B er numeriske verdiar og ikkje vert sette å vera nær kvarandre i høve til ein gjeven, relativ toleranse.
svc.AssertNotAlmostEqual(a: any, b: any, tolerance: double = 1E-09, message: str = ""): bool
Dette utsegnet returnerer True viss dei to vilkåra nedanfor er oppfylte:
A og B kan konverterast til typen Double.
Den absolutte skilnaden mellom A og B delt på den største absolutte verdien av A eller B er atørre enn verdien spesifisert i tolerance.
Returnerer True når A og B ikkje vert sett på som like.
svc.AssertNotEqual(a: any, b: any, message: str = ""): bool
Denne metoden fungerer både for skalarer og matriser. Les instruksjonane i AssertEqual for meir informasjon om kva likskap betyr i denne påstanden.
Returnerer True når A (ein streng) ikkje finst i B.
svc.AssertNotIn(a: any, b: any, message: str = ""): bool
Les instruksjonane i AssertIn for meir informasjon om føresetnadane for denne metoden .
Returnerer True når A ikkje er ein førekomst av ein spesifisert objekttype.
svc.AssertNotInstance(a: any, objecttype: str, message: str = ""): bool
Les instruksjonane i AssertIsInstance for meir informasjon om føresetnadane for denne metoden .
Returnerer True viss streng A ikkje samsvarar med eit gjeve mønster som inneheld jokerteikn.
svc.AssertNotLike(a: any, pattern: str = "", message: str = ""): bool
Les instruksjonane i AssertLike for meir informasjon om føresetnadane for denne metoden .
Returnerer True bortsett frå når A er eit objekt med verdien Nothing.
svc.AssertNotNothing(a: any, message: str = ""): bool
Returnerer Truebortsett frå når A har verdien Null.
svc.AssertNotNull(a: any, message: str = ""): bool
Returnerer True når A ikkje er ein streng eller ikkje samsvarar med det gjevne regulære uttrykket.
svc.AssertNotRegex(a: any, regex: str = "", message: str = ""): bool
Samanlikninga skil mellom store og små bokstavar.
Returnerer True når streng A samsvarar med eit gjeve regulært uttrykk.
svc.AssertRegex(a: any, regex: str = "", message: str = ""): bool
Samanlikninga skil mellom store og små bokstavar.
Returnerer True når uttrykket A er Boolsk og verdien er True.
svc.AssertTrue(a: any, message: str = ""): bool
Tvingar ein test til å mislukkast.
svc.Fail(message: str = "")
Det kan gjevast ei melding som skal rapporterast i konsollen.
Skriv den spesifiserte meldinga i konsollen.
svc.Log(message: str = "")
Det kan gjevast ei melding som skal rapporterast i konsollen.
Viser ein meldingsboks med ei melding og gjeldande eigenskapsverdiar for Exeption-tenesta.
Denne metoden vert ofte brukt i unntakshansamingsdelen av Sub som inneheld testsaka, som vert nådd når ein påstand mislukkast eller når metoden Fail vert kalla opp.
svc.ReportError(message: str = "")
Avhengig av verdien av eigenskapen WhenAssertionFails, kan testkøyringa halda fram eller avbrytast.
Når du skriv testtilfelle, vert det rådd til å ta med eit kall til metoden ReportError i unntakshandsamingsdelen av Sub.
Viss eigenskapen LongMessage er lik True, vert det sett inn ei standard meldingsbeskriving etter den spesifiserte meldinga. Ellers vert berre meldinga vist.
Utfører heile testpakken implementert i den gjevne modulen. Kvart testtilfelle vert køyrd uavhengig av dei andre.
Å køyra ein testpakke består av:
Køyra den valfrie Setup-metoden som finst i modulen.
Køyra kvart testtilfelle éin gong utan bestemt rekkjefølgje.
Køyra den valfrie TearDown-metoden som finst i modulen.
svc.RunTest(testsuite: str, testcasepattern: str = "", message: str = ""): int
Argumentet testcasepattern spesifiserer eit mønster sett saman av jokerteikna «?» og «*» for å velja kva testtilfelle som skal køyrast. Samanlikninga skil ikkje mellom store og små bokstavar.
Viss det er gjeve ei melding, vert denne skrive til konsollen når testen byrjar.
Avbryter den køyrande testsuiten utan å kalla opp TearDown-metoden.
Til vanleg er det meiningsfullt å hoppa over ein test under Setup-metoden når ikkje alle vilkåra for å køyra testen er oppfylte.
Det er opp til Setup-metoden å avslutta Sub kort tid etter oppkallet til SkipTest.
Viss SkipTest vert kalla opp frå ei testsak, vert køyringa av testpakken avbroten og resten av testane vert ikkje utførte. Hugs at rekkjefølgja testtilfella vert køyrde i er vilkårleg i ein testpakke.
svc.SkipTest(message: str = "")
Viss det er gjeve ei melding, vert denne skrive til konsollen.