L3 TP3 1 Simpliste 2 Dériveur

publicité
L3 TP3
Valvassori Moı̈se <[email protected]>
L’objectif de ce premier TP est de (re)faire travailler les bases de la compilation Java.
1
Simpliste
Ces exercices sont repris de la série 1.
1.1
Préparation
1. Faire un répertoire de travail
2. Préparer le travail sur un brouillon
(a) diagrammes UML
1.2
Java
1. Écrire un programme affichant la chaı̂ne (( Bonjour le monde ! ! !)).
2. Écrire un programme1 affichant la factorielle de 1,2,3,4,5,10,20,50,100.
Ne pas oublier :
– la Javadoc ;
– le package
1.3
En Shell
1. compiler ;
2. exécuter ;
3. générer la javadoc ;
4. exécuter de n’importe quel répertoire.
2
Dériveur
Dans cet exercice, nous allons réaliser le (fameux) dériveur.
1. Reprendre le dériveur du partiel (voir également la correction du diagramme UML).
2. Reprendre le squelette du dériveur. Ce squelette est généré par un outil UML à partir du modèle
proposé au partiel.
3. Compléter le squelette :
(a) remplir les méthodes ;
(b) corriger les bugs générés par l’outil ;
(c) faire la documentation (javadoc)
1
Ce programme peut être qu’une méthode dans le programme (( Bonjour le monde ! ! !)).
3
Tests Unitaires
Dans cet exercice, nous allons générer et exécuter automatiquement des jeux de tests.
Nous allons utiliser la bibliothèque http://www.junit.org/. Elle est installée sur neon dans ce
fichier : /opt/netbeans-5.0/ide6/modules/ext/junit-3.8.1.jar
Réaliser un jeu de tests pour le dériveur :
1. tester la construction des différentes expressions ;
2. tester la dérivé des expressions. Ne pas oublier les cas limites.
3.1
Exemple
Dans cet exemple, nous allons tester si la dérivé du nombre 1 vaut bien le nombre 0.
3.1.1
Faire un Test
Nous créons le jeu test proprement dit. Les tests sont des méthodes dont le nom commence par (( test )).
Il peut y avoir plusieurs tests. La méthode setUp est appelée avant chaque test. La méthode tearDown
est appelée après chaque test.
1
package l3.mime.java.partiel.deriveur.tests;
import junit.framework.TestCase
import l3.mime.java.partiel.deriveur.Nombre;
5
public class TestNombre extends TestCase {
protected Nombre n;
protected Symbole d;
protected void setUp() {
n = new Nombre(1);
d = new Symbole("x");
}
10
public void testDerive() {
Nombre derive = n.deriver(d);
assertTrue(derive.equals(new Nombre(0)));
}
15
}
3.1.2
Construire une suite de tests
Un suite de tests est un ensemble de jeu de tests.
1
package l3.mime.java.partiel.deriveur.tests;
import junit.framework.TestSuite;
import junit.framework.Test;
5
public class DeriveurSuite extends TestSuite {
public static Test suite() {
TestSuite suite= new TestSuite();
2
suite.addTest(new TestNombre("test deriver nombre"));
return suite;
}
10
}
3.1.3
Exécution de la suite de test
La ligne de commande pour exécuter le test est :
java junit.textui.TestRunner l3.mime.java.partiel.deriveur.tests.TestSuite
Avec un interface graphique Swing :
java junit.swing.TestRunner l3.mime.java.partiel.deriveur.tests.TestSuite
framework
Assert
+assertTrue(parameter : String, parameter2 : boolean) : void
+assertFalse(parameter : String, parameter2 : boolean) : void
+fail(parameter : String) : void
+fail() : void
+assertEquals(parameter : String, parameter2 : double, parameter3 : double) : void
+assertNotNull(parameter : String, parameter2 : Object) : void
+assertNull(parameter : String, parameter2 : Object) : void
+assertSame(parameter : String, parameter2 : Object, parameter3 : Object) : void
+assertNotSame(parameter : String, parameter2 : Object, parameter3 : Object) : void
-failSame(parameter : String) : void
-failNotSame(parameter : String, parameter2 : Object, parameter3 : Object) : void
-failNotEquals(parameter : String, parameter2 : Object, parameter3 : Object) : void
<<Interface>>
Test
+run(parameter : TestResult) : void
TestCase
#setUp() : void
#tearDown() : void
TestSuite
+addTest(parameter : Test) : void
+addTestSuite(parameter : Class) : void
mesTests
MonTest
+testQuelqueChose()
TousMesTests
F IG . 1: Synthèse des classes permettant de construire un jeu de tests.
3
junit
runner
BaseTestRunner
+startTest(parameter : Test) : void
+getLoader() : TestSuiteLoader
framework
TestSuite
textui
swingui
awtui
TestRunner
TestRunner
TestRunner
<<import>>
load
startTest()
mesTests
MonTest
+testQuelqueChose()
TousMesTests
F IG . 2: Classes exécutant les jeu de tests.
4
Téléchargement