Vous êtes sur la page 1sur 3

IUC (Institut Universitaire de la Cote)

Examen : Outils de Génie Logiciel pour Java


3IL5
Examinateur: Dr Tchoupé Tchendji
Durée 2h30

Note : Aucun document n’est autorisé

Exercice I : Questions de cours (6pts)


a) Motivez la nécessité d’utiliser les framework ant, JUnit et log4j dans le
processus de construction d’un logiciel (1pt x3 = 3pts)

b) Soit le fichier (buildfile) suivant :


<?xml version="1.0" encoding="utf-8" ?>
<project name="greetings" default="polite">
<property name="username" value="moi" />
<target name="A" depends="B, C">
<echo message="From A target" />
</target>
<target name="B" >
<echo message=" From B target " />
</target>
<target name="C">
<echo message="Bienvenue ${username}" />
<echo message=" From C target " />
</target> </project>
</project>

Qu'affiche chacune des commandes suivantes : (1ptX3=3pts)


1° ant
2° ant A
3° ant B

Exercice II : Test Unitaire et outil de build (8pts)


1) Ecrire un test unitaire StringBufferTest permettant de tester les
méthodes charAt, setCharAt et append(String str) de la classe StringBuffer du
Java SDK. (1ptX3=3pts)
2) Ecrire un script Ant permettant de compiler, et de lancer le test unitaire de
StringBufferTest (2pts)
3) Dans cet exercice, le but est de définir une classe test qui regroupe plusieurs
tests. Voici le code de la classe à tester.

P a g e | 1/3
1) // A Class that adds up a string based on the ASCII values of its
2) // characters and then returns the binary representation of the sum.
3) public class BinString {
4)
5) public BinString () {}
6)
7) public String convert(String s) {
8) return binarise(sum(s));
9) }
10)
11) public int sum(String s) { if (s=="") return 0;
12) if(s.length()==1)
13) return ((int)(s.charAt(0)));
14)
15) return ((int)(s.charAt(0)))+sum(s.substring(1));
16) }
17)
18) public String binarise(int x) {
19) if (x==0) return "";
20) if(x%2==1) return "1"+binarise(x/2);
21) return "0"+binarise(x/2);
22) }
23) }

Question : Proposez une classe de test nommée BinStringTest permettant de tester deux
méthodes de votre choix de la classe BinString (1,5ptsX2=3pts)

Exercice III : Outil de Log (6,5pts)


a) Commentez le fichier de configuration ‘’lo4j2.xml ’’ de log4J suivant : (2pts)

<?xml version="1.0" encoding="UTF-8"?>


<Configuration status="WARN">
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} -
%msg%n"/>
</Console>
<File name="File1" fileName="outputBar.log“> </File>
<File name="File2" fileName="outputMyApp.log“> </File>
</Appenders>
<Loggers>
<Logger name="com.foo.Bar" level="trace" >
<AppenderRef ref="File1"/>
</Logger>
<Logger name="MyApp" level= "error" >
<AppenderRef ref="File2"/>
</Logger>

P a g e | 2/3
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
</Loggers>
</Configuration>

c) Avec le fichier de configuration précédent ‘’lo4j2.xml ’’, si on exécute le


programme java ci-dessous, qu’obtiendra-t-on respectivement dans le fichier
‘’outputBar.log’’, le fichier ‘’ outputMyApp.log’’ et sur la console (ne vous souciez pas de
la sortie exacte, une idée de ce qu’elle peut être suffira). (1,5ptX3=4,5pts)

// import log4j classes.


import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
public class MyApp {
// Define a static logger variable so that it references the
// Logger instance named "MyApp".
private static final Logger logger = LogManager.getLogger(MyApp.class);
public static void main(final String... args) {
// Set up a simple configuration that logs on the console.
logger.trace("Entering application.");
Bar bar = new Bar();
if (!bar.doIt()) {
logger.error("Didn't do it.");
}
logger.trace("Exiting application.");
}
}

package com.foo;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.LogManager;
public class Bar {
static final Logger logger =LogManager.getLogger(Bar.class.getName());
public boolean doIt() {
logger.entry();
logger.error("Did it again!");
return logger.exit(false);
}
}

P a g e | 3/3

Vous aimerez peut-être aussi