2.1.7.1.1 : Le main.cpp du test


Notre test unitaire est extrêmement simple. Il consiste uniquement à appeler notre fonction accord_shadok avec diférents jeux de paramètres afin d'en vérifier le résultat. Il faut cependant que ces tests soient complèts afin d'avoir une bonne couverture de test.

Implémentons notre main.cpp :

Nous devons inclure iostream car il faudra afficher les résultats du test :
1
#include <iostream>
Ensuite, nous incluons notre header :
1
#include "accord_shadok.h"
Implémentons notre fonction de test :
1
2
3
4
///Test the accord_shadok function :
/**	@return true on success, false otherwise
*/
bool testAccordShadok(){
Commençons par définir le booléen que nous retournerons à la fin de la fonction :
1
	bool b(true);
Ensuite notre premier test, un shadok au singulier :
1
	b &= accord_shadok("shadok", 1lu) == "shadok";
Puis notre deuxième test, un shadok au pluriel :
1
	b &= accord_shadok("shadok", 2lu) == "shadoks";
Affichons le résultat (1 : ok, 0 : le résultat est faut) noteIl est important de ne pas mettre de condition dans un test unitaire car toutes les lignes du programme de tests unitaires doivent elles aussi être utilisées en totalité. :
1
	std::cout << "testAccordShadok : b = " << b << std::endl;
Et la fin de la fonction où nous retournons le résultat de notre test unitaire :
1
2
	return b;
}
Puis la fonction principale :
1
int main(int argc, char** argv){
Appelons notre fonction de test :
1
	bool b(testAccordShadok());
Affichons le résultat du test noteCe résultats doit être affiché sans branchement, donc sans condition pour que GCovr ne prenne pas cela pour un oubli:
1
	std::cout << "final b = " << b << std::endl;
Puis nous envoyons le résultat du test (la convension pour les programme est 0 succès, -1 échec) noteIci encore, il ne faut pas ajouter de condition pour que la couverture des tests soit juste et pertinente :
1
2
	return b - 1;
}


Le fichier main.cpp complet :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
/***************************************
	Auteur : Pierre Aubert
	Mail : aubertp7@gmail.com
	Licence : CeCILL-C
****************************************/

#include <iostream>

#include "accord_shadok.h"

///Test the accord_shadok function :
/**	@return true on success, false otherwise
*/
bool testAccordShadok(){

	bool b(true);

	b &= accord_shadok("shadok", 1lu) == "shadok";

	b &= accord_shadok("shadok", 2lu) == "shadoks";

	std::cout << "testAccordShadok : b = " << b << std::endl;

	return b;
}

int main(int argc, char** argv){

	bool b(testAccordShadok());

	std::cout << "final b = " << b << std::endl;

	return b - 1;
}


Vous pouvez le télécharger ici.