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');