-
Cours :
- cours 1 transparents : pdf
- cours 2 transparents : pdf
- cours 3 transparents : pdf
- cours 4 transparents : pdf
- cours 5 transparents : pdf
- cours 6 transparents : pdf
- cours 7 transparents : pdf
- cours 8 transparents : pdf
- cours 9 transparents : pdf
- cours 10 transparents : pdf
- cours 11 transparents : pdf
- cours 12 transparents : pdf
- Documents :
- TD :
- TP :
- TP 8 (pdf)
- TP 9 (pdf)
- TP 10 (pdf), Corrigé TP 10 (pdf)
- Projet astéroïdes (pdf)
TD 7 : Tests
Rappels sur les tests
Méthodologie de test
Une classe de test par classe à tester. Une méthode de test par méthode ou cas à tester.
Le code d’une classe de test testant une classe NameTestedClass
a le format suivant :
import org.junit.jupiter.api.Test;
import static org.assertj.core.api.Assertions.*;
public class NameTestedClassTest {
@Test
void testNameTestedMethod(){
// code containing assertions to test nameTestedMethod
} }
Assertions (liste non-exhaustive)
Pour tester, on utilise des assertions qui doivent être vraies. Vous trouverez ci-dessous une listes des assertions les plus utiles.
assertThat(object).isNotNull()
: vérifie que la référence n’est pasnull
assertThat(actual).isSameAs(expected)
: vérifie que les deux objets sont les mêmes (même référence : utilisation de==
).assertThat(condition).isTrue()
: vérifie quecondition
est vraie.assertThat(condition).isFalse()
: vérifie quecondition
est faux.assertThat(actual).isEqualTo(expected)
: vérifie queexpected
est égal àactual
(en appelantequals
suractual
).assertThat(actual).isNotEqualTo(expected)
: vérifie queexpected
n’est égal pas àactual
(en appelantequals
suractual
).assertThat(iterable).contains(element)
: vérifie queiterable
(qui peut être uneList
, un tableau, … ) contientelement
.assertThat(iterable).containsOnly(element)
: vérifie queiterable
(qui peut être uneList
, un tableau, … ) contient seulementelement
.assertThat(actual).isCloseTo(expected, within(delta))
: vérifie que \(|expected - actual|\leq delta\) (comparaison de double).
Test d’une classe d’entier
On nous fournit une classe BigInteger
permettant de manipuler des entiers relatifs en précision arbitraire. Les BigInteger
sont immutables : aucune méthode ne modifie this
, ni ses arguments.
La classe BigInteger
contient :
- des constantes :
static BigInteger ONE
: TheBigInteger
constant one.static BigInteger TEN
: TheBigInteger
constant ten.static BigInteger ZERO
: TheBigInteger
constant zero.
- un constructeur :
public BigInteger(String val)
: Translates the decimalString
representation of aBigInteger
into aBigInteger
. TheString
representation consists of an optional minus or plus sign followed by a sequence of one or more decimal digits.
- des méthodes :
boolean equals(Object o)
: Compares thisBigInteger
with the specifiedObject
for equality.BigInteger add(BigInteger val)
: Returns aBigInteger
whose value is(this + val)
.BigInteger negate()
: Returns aBigInteger
whose value is(-this)
.BigInteger subtract(BigInteger val)
: Returns aBigInteger
whose value is(this - val)
.BigInteger multiply(BigInteger val)
: Returns aBigInteger
whose value is(this * val)
.BigInteger divide(BigInt val)
: Returns aBigInteger
whose value is(this / val)
.double doubleValue()
: Converts thisBigInteger
to adouble
.BigInteger abs()
: Returns aBigInteger
whose value is the absolute value of thisBigInteger
.BigInteger gcd(BigInteger val)
: Returns aBigInteger
whose value is the greatest common divisor ofabs(this)
andabs(val)
.String toString()
: Returns the decimalString
representation of thisBigInteger
.
Question 1 : Quels sont les éléments du code qu’il est important de tester en premier ?
Question 2 : Quel devrait-être le nom de la classe de test qui va tester la classe
BigInteger
?
Question 3 : Donner le code de tests unitaires pour les différents éléments de la classe (constantes, constructeurs et méthodes).
Test d’une classe de file (bonus)
Les files (ou queue) implémentent des séquences linéaires d’objets. On peut insérer (offer
) ou retirer (poll
) des éléments de la file. L’élément retiré est toujours le plus ancien élément de la file toujours présent dans la file (appelé head of the queue), c’est-à-dire celui qu’on a inséré en premier parmi tous les éléments de la file. La classe Queue
contient :
- des constructeurs :
Queue()
Creates an emptyQueue
Queue(int[] array)
: Creates aQueue
initially containing the elements of the givenarray
, added in traversal order of the array.
- des méthodes :
boolean isEmpty()
: Returnstrue
if this queue contains no elements.void offer(int element)
: Inserts the specifiedelement
into this queue.int poll()
: Retrieves and removes the head of this queue, or returns-1
if this queue is empty.int length()
: Returns the number of elements in this queue.
Question 4 : Écrire des tests unitaires pour chacun des constructeurs et des méthodes.