Aller au contenu
EN FR

Packages de tests declaratifs

Statut documentaire : guide — voir Maturité et preuves.

Les tests applicatifs peuvent vivre dans un package dedie tout en suivant les memes regles de chargement que les modeles de production. Placer un fichier de test dans l'arbre source ne suffit pas : package, schema path, manifest et configuration application doivent rendre la suite atteignable.

Arborescence recommandee

my-module/
  packages/
    MyModule.package.yaml
    MyModule.Tests.package.yaml
  meta/models/
    MyModule/
      ClassItems.manifest.yaml
      Customer.model.yaml
    MyModuleTests/
      ClassItems.manifest.yaml
      CustomerModelTests.model.yaml
      CustomerActionTests.model.yaml

Descripteur de package de test :

package:
  items:
    - MyModuleTests:
        caption: '#MyModuleTests'
        enabled: true
        files:
          schemaDirectories:
            schemaPath:
              value: '[Modules]/my-module/meta/models'

Manifest public avec noms d'implementation normalises :

package:
  objectsContainer: CustomObjectsContainer
  plugginCaption: My Module Tests
  uri: http://www.logicells.net/schema/MyModuleTests
  classes:
    - CustomerModelTests:
        classId: myapp#customer_model_tests
        type: Entity
    - CustomerActionTests:
        classId: myapp#customer_action_tests
        type: Entity

Modele de suite de tests

Une suite declarative est un concept Entity qui implique explicitement lgc#unit_test.

class:
  name: CustomerModelTests
  classId: myapp#customer_model_tests
  className: CustomClassItem
  currentGeneratorName: MyModuleTests.CustomerModel
  type: Entity
  generators:
    - MyModuleTests.CustomerModel:
        class: GUIDStringGeneratorInfo
        params: ''
  object:
    className: CustomObjectItem
    objectName: CustomerModelTests
  concepts:
    - Entity:
        constraints:
          - implies: lgc#unit_test

Chaque Action declaree directement par la suite represente un cas de test. Pour une action de test scriptable, le nom public normalise est UnitTestScriptableObjectElementAction.

actions:
  - action:
      name: Customer_Class_Is_Loaded
      class: UnitTestScriptableObjectElementAction
      type: ClassItem
      published: true
      scripts:
        - script:
            clientScript: true
            serverScript: false
            language: functionalP
            classes: Desktop
            cdata: |
              TargetClassItem := Self.ObjectsContainer.ClassItemByClassId('myapp#customer');
              Self.Assert(GUnitTest, (TargetClassItem <> nil), 'Customer ClassItem is not loaded');