From 14851fbf4f824ac279ce76723b3afe9578857fb9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laure=CE=B7t?= Date: Fri, 3 Dec 2021 15:47:29 +0100 Subject: [PATCH 1/2] =?UTF-8?q?fin=20de=20s=C3=A9ance?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .vscode/settings.json | 11 +++ Apres.java | 10 +++ Assert.java | 19 +++++ Avant.java | 7 ++ CasLimitesTest.java | 35 +++++++++ DeviseInvalideException.java | 13 ++++ Echec.java | 12 +++ ErreurTest.java | 17 ++++ FausseException.java | 3 + LanceurIndependant.java | 147 +++++++++++++++++++++++++++++++++++ Monnaie.java | 59 ++++++++++++++ MonnaieTest.java | 39 ++++++++++ MonnaieTest2.java | 12 +++ UnTest.java | 9 +++ 15 files changed, 394 insertions(+) create mode 100644 .gitignore create mode 100644 .vscode/settings.json create mode 100644 Apres.java create mode 100644 Assert.java create mode 100644 Avant.java create mode 100644 CasLimitesTest.java create mode 100644 DeviseInvalideException.java create mode 100644 Echec.java create mode 100644 ErreurTest.java create mode 100644 FausseException.java create mode 100644 LanceurIndependant.java create mode 100644 Monnaie.java create mode 100644 MonnaieTest.java create mode 100644 MonnaieTest2.java create mode 100644 UnTest.java diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6b468b6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.class diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..b1bba8a --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,11 @@ +{ + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/Thumbs.db": true, + "**/*.class": true + } +} \ No newline at end of file diff --git a/Apres.java b/Apres.java new file mode 100644 index 0000000..fe83ada --- /dev/null +++ b/Apres.java @@ -0,0 +1,10 @@ +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Apres { + +} diff --git a/Assert.java b/Assert.java new file mode 100644 index 0000000..8e843ba --- /dev/null +++ b/Assert.java @@ -0,0 +1,19 @@ +/** La classe Assert définit des méthodes de vérification. Pour l'instant, la + * seule méthode de vérification est assertTrue mais d'autres pourraient être + * définies (voir JUnit). + * + * @author Xavier Crégut + * @version $Revision: 1.1 $ + */ +abstract public class Assert { + + /** Vérifier que la condition est vraie. + * @param condition la condition à vérifier + */ + static public void assertTrue(boolean condition) { + if (! condition) { + throw new Echec(); + } + } + +} diff --git a/Avant.java b/Avant.java new file mode 100644 index 0000000..2af3ec2 --- /dev/null +++ b/Avant.java @@ -0,0 +1,7 @@ +import java.lang.annotation.*; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Avant { + +} diff --git a/CasLimitesTest.java b/CasLimitesTest.java new file mode 100644 index 0000000..12b3aae --- /dev/null +++ b/CasLimitesTest.java @@ -0,0 +1,35 @@ +/** Tester quelques cas limites. + * @author Xavier Crégut + * @version $Revision$ + */ +public class CasLimitesTest { + + public void testOK() { + // OK. + } + + private void testMethodePrivee() { + throw new RuntimeException("Une méthode privée n'est pas un test !"); + } + + protected void testMethodeProtegee() { + throw new RuntimeException("Une méthode protected n'est pas un test !"); + } + + void testMethodePaquetage() { + throw new RuntimeException("Une méthode de droit d'accès paquetage n'est pas un test !"); + } + + public static void testMethodeDeClasse() { + throw new RuntimeException("Une méthode de classe n'est pas un test !"); + } + + public void testAvecParametre(int a) { + throw new RuntimeException("Une méthode avec des paramètres n'est pas un test !"); + } + + public void testAvecParametre2(int a) { + throw new RuntimeException("Une méthode avec des paramètres n'est pas un test !"); + } + +} diff --git a/DeviseInvalideException.java b/DeviseInvalideException.java new file mode 100644 index 0000000..d950afd --- /dev/null +++ b/DeviseInvalideException.java @@ -0,0 +1,13 @@ +/** L'exception DeviseInvalideException indique des devises incompatibles sur + * des opérations entre monnaies. + * + * @author Xavier Crégut + * @version $Revision: 1.1 $ + */ +public class DeviseInvalideException extends Exception { + + public DeviseInvalideException(String message) { + super(message); + } + +} diff --git a/Echec.java b/Echec.java new file mode 100644 index 0000000..c8dcb55 --- /dev/null +++ b/Echec.java @@ -0,0 +1,12 @@ +/** L'exception Echec permet de signaler l'erreur fonctionnelle d'un test. + * @author Xavier Crégut + * @version $Revision: 1.1 $ + */ +public class Echec extends Error { + public Echec() { + super("condition non vérifiée"); + } + public Echec(String message) { + super(message); + } +} diff --git a/ErreurTest.java b/ErreurTest.java new file mode 100644 index 0000000..df26ea7 --- /dev/null +++ b/ErreurTest.java @@ -0,0 +1,17 @@ +/** ErreurTest est un programme de test qui définit trois méthodes de test + * dont une provoque une erreur. + */ +public class ErreurTest { + + public void tester1() { + } + + public void tester2() { + Assert.assertTrue(false); + } + + public void tester3() { + Assert.assertTrue(true); + } + +} diff --git a/FausseException.java b/FausseException.java new file mode 100644 index 0000000..7d99fc9 --- /dev/null +++ b/FausseException.java @@ -0,0 +1,3 @@ +public class FausseException extends Exception { + +} diff --git a/LanceurIndependant.java b/LanceurIndependant.java new file mode 100644 index 0000000..0cc31d4 --- /dev/null +++ b/LanceurIndependant.java @@ -0,0 +1,147 @@ +import java.lang.reflect.*; +import java.util.*; +import java.lang.annotation.*; + +/** + * L'objectif est de faire un lanceur simple sans utiliser toutes les clases de + * notre architecture JUnit. Il permet juste de valider la compréhension de + * l'introspection en Java. + */ +public class LanceurIndependant { + private int nbTestsLances; + private int nbErreurs; + private int nbEchecs; + private List erreurs = new ArrayList<>(); + + public LanceurIndependant(String... nomsClasses) { + System.out.println(); + + // Lancer les tests pour chaque classe + for (String nom : nomsClasses) { + try { + System.out.println(nom + " : "); + this.testerUneClasse(nom); + System.out.println(); + } catch (ClassNotFoundException e) { + System.out.println("Classe inconnue !"); + } catch (Exception e) { + System.out.println("Problème : " + e); + e.printStackTrace(); + } + } + + // Afficher les erreurs + for (Throwable e : erreurs) { + System.out.println(); + e.printStackTrace(); + } + + // Afficher un bilan + System.out.printf("%d tests lancés dont %d échecs et %d erreurs.", nbTestsLances, nbEchecs, nbErreurs); + } + + public int getNbTests() { + return this.nbTestsLances; + } + + public int getNbErreurs() { + return this.nbErreurs; + } + + public int getNbEchecs() { + return this.nbEchecs; + } + + private void testerUneClasse(String nomClasse) + throws ClassNotFoundException, InstantiationException, IllegalAccessException, NoSuchMethodException, + IllegalArgumentException, InvocationTargetException, SecurityException { + // Récupérer la classe + Class classe = Class.forName(nomClasse); + + // Récupérer les méthodes "preparer" et "nettoyer" + Method preparer = null; + Method nettoyer = null; + + for (Method method : classe.getMethods()) { + if (method.isAnnotationPresent(Avant.class)) { + preparer = method; + break; + } + } + + for (Method method : classe.getMethods()) { + if (method.isAnnotationPresent(Apres.class)) { + nettoyer = method; + break; + } + } + + // Instancier l'objet qui sera le récepteur des tests + // Object objet = classe.newInstance(); + Object objet = classe.getDeclaredConstructor().newInstance(); + + // Exécuter les méthods de test + Method[] methods = classe.getMethods(); + for (Method method : methods) { + if (method.isAnnotationPresent(UnTest.class)) { + if (method.getAnnotation(UnTest.class).enabled()) { + + this.nbTestsLances++; + + if (preparer != null) { + preparer.invoke(objet); + } + + Class exep = method.getAnnotation(UnTest.class).expected(); + + try { + if (exep != FausseException.class) { + System.out.println("exep != FausseException.class"); + try { + method.invoke(objet); + System.out.println(method.getName() + " : echec"); + this.nbEchecs++; + } catch (InvocationTargetException e) { + Class exep2 = method.getAnnotation(UnTest.class).expected(); + if (e.getCause().getClass().isAssignableFrom(exep)) { + System.out.println(method.getName() + " : success"); + } else { + System.out.println(method.getName() + " : erreur"); + this.erreurs.add(e); + this.nbErreurs++; + } + } + } else { + try { + method.invoke(objet); + System.out.println(method.getName() + " : success"); + } catch (InvocationTargetException e) { + if (e.getCause() instanceof Echec) { + System.out.println(method.getName() + " : echec"); + this.erreurs.add(e); + this.nbEchecs++; + } else { + System.out.println(method.getName() + " : erreur"); + this.erreurs.add(e); + this.nbErreurs++; + } + } + } + } catch (java.lang.IllegalArgumentException e) { + System.out.println(method.getName() + " : erreur, pas de test avec arguments"); + this.nbErreurs++; + System.out.println("d"); + } + + if (nettoyer != null) { + nettoyer.invoke(objet); + } + } + } + } + } + + public static void main(String... args) { + new LanceurIndependant(args); + } +} diff --git a/Monnaie.java b/Monnaie.java new file mode 100644 index 0000000..b763cb9 --- /dev/null +++ b/Monnaie.java @@ -0,0 +1,59 @@ +/** La classe Monnaie est caractérisée par une valeur et une devise. Deux + * monnaies peuvent être ajoutées ou retranchées. + * + * @author Xavier Crégut + * @version $Revision: 1.1 $ + */ +public class Monnaie { + private int valeur; + private String devise; + + /** Initialiser une monnaie à partir de sa valeur de et sa devise. + * @param valeur valeur de la monnaie + * @param devise devise de la monnaie + */ + public Monnaie(int valeur, String devise) { + this.valeur = valeur; + this.devise = devise; + } + + /** Obtenir la valeur de cette monnaie. + * @param la valeur de cette monnaie + */ + public int getValeur() { + return this.valeur; + } + + /** Obtenir la devise de cette monnaie. + * @param la devise de cette monnaie + */ + public String getDevise() { + return this.devise; + } + + /** Ajouter une autre monnaie à cette devise. + * @param autre l'autre devise + * @depend - - DeviseInvalideException + */ + public void ajouter(Monnaie autre) throws DeviseInvalideException { + verifierMemesDevises(autre); + this.valeur += autre.valeur; + } + + /** Retrancher une autre monnaie à cette devise. + * @param autre l'autre devise + * @depend - - DeviseInvalideException + */ + public void retrancher(Monnaie autre) throws DeviseInvalideException { + verifierMemesDevises(autre); + this.valeur -= autre.valeur; + } + + private void verifierMemesDevises(Monnaie autre) throws DeviseInvalideException { + if (! this.devise.equals(autre.devise)) { + throw new DeviseInvalideException("Devises incompatibles : " + + this.devise + " et " + autre.devise); + } + } + +} diff --git a/MonnaieTest.java b/MonnaieTest.java new file mode 100644 index 0000000..89b20bc --- /dev/null +++ b/MonnaieTest.java @@ -0,0 +1,39 @@ +/** Classe regroupant les tests unitaires de la classe Monnaie. */ +public class MonnaieTest { + + protected Monnaie m1; + protected Monnaie m2; + protected Monnaie m3; + + @Avant + public void debut() { + this.m1 = new Monnaie(5, "euro"); + this.m2 = new Monnaie(7, "euro"); + } + + @UnTest(enabled = false) + public void ajouter() throws DeviseInvalideException { + m1.ajouter(m2); + Assert.assertTrue(m1.getValeur() == 12); + } + + @UnTest + public void retrancher() throws DeviseInvalideException { + m1.retrancher(m2); + Assert.assertTrue(m1.getValeur() == -2); + } + + @UnTest(expected = NullPointerException.class) + public void retrancher2() throws DeviseInvalideException { + m1.retrancher(m2); + m3.ajouter(m1); + Assert.assertTrue(m1.getValeur() == 1234567890); + } + + @Apres + public void rwwwwit() { + this.m1 = null; + this.m2 = null; + } + +} diff --git a/MonnaieTest2.java b/MonnaieTest2.java new file mode 100644 index 0000000..b834fb8 --- /dev/null +++ b/MonnaieTest2.java @@ -0,0 +1,12 @@ +/** MonnaieTest2 : Vérifier que les méthodes de test de la superclasse sont bien + * prises en compte ! + * @author Xavier Crégut + * @version $Revision$ + */ +public class MonnaieTest2 extends MonnaieTest { + + public void testSupplementaire() { + // OK. + } + +} diff --git a/UnTest.java b/UnTest.java new file mode 100644 index 0000000..3d42260 --- /dev/null +++ b/UnTest.java @@ -0,0 +1,9 @@ +import java.lang.annotation.*; + +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface UnTest { + boolean enabled() default true; + + Class expected() default FausseException.class; +} From ee9c59091495bcd7ee7d61b52f58848a879dfe6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Laure=CE=B7t?= Date: Fri, 3 Dec 2021 15:49:47 +0100 Subject: [PATCH 2/2] ajout du sujet --- sujet.pdf | Bin 0 -> 38089 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 sujet.pdf diff --git a/sujet.pdf b/sujet.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3fb4c5ae8b502cae70e1320e9a828925032829a0 GIT binary patch literal 38089 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 EFT%!XvH$=8 literal 0 HcmV?d00001