Chaque fois qu'une fonction de test (une fonction annotée avec test
) contient des assertions qui échouent, l'assertion a le même effet que lorsqu'une exception est tracée: aucune ligne de code supplémentaire dans cette fonction ne sera exécutée . Ainsi, assert les instructions dans les fonctions qui sont annotées avec 'test' fonctionne exactement comme les instructions assert ordinaires dans les fonctions Ceylan ordinaires. Ce runs contrary to the documentation, qui stipule que les déclarations assert ordinaires peuvent être utilisées pour faire des tests unitaires.ceylon.test.TestRunner échoue lorsque les tests échouent
Ainsi, l'exécution du code ci-dessous, je peux voir la déclaration myTests1
mais pas'myTests2`:
import ceylon.test {
test, TestRunner, createTestRunner
}
test
Anything myTests1() {
// assert something true!
assert(40 + 2 == 42);
print("myTests1");
return null;
}
test
void myTests2() {
// assert something false!
assert(2 + 2 == 54);
print("myTests2");
}
"Run the module `tests`."
shared void run() {
print("reached run function");
TestRunner myTestRunner = createTestRunner(
[`function myTests1`, `function myTests2`]);
myTestRunner.run();
}
Ceci est la sortie réelle:
"C:\Program Files\Java\jdk1.8.0_121\bin\java" -Dceylon.system.repo=C:\Users\Jon\.IdeaIC2017.2\config\plugins\CeylonIDEA\classes\embeddedDist\repo "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.1\lib\idea_rt.jar=56393:C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2017.2.1\bin" -Dfile.encoding=windows-1252 -classpath C:\Users\Jon\.IdeaIC2017.2\config\plugins\CeylonIDEA\classes\embeddedDist\lib\ceylon-bootstrap.jar com.redhat.ceylon.launcher.Bootstrap run --run run tests/1.0.0
reached run function
myTests1
Process finished with exit code 0
Merci :) Les fonctions annotées de 'test' sont donc 'l'unité minimale' des tests unitaires. Et pour regrouper plusieurs tests unitaires dans un groupe soigné, je devrais utiliser par exemple. Des classes. – loldrup
Oui, ou des objets de niveau supérieur. Il est également possible d'hériter des méthodes de test - par exemple, une superclasse abstraite peut déclarer des valeurs 'formel' et définir une fonction de test qui utilise ces valeurs, et les objets de haut niveau dérivant peuvent définir ces valeurs et hériter de la fonction de test. –