ເນື້ອໃນ

# ບໍລິການ SFUnitTests.UnitTest

ບໍລິການ UnitTest ມີໂຄງສ້າງສຳລັບການທົດສອບໜ່ວຍຍ່ອຍແບບອັດຕະໂນມັດໂດຍໃຊ້ພາສາ Basic, ເຊິ່ງລວມມີຄວາມສາມາດໃນການ:

- ລວມກໍລະນີທົດສອບເຂົ້າໃນຊຸດການທົດສອບ ແລະ ການທົດສອບໜ່ວຍຍ່ອຍ.

- ໃຊ້ໂຄ້ດການຕັ້ງຄ່າ ແລະ ການປິດການເຮັດວຽກຮ່ວມກັນລະຫວ່າງກໍລະນີທົດສອບ.

- ລາຍງານຜົນການທົດສອບໂດຍໃຊ້ Console.

ທັງການທົດສອບໜ່ວຍຍ່ອຍ ແລະ ໂຄ້ດທີ່ຈະຖືກທົດສອບຕ້ອງຂຽນດ້ວຍພາສາ Basic. ໂຄ້ດທີ່ຖືກທົດສອບອາດຈະຮຽກໃຊ້ຟັງຊັນທີ່ຂຽນດ້ວຍພາສາອື່ນກໍໄດ້.

ບໍລິການ UnitTest ບໍ່ມີໃຫ້ໃຊ້ສຳລັບສະຄຣິບ Python.

## ຄຳນິຍາມ

### ກໍລະນີທົດສອບ

ກໍລະນີທົດສອບແມ່ນໜ່ວຍທົດສອບແຕ່ລະອັນ. ມັນຈະກວດສອບການຕອບສະໜອງສະເພາະຕໍ່ກັບຊຸດຂອງຂໍ້ມູນນຳເຂົ້າໃດໜຶ່ງ.

ໃນບໍລິການ UnitTest, ກໍລະນີທົດສອບຈະຖືກສະແດງໂດຍ Basic Sub ດຽວ ເຊິ່ງຊື່ຂອງມັນຂຶ້ນຕົ້ນດ້ວຍຄຳນຳໜ້າທີ່ກຳນົດໄວ້ (ຄ່າເລີ່ມຕົ້ນແມ່ນ "Test_").

ກໍລະນີທົດສອບຈະຖືວ່າຫຼົ້ມເຫຼວ ຖ້າໜຶ່ງໃນວິທີການ AssertX ສົ່ງຄືນຄ່າ False.

### ຊຸດການທົດສອບ

ຊຸດການທົດສອບແມ່ນການລວບລວມກໍລະນີທົດສອບທີ່ຄວນຈະເຮັດວຽກຮ່ວມກັນ.

ທຸກໆກໍລະນີທົດສອບຂອງຊຸດການທົດສອບຈະຖືກເກັບໄວ້ໃນໂມດູນ Basic ດຽວ.

ຊຸດການທົດສອບອາດຈະໃຊ້ວິທີການ SetUp ແລະ TearDown ເພື່ອກຽມຄວາມພ້ອມສຳລັບກໍລະນີທົດສອບໃນໂມດູນຂອງມັນ.

### ການທົດສອບໜ່ວຍຍ່ອຍ

ການທົດສອບໜ່ວຍຍ່ອຍແບບເຕັມຮູບແບບປະກອບດ້ວຍຊຸດການທົດສອບຫຼາຍອັນໃນໄລບຣາຣີ Basic ດຽວກັນ.

## ການຮຽກໃຊ້ບໍລິການ

ກ່ອນທີ່ຈະໃຊ້ບໍລິການ UnitTest, ໄລບຣາຣີ ScriptForge ຕ້ອງຖືກໂຫຼດ ຫຼື ນຳເຂົ້າກ່ອນ:

• ມາໂຄຣ Basic ຕ້ອງມີການໂຫຼດຄັງສຳນວນ ScriptForge ໂດຍໃຊ້ຄຳສັ່ງດັ່ງນີ້:
GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
• ສະຄຣິບ Python ຕ້ອງມີການນຳເຂົ້າຈາກໂມດູນ scriptforge:
from scriptforge import CreateScriptService

### ໂໝດແບບງ່າຍ

ຮຽກໃຊ້ບໍລິການໃນ ໂໝດແບບງ່າຍ ເພື່ອໃຊ້ຟັງຊັນ AssertX ໂດຍບໍ່ຕ້ອງສ້າງລຳດັບຂັ້ນຂອງຊຸດການທົດສອບ ແລະ ກໍລະນີທົດສອບແບບເຕັມຮູບແບບ.

ໃນໂໝດແບບງ່າຍ, ບໍລິການຈະຖືກຮຽກໃຊ້ພາຍໃນກໍລະນີທົດສອບ, ດັ່ງທີ່ສະແດງໃນຕົວຢ່າງຂ້າງລຸ່ມນີ້:

        Sub SimpleTest
            On Local Error GoTo CatchError
            Dim myTest As Variant
            myTest = CreateScriptService("UnitTest")
            ' ການທົດສອບຕົວຢ່າງບາງອັນ
            myTest.AssertEqual(1 + 1, 2)
            myTest.AssertEqual(1 - 1, 0)
            MsgBox("ການທົດສອບທັງໝົດຜ່ານ")
            Exit Sub
        CatchError:
            myTest.ReportError("ການທົດສອບຫຼົ້ມເຫຼວ")
        End Sub

ໃນຕົວຢ່າງນີ້, ຖ້າການຮຽກໃຊ້ AssertEqual ໃດໜຶ່ງຫຼົ້ມເຫຼວ, ຕົວແປພາສາຈະໄປທີ່ປ້າຍກຳກັບ CatchError ແລະ ລາຍງານຂໍ້ຜິດພາດໂດຍການຮຽກໃຊ້ວິທີການ ReportError.

### ໂໝດເຕັມຮູບແບບ

ເມື່ອຮຽກໃຊ້ໃນ ໂໝດເຕັມຮູບແບບ, ການສ້າງບໍລິການຈະຢູ່ນອກໂຄ້ດທົດສອບ ແລະ ທຸກການທົດສອບຈະຖືກຈັດເປັນກໍລະນີທົດສອບ ແລະ ຊຸດການທົດສອບພາຍໃນໄລບຣາຣີດຽວກັນ.

ຕົວຢ່າງຕໍ່ໄປນີ້ຈະສ້າງອິນສະແຕນຊ໌ UnitTest ທີ່ການທົດສອບຂອງມັນຕັ້ງຢູ່ໃນເອກະສານປັດຈຸບັນ (ThisComponent) ໃນໄລບຣາຣີ "Tests".

        GlobalScope.BasicLibraries.loadLibrary("ScriptForge")
        Dim myUnitTest As Variant
        myUnitTest = CreateScriptService("UnitTest", ThisComponent, "Tests")

### ຕົວຢ່າງແບບງ່າຍທີ່ສຸດໃນໂໝດເຕັມຮູບແບບ

ສົມມຸດວ່າໄຟລ໌ ODS ມີໂມດູນຊື່ "MathUtils" ໃນໄລບຣາຣີ "Standard" ທີ່ມີໂຄ້ດດັ່ງນີ້:

        ' ໂຄ້ດໃນໂມດູນ Standard.MathUtils
        Function Sum(a, b) As Double
            Sum = a + b
        End Function

        Function Multiply(a, b) As Double
            Multiply = a * b
        End Function

ເພື່ອສ້າງຊຸດການທົດສອບແບບເຕັມຮູບແບບ, ສົມມຸດວ່າມີໄລບຣາຣີໃໝ່ຊື່ "Tests" ຖືກສ້າງຂຶ້ນໃນໄຟລ໌ ພ້ອມດ້ວຍໂມດູນ "AllTests" ທີ່ມີໂຄ້ດດັ່ງລຸ່ມນີ້:

        ' ໂຄ້ດໃນໂມດູນ 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)
            ' ໂຄ້ດການກຽມພ້ອມທີ່ເຮັດວຽກກ່ອນກໍລະນີທົດສອບທຳອິດ
            Dim exc As Variant
            exc = CreateScriptService("Exception")
            exc.Console(Modal := False)
        End Sub

        Sub TearDown(test)
            ' ໂຄ້ດການລຶບລ້າງ (ຖ້າມີ) ທີ່ຖືກຮຽກໃຊ້ຫຼັງຈາກກໍລະນີທົດສອບສຸດທ້າຍ
        End Sub

        Sub Test_Sum(test)
            On Local Error GoTo CatchError
            test.AssertEqual(Sum(1, 1), 2, "ບວກຈຳນວນຖ້ວນບວກສອງຄ່າ")
            test.AssertEqual(Sum(-10, 20), 10, "ບວກຈຳນວນຖ້ວນລົບ ແລະ ຈຳນວນຖ້ວນບວກ")
            test.AssertEqual(Sum(1.5, 1), 2.5, "ບວກຄ່າເລກທົດສະນິຍົມ ແລະ ຈຳນວນຖ້ວນ")
            Exit Sub
        CatchError:
            test.ReportError("ວິທີການ Sum ມີບັນຫາ")
        End Sub

        Sub Test_Multiply(test)
            On Local Error GoTo CatchError
            test.AssertEqual(Multiply(2, 2), 4, "ຄູນຈຳນວນຖ້ວນບວກສອງຄ່າ")
            test.AssertEqual(Multiply(-4, 2), -8, "ຄູນຈຳນວນຖ້ວນລົບ ແລະ ຈຳນວນຖ້ວນບວກ")
            test.AssertEqual(Multiply(1.5, 3), 4.5, "ຄູນຄ່າເລກທົດສະນິຍົມ ແລະ ຈຳນວນຖ້ວນ")
            Exit Sub
        CatchError:
            test.ReportError("ວິທີການ Multiply ມີບັນຫາ")
        End Sub

ຊຸດການທົດສອບຂ້າງເທິງປະກອບດ້ວຍສອງກໍລະນີທົດສອບຄື Test_Sum ແລະ Test_Multiply. ເພື່ອທົດສອບທັງໝົດ ພຽງແຕ່ເຮັດວຽກວິທີການ Main ຈາກໂມດູນ "AllTests".

Console ຈາກບໍລິການ Exception ຈະຖືກໃຊ້ເປັນບ່ອນສະແດງຜົນເລີ່ມຕົ້ນເພື່ອພິມຜົນການທົດສອບ. ຫຼັງຈາກເຮັດວຽກຕົວຢ່າງຂ້າງເທິງ, ຜົນການສະແດງຕໍ່ໄປນີ້ຈະປາກົດໃນ console:

        ' 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 ໃດໜຶ່ງຫຼົ້ມເຫຼວໃນລະຫວ່າງການທົດສອບ, ຂໍ້ຄວາມສະແດງຂໍ້ຜິດພາດຈະຖືກເພີ່ມເຂົ້າໃນ console.

## ຄຸນສົມບັດ

ຊື່ | ອ່ານຢ່າງດຽວ | ປະເພດ | ຄຳອະທິບາຍ
--- | --- | --- | ---
LongMessage | ບໍ່ | Boolean | ເມື່ອຕັ້ງເປັນ True (ຄ່າເລີ່ມຕົ້ນ), console ຈະສະແດງຂໍ້ຄວາມມາດຕະຖານຕໍ່ທ້າຍຂໍ້ຄວາມທີ່ຜູ້ທົດສອບລະບຸ. ເມື່ອເປັນ False, ຈະສະແດງສະເພາະຂໍ້ຄວາມທີ່ຜູ້ທົດສອບກຳນົດເທົ່ານັ້ນ.
ReturnCode | ແມ່ນ | Integer | ຄ່າທີ່ສົ່ງຄືນໂດຍ RunTest ຫຼັງຈາກການທົດສອບໜ່ວຍຍ່ອຍສຳເລັດ. ລຸ່ມນີ້ແມ່ນລາຍການຄ່າທີ່ເປັນໄປໄດ້: 0 - ການທົດສອບສຳເລັດໂດຍບໍ່ມີຂໍ້ຜິດພາດ ຫຼື ການທົດສອບຍັງບໍ່ໄດ້ເລີ່ມ 1 - ການຢືນຢັນ (assertion) ພາຍໃນກໍລະນີທົດສອບສົ່ງຄືນຄ່າ False 2 - ມີການໃຊ້ SkipTest ໂດຍວິທີການ Setup ຫຼື ໂດຍກໍລະນີທົດສອບໃດໜຶ່ງ. 3 - ການທົດສອບສິ້ນສຸດແບບຜິດປົກກະຕິ
Verbose | ບໍ່ | Boolean | ເມື່ອຕັ້ງເປັນ True, ທຸກການຢືນຢັນຈະຖືກລາຍງານໃນ console (ບໍ່ວ່າຈະຜ່ານ ຫຼື ບໍ່). ເມື່ອເປັນ False (ຄ່າເລີ່ມຕົ້ນ), ຈະລາຍງານສະເພາະການຢືນຢັນທີ່ຫຼົ້ມເຫຼວເທົ່ານັ້ນ.
WhenAssertionFails | ບໍ່ | Integer | ກຳນົດສິ່ງທີ່ຈະເຮັດເມື່ອການຢືນຢັນຫຼົ້ມເຫຼວ. ລຸ່ມນີ້ແມ່ນລາຍການຄ່າທີ່ເປັນໄປໄດ້: 0 - ລະເວັ້ນຄວາມຫຼົ້ມເຫຼວ ແລະ ເຮັດວຽກການທົດສອບຕໍ່ໄປ 1 - ວິທີການ TearDown ໃນໂມດູນຈະຖືກເຮັດວຽກໃນຊຸດການທົດສອບປັດຈຸບັນ ແລະ ເລີ່ມຊຸດຕໍ່ໄປ (ຄ່າເລີ່ມຕົ້ນໃນໂໝດເຕັມຮູບແບບ). 2 - ຢຸດທັນທີ (ຄ່າເລີ່ມຕົ້ນໃນໂໝດແບບງ່າຍ)

ລາຍການວິທີການໃນບໍລິການ UnitTest
AssertAlmostEqual AssertEqual AssertFalse AssertGreater AssertGreaterEqual AssertIn AssertIsInstance AssertIsNothing AssertLike | AssertNotRegex AssertIsNull AssertLess AssertLessEqual AssertNotAlmostEqual AssertNotEqual AssertNotIn AssertNotInstance AssertNotLike | AssertNotNothing AssertNotNull AssertRegex AssertTrue Fail Log ReportError RunTest SkipTest

## ອາຄິວເມນຂອງວິທີການ AssertX

ທຸກການຢືນຢັນຈະທົດສອບໜຶ່ງ ຫຼື ສອງນິພົດ, ເຊິ່ງໃນໜ້າຊ່ວຍເຫຼືອນີ້ຈະເອີ້ນວ່າ A ແລະ B. ພວກມັນຈະເປັນອາຄິວເມນທຳອິດ ຫຼື ສອງອັນທຳອິດສະເໝີໃນວິທີການ AssertX.

ທຸກວິທີການ AssertX ຮັບອາຄິວເມນ message ເພື່ອລະບຸຂໍ້ຄວາມທີ່ກຳນົດເອງທີ່ຈະລາຍງານໃນ console ກ່ຽວກັບການຢືນຢັນນັ້ນ. ຄ່າເລີ່ມຕົ້ນແມ່ນຂໍ້ຄວາມຫວ່າງເປົ່າ. ອາຄິວເມນນີ້ຈະຢູ່ໃນຕຳແໜ່ງສຸດທ້າຍຂອງການຢືນຢັນສະເໝີ.

ບາງວິທີການ AssertX ຍັງຮັບອາຄິວເມນເພີ່ມເຕີມ, ດັ່ງທີ່ອະທິບາຍໄວ້ໃນຮູບແບບໄວຍາກອນຂ້າງລຸ່ມນີ້.

## AssertAlmostEqual

ສົ່ງຄືນ True ເມື່ອ A ແລະ B ເປັນຄ່າຕົວເລກ ແລະ ຖືວ່າຢູ່ໃກ້ຄຽງກັນ ໂດຍອີງຕາມຄ່າຄວາມຄາດເຄື່ອນທຽບຖານ (relative tolerance) ທີ່ກຳນົດໃຫ້.

### ໄວຍາກອນ:

svc.AssertAlmostEqual(a: any, b: any, tolerance: double = 1E-09, message: str = ""): bool

ການຢືນຢັນນີ້ຈະສົ່ງຄືນ True ຖ້າເປັນໄປຕາມສອງເງື່ອນໄຂລຸ່ມນີ້:

- A ແລະ B ສາມາດຖືກແປງເປັນປະເພດ Double ໄດ້.

- ຜົນຕ່າງສຳບູນລະຫວ່າງ A ແລະ B ຫານດ້ວຍຄ່າສຳບູນທີ່ໃຫຍ່ທີ່ສຸດຂອງ A ຫຼື B ມີຄ່າ ຕ່ຳກວ່າ ຄ່າທີ່ລະບຸໃນ tolerance.

## AssertEqual

ສົ່ງຄືນ True ເມື່ອ A ແລະ B ຖືວ່າເທົ່າກັນ.

### ໄວຍາກອນ:

svc.AssertEqual(a: any, b: any, message: str = ""): bool

ເມື່ອ A ແລະ B ເປັນຄ່າສະກາລາ (scalars), ຈະສົ່ງຄືນ True ຖ້າ:

- ທັງສອງນິພົດມີ VarType ດຽວກັນ ຫຼື ເປັນຕົວເລກທັງສອງ.

- ຄ່າບູລີນ (Boolean) ແລະ ຄ່າຕົວເລກຈະຖືກປຽບທຽບດ້ວຍຕົວດຳເນີນການ =.

- ຂໍ້ຄວາມ (Strings) ຈະຖືກປຽບທຽບດ້ວຍຟັງຊັນ StrComp ທີ່ມີໃນຕົວ. ການປຽບທຽບນີ້ແມ່ນລະອຽດຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ.

- ວັນທີ ແລະ ເວລາຈະຖືກປຽບທຽບລະອຽດເຖິງລະດັບວິນາທີ.

- Null, Empty ແລະ Nothing ແມ່ນບໍ່ເທົ່າກັນ, ແຕ່ AssertEqual(Nothing, Nothing) ຈະສົ່ງຄືນ True.

- ອັອບເຈັກ UNO ຈະຖືກປຽບທຽບດ້ວຍວິທີການ EqualUnoObjects ທີ່ມີໃນຕົວ.

- ໝາຍເຫດ: ອັອບເຈັກ Basic ຈະບໍ່ມີວັນເທົ່າກັນ.

ເມື່ອ A ແລະ B ເປັນອາເຣ (arrays), ຈະສົ່ງຄືນ True ຖ້າ:

- ອາເຣທັງສອງມີຈຳນວນມິຕິເທົ່າກັນ (ສູງສຸດ 2 ມິຕິ) ແລະ ມີຂອບເຂດລຸ່ມ (lower bound) ແລະ ຂອບເຂດເທິງ (upper bound) ຄືກັນໃນທຸກມິຕິ.

- ທຸກລາຍການໃນອາເຣທັງສອງມີຄ່າເທົ່າກັນແຕ່ລະອັນ.

- ອາເຣຫວ່າງເປົ່າສອງອັນຖືວ່າເທົ່າກັນ.

## AssertFalse

ສົ່ງຄືນ True ເມື່ອປະເພດຂອງ A ແມ່ນ Boolean ແລະ ມີຄ່າເປັນ False.

### ໄວຍາກອນ:

svc.AssertFalse(a: any, message: str = ""): bool

## AssertGreater

ສົ່ງຄືນ True ເມື່ອ A ມີຄ່າຫຼາຍກວ່າ B.

### ໄວຍາກອນ:

svc.AssertGreater(a: any, b: any, message: str = ""): bool

ການປຽບທຽບລະຫວ່າງ A ແລະ B ຈະອີງຕາມເງື່ອນໄຂດັ່ງນີ້:

- ປະເພດຂໍ້ມູນທີ່ຮອງຮັບແມ່ນ String, Date ຫຼື ຕົວເລກ.

- ທັງສອງນິພົດຕ້ອງມີ VarType ດຽວກັນ ຫຼື ເປັນຕົວເລກທັງສອງ.

- ການປຽບທຽບຂໍ້ຄວາມແມ່ນລະອຽດຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ.

## AssertGreaterEqual

ສົ່ງຄືນ True ເມື່ອ A ມີຄ່າຫຼາຍກວ່າ ຫຼື ເທົ່າກັບ B.

### ໄວຍາກອນ:

svc.AssertGreaterEqual(a: any, b: any, message: str = ""): bool

ການປຽບທຽບລະຫວ່າງ A ແລະ B ຈະອີງຕາມເງື່ອນໄຂດັ່ງນີ້:

- ປະເພດຂໍ້ມູນທີ່ຮອງຮັບແມ່ນ String, Date ຫຼື ຕົວເລກ.

- ທັງສອງນິພົດຕ້ອງມີ VarType ດຽວກັນ ຫຼື ເປັນຕົວເລກທັງສອງ.

- ການປຽບທຽບຂໍ້ຄວາມແມ່ນລະອຽດຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ.

## AssertIn

ສົ່ງຄືນ True ເມື່ອພົບ A ໃນ B.

### ໄວຍາກອນ:

svc.AssertIn(a: any, b: any, message: str = ""): bool

ການຢືນຢັນນີ້ຈະອີງຕາມເງື່ອນໄຂດັ່ງນີ້:

- ນິພົດ B ອາດຈະເປັນອາເຣ 1 ມິຕິ (1D array), ອັອບເຈັກ Dictionary ຂອງ ScriptForge ຫຼື ຂໍ້ຄວາມ.

- ເມື່ອນິພົດ B ເປັນອາເຣ 1 ມິຕິ, ນິພົດ A ອາດຈະເປັນວັນທີ ຫຼື ຄ່າຕົວເລກ.

- ເມື່ອນິພົດ B ເປັນອັອບເຈັກ Dictionary ຂອງ ScriptForge, ຈະມີການຄົ້ນຫາຂໍ້ຄວາມ A ໃນບັນດາຄີ (keys) ຂອງ B.

- ການປຽບທຽບຂໍ້ຄວາມແມ່ນລະອຽດຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ.

## AssertIsInstance

ສົ່ງຄືນ True ເມື່ອ A ເປັນອິນສະແຕນຊ໌ຂອງປະເພດອັອບເຈັກທີ່ລະບຸ (ລະບຸເປັນຂໍ້ຄວາມທີ່ບັນຈຸຊື່ປະເພດ).

### ໄວຍາກອນ:

svc.AssertIsInstance(a: any, objecttype: str, message: str = ""): bool

ນິພົດ A ອາດຈະເປັນໜຶ່ງໃນສິ່ງຕໍ່ໄປນີ້:

- ອັອບເຈັກ ScriptForge. ໃນກໍລະນີນີ້, ອາຄິວເມນ objecttype ຈະເປັນຂໍ້ຄວາມເຊັ່ນ "DICTIONARY", "calc", "Dialog", ແລະ ອື່ນໆ.

- ອັອບເຈັກ UNO. ໃນກໍລະນີນີ້, ອາຄິວເມນ objecttype ຕ້ອງເປັນຂໍ້ຄວາມທີ່ຄືກັນກັບຄ່າທີ່ສົ່ງຄືນໂດຍວິທີການ SF_Session.UnoObjectType().

- ອາເຣ (Array). ໃນກໍລະນີນີ້, ອາຄິວເມນ objecttype ຄວນຈະເປັນ "array".

- ຕົວປ່ຽນອື່ນໆ (ທີ່ບໍ່ແມ່ນທັງ Object ແລະ Array). ໃນກໍລະນີນີ້, objecttype ຈະເປັນຂໍ້ຄວາມທີ່ກົງກັບຄ່າທີ່ສົ່ງຄືນໂດຍຟັງຊັນ TypeName ທີ່ມີໃນຕົວ.

## AssertIsNothing

ສົ່ງຄືນ True ເມື່ອ A ເປັນອັອບເຈັກທີ່ມີຄ່າເປັນ Nothing.

### ໄວຍາກອນ:

svc.AssertIsNothing(a: any, message: str = ""): bool

## AssertIsNull

ສົ່ງຄືນ True ເມື່ອ A ມີຄ່າເປັນ Null.

### ໄວຍາກອນ:

svc.AssertIsNull(a: any, message: str = ""): bool

## AssertLess

ສົ່ງຄືນ True ເມື່ອ A ມີຄ່າໜ້ອຍກວ່າ B.

### ໄວຍາກອນ:

svc.AssertLess(a: any, b: any, message: str = ""): bool

ການປຽບທຽບລະຫວ່າງ A ແລະ B ຈະອີງຕາມເງື່ອນໄຂດັ່ງນີ້:

- ປະເພດຂໍ້ມູນທີ່ຮອງຮັບແມ່ນ String, Date ຫຼື ຕົວເລກ.

- ທັງສອງນິພົດຕ້ອງມີ VarType ດຽວກັນ ຫຼື ເປັນຕົວເລກທັງສອງ.

- ການປຽບທຽບຂໍ້ຄວາມແມ່ນລະອຽດຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ.

## AssertLessEqual

ສົ່ງຄືນ True ເມື່ອ A ມີຄ່າໜ້ອຍກວ່າ ຫຼື ເທົ່າກັບ B.

### ໄວຍາກອນ:

svc.AssertLessEqual(a: any, b: any, message: str = ""): bool

ການປຽບທຽບລະຫວ່າງ A ແລະ B ຈະອີງຕາມເງື່ອນໄຂດັ່ງນີ້:

- ປະເພດຂໍ້ມູນທີ່ຮອງຮັບແມ່ນ String, Date ຫຼື ຕົວເລກ.

- ທັງສອງນິພົດຕ້ອງມີ VarType ດຽວກັນ ຫຼື ເປັນຕົວເລກທັງສອງ.

- ການປຽບທຽບຂໍ້ຄວາມແມ່ນລະອຽດຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ.

## AssertLike

ສົ່ງຄືນ True ຖ້າຂໍ້ຄວາມ A ກົງກັບຮູບແບບທີ່ກຳນົດໃຫ້ເຊິ່ງມີຕົວແທນ (wildcards).

### ໄວຍາກອນ:

svc.AssertLike(a: any, pattern: str = "", message: str = ""): bool

ຕົວແທນ (wildcards) ທີ່ຮອງຮັບມີດັ່ງນີ້:

- ? - ແທນຕົວອັກສອນໃດໜຶ່ງພຽງຕົວດຽວ.

- * - ແທນຕົວອັກສອນສູນຕົວ, ໜຶ່ງຕົວ ຫຼື ຫຼາຍຕົວ.

## AssertNotAlmostEqual

ສົ່ງຄືນ True ເມື່ອ A ແລະ B ເປັນຄ່າຕົວເລກ ແລະ ຖືວ່າ ບໍ່ ໃກ້ຄຽງກັນ ໂດຍອີງຕາມຄ່າຄວາມຄາດເຄື່ອນທຽບຖານທີ່ກຳນົດໃຫ້.

### ໄວຍາກອນ:

svc.AssertNotAlmostEqual(a: any, b: any, tolerance: double = 1E-09, message: str = ""): bool

ການຢືນຢັນນີ້ຈະສົ່ງຄືນ True ຖ້າເປັນໄປຕາມສອງເງື່ອນໄຂລຸ່ມນີ້:

- A ແລະ B ສາມາດຖືກແປງເປັນປະເພດ Double ໄດ້.

- ຜົນຕ່າງສຳບູນລະຫວ່າງ A ແລະ B ຫານດ້ວຍຄ່າສຳບູນທີ່ໃຫຍ່ທີ່ສຸດຂອງ A ຫຼື B ມີຄ່າ ຫຼາຍກວ່າ ຄ່າທີ່ລະບຸໃນ tolerance.

## AssertNotEqual

ສົ່ງຄືນ True ເມື່ອ A ແລະ B ຖືວ່າ ບໍ່ ເທົ່າກັນ.

### ໄວຍາກອນ:

svc.AssertNotEqual(a: any, b: any, message: str = ""): bool

ວິທີການນີ້ໃຊ້ໄດ້ທັງກັບຄ່າສະກາລາ ແລະ ອາເຣ. ອ່ານຄຳແນະນຳໃນ AssertEqual ສຳລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບຄວາມໝາຍຂອງຄວາມເທົ່າກັນໃນການຢືນຢັນນີ້.

## AssertNotIn

ສົ່ງຄືນ True ເມື່ອ ບໍ່ ພົບ A (ຂໍ້ຄວາມ) ໃນ B.

### ໄວຍາກອນ:

svc.AssertNotIn(a: any, b: any, message: str = ""): bool

ອ່ານຄຳແນະນຳໃນ AssertIn ສຳລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບເງື່ອນໄຂຂອງວິທີການນີ້.

## AssertNotInstance

ສົ່ງຄືນ True ເມື່ອ A ບໍ່ແມ່ນ ອິນສະແຕນຊ໌ຂອງປະເພດອັອບເຈັກທີ່ລະບຸ.

### ໄວຍາກອນ:

svc.AssertNotInstance(a: any, objecttype: str, message: str = ""): bool

ອ່ານຄຳແນະນຳໃນ AssertIsInstance ສຳລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບເງື່ອນໄຂຂອງວິທີການນີ້.

## AssertNotLike

ສົ່ງຄືນ True ຖ້າຂໍ້ຄວາມ A ບໍ່ກົງ ກັບຮູບແບບທີ່ກຳນົດໃຫ້ເຊິ່ງມີຕົວແທນ (wildcards).

### ໄວຍາກອນ:

svc.AssertNotLike(a: any, pattern: str = "", message: str = ""): bool

ອ່ານຄຳແນະນຳໃນ AssertLike ສຳລັບຂໍ້ມູນເພີ່ມເຕີມກ່ຽວກັບເງື່ອນໄຂຂອງວິທີການນີ້.

## AssertNotNothing

ສົ່ງຄືນ True ຍົກເວັ້ນເມື່ອ A ເປັນອັອບເຈັກທີ່ມີຄ່າເປັນ Nothing.

### ໄວຍາກອນ:

svc.AssertNotNothing(a: any, message: str = ""): bool

## AssertNotNull

ສົ່ງຄືນ True ຍົກເວັ້ນເມື່ອ A ມີຄ່າເປັນ Null.

### ໄວຍາກອນ:

svc.AssertNotNull(a: any, message: str = ""): bool

## AssertNotRegex

ສົ່ງຄືນ True ເມື່ອ A ບໍ່ແມ່ນ ຂໍ້ຄວາມ ຫຼື ບໍ່ກົງ ກັບ regular expression ທີ່ກຳນົດໃຫ້.

### ໄວຍາກອນ:

svc.AssertNotRegex(a: any, regex: str = "", message: str = ""): bool

ການປຽບທຽບແມ່ນລະອຽດຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ.

## AssertRegex

ສົ່ງຄືນ True ເມື່ອຂໍ້ຄວາມ A ກົງກັບ regular expression ທີ່ກຳນົດໃຫ້.

### ໄວຍາກອນ:

svc.AssertRegex(a: any, regex: str = "", message: str = ""): bool

ການປຽບທຽບແມ່ນລະອຽດຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ.

## AssertTrue

ສົ່ງຄືນ True ເມື່ອນິພົດ A ເປັນ Boolean ແລະ ມີຄ່າເປັນ True.

### ໄວຍາກອນ:

svc.AssertTrue(a: any, message: str = ""): bool

## Fail

ບັງຄັບໃຫ້ກໍລະນີທົດສອບຫຼົ້ມເຫຼວ.

### ໄວຍາກອນ:

svc.Fail(message: str = "")

ສາມາດລະບຸຂໍ້ຄວາມເພື່ອໃຫ້ລາຍງານໃນ console ໄດ້.

## Log

ຂຽນ message ທີ່ລະບຸລົງໃນ console.

### ໄວຍາກອນ:

svc.Log(message: str = "")

ສາມາດລະບຸຂໍ້ຄວາມເພື່ອໃຫ້ລາຍງານໃນ console ໄດ້.

## ReportError

ສະແດງກ່ອງຂໍ້ຄວາມພ້ອມກັບຂໍ້ຄວາມ ແລະ ຄ່າຄຸນສົມບັດປັດຈຸບັນຂອງບໍລິການ Exception.

ວິທີການນີ້ມັກຈະຖືກໃຊ້ໃນສ່ວນການຈັດການຂໍ້ຜິດພາດ (exception handling) ຂອງ Sub ທີ່ບັນຈຸກໍລະນີທົດສອບ, ເຊິ່ງຈະຖືກຮຽກໃຊ້ເມື່ອການຢືນຢັນຫຼົ້ມເຫຼວ ຫຼື ເມື່ອມີການຮຽກໃຊ້ວິທີການ Fail.

### ໄວຍາກອນ:

svc.ReportError(message: str = "")

ຂຶ້ນຢູ່ກັບຄ່າຂອງຄຸນສົມບັດ WhenAssertionFails, ການເຮັດວຽກການທົດສອບອາດຈະດຳເນີນຕໍ່ໄປ ຫຼື ຖືກຂັດຈັງຫວະ.

ເມື່ອຂຽນກໍລະນີທົດສອບ, ແນະນຳໃຫ້ໃສ່ການຮຽກໃຊ້ວິທີການ ReportError ໄວ້ໃນສ່ວນການຈັດການຂໍ້ຜິດພາດຂອງ Sub.

ຖ້າຄຸນສົມບັດ LongMessage ເປັນ True, message ທີ່ລະບຸຈະຖືກຕາມດ້ວຍຄຳອະທິບາຍຂໍ້ຜິດພາດມາດຕະຖານ. ຖ້າບໍ່ດັ່ງນັ້ນ ຈະສະແດງສະເພາະ message ເທົ່ານັ້ນ.

## RunTest

ເຮັດວຽກຊຸດການທົດສອບທັງໝົດທີ່ຢູ່ໃນໂມດູນທີ່ລະບຸ. ແຕ່ລະກໍລະນີທົດສອບຈະເຮັດວຽກແຍກເປັນອິດສະຫຼະຈາກກັນ.

ການເຮັດວຽກຊຸດການທົດສອບປະກອບດ້ວຍ:

1. ເຮັດວຽກວິທີການ Setup (ຖ້າມີ) ຢູ່ໃນໂມດູນ.

2. ເຮັດວຽກແຕ່ລະກໍລະນີທົດສອບໜຶ່ງຄັ້ງ, ໂດຍບໍ່ມີລຳດັບສະເພາະ.

3. ເຮັດວຽກວິທີການ TearDown (ຖ້າມີ) ຢູ່ໃນໂມດູນ.

### ໄວຍາກອນ:

svc.RunTest(testsuite: str, testcasepattern: str = "", message: str = ""): int

ອາຄິວເມນ testcasepattern ລະບຸຮູບແບບທີ່ປະກອບດ້ວຍຕົວແທນ "?" ແລະ "*" ເພື່ອເລືອກວ່າຈະໃຫ້ກໍລະນີທົດສອບໃດເຮັດວຽກ. ການປຽບທຽບນີ້ແມ່ນບໍ່ລະອຽດຕໍ່ຕົວອັກສອນໃຫຍ່-ນ້ອຍ.

ຖ້າມີການລະບຸ message, ມັນຈະຖືກຂຽນລົງໃນ console ເມື່ອການທົດສອບເລີ່ມຕົ້ນ.

## SkipTest

ຂັດຈັງຫວະການເຮັດວຽກຂອງຊຸດການທົດສອບໂດຍບໍ່ມີການຮຽກໃຊ້ວິທີການ TearDown.

ການຂ້າມການທົດສອບມັກຈະມີຄວາມໝາຍໃນລະຫວ່າງວິທີການ Setup ເມື່ອເງື່ອນໄຂໃນການທົດສອບບໍ່ຄົບຖ້ວນ.

ວິທີການ Setup ຄວນຈະອອກຈາກ Sub ທັນທີຫຼັງຈາກທີ່ມີການຮຽກໃຊ້ SkipTest.

ຖ້າ SkipTest ຖືກຮຽກໃຊ້ຈາກພາຍໃນກໍລະນີທົດສອບ, ການເຮັດວຽກຂອງຊຸດການທົດສອບຈະຖືກຂັດຈັງຫວະ ແລະ ກໍລະນີທົດສອບທີ່ເຫຼືອຈະບໍ່ຖືກເຮັດວຽກ. ຄວນຈື່ໄວ້ວ່າລຳດັບການເຮັດວຽກຂອງກໍລະນີທົດສອບພາຍໃນຊຸດການທົດສອບແມ່ນເປັນແບບສຸ່ມ.

### ໄວຍາກອນ:

svc.SkipTest(message: str = "")

ຖ້າມີການລະບຸ message, ມັນຈະຖືກຂຽນລົງໃນ console.

ຫົວຂໍ້ທີ່ກ່ຽວຂ້ອງ

ບໍລິການ ScriptForge.Exception

ກະລຸນາສະໜັບສະໜູນພວກເຮົາ!