116 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			116 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								Nous ne sommes jamais sûr de la validité complète d'un programme, seulement on peut utiliser des programmes de tests pour vérifier de la qualité de notre programme / logiciel.
							 | 
						||
| 
								 | 
							
								JUnit permet d'avoir plus d'assurance de la qualité de son logiciel.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Au niveau manuel, c'est très fastidieux, pas très drôle, etc. Si on se trompe ou qu'une modification est à effectuer, il faut recommencer la série de test, manuellement c'est pas top.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Avec JUnit on a un moteur de test qui permet d'effectuer un jeu de test, et ceci autant de fois qu'il nous est nécéssaire / utile.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								== JUnit ==
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Est une API del'ordre graphique, disponible sur [[http://w3.junit.org => domaine public (gratuit)]]
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Façons de fonctionner : 
							 | 
						||
| 
								 | 
							
								  * Graphique
							 | 
						||
| 
								 | 
							
								  * Console / texte
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								== Moteurs de tests ==
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Faire un test revient généralement à faire une comparaisons entre le résultat __voulu__ et le résultat __réel__.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Dans JUnit, si le test échoue, il donne l'erreur et la ligne d'erreur.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								=== Moteur de test en mode texte ===
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Cf. Polycopié
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								=== Moteur de test en mode graphique ===
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Cf. Polycopié
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								== Assertions == 
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Les assertions permettent de tester des valeurs par rapport à une comparaison, qu'elles soient égales, nulles, identiques, etc., mais aussi faire échouer le test.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								== Cas de tests ==
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								//setup// et //tearDown// sont automatiquement appelés par les moteurs de test. Il faut donc redéfinir les méthodes pour mettre les objets dans les bons état en fonction de ce que nous voulons obtenir.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Il est possible de créer des tests plus élaborés que des tests unitaires "merdiques". Exemple : Cf. Polycopié pour le test sur dépliage de pile.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								== écriture d'une suite de tests ==
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Une arborescence précise des tests existe. Cf. schéma polycopié.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Un test peut donc contenir une suite de test. Ce qui est très intéressant.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Si vous n'avez pas crée une suite de Test, JUnit prend l'ensemble des méthodes ayant le mot TEST, et va construire une suite de tests.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								== Conseils ==
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Développé par les partisans d'**eXtreme programming**, donc pas obligé d'attendre à avoir tout fini pour commencer pour tester.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Il peut être intéressant d'ajouter, pour chaque découverte de bug, un test supplémentaire pour vérifier à chaque ajout de fonctionnalités, que le bug ne se réhitère pas.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Il peut être bon de changer de personne pour la batterie de tests, car il n'a pas la même notion des choses que vous, ce qui apporte une plus - value certaine.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								== JUnit version 4 ==
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Cette version apporte des ajouts concernant les //annotations// qui sont apparues dans les programmes Java avec JRE 1.5.0.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Les principes sont les mêmes sauf qu'on va utiliser des noms différents, et des annotations avec un arobase (@).
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Les tests de JUnit ne vont pas regarder le nom de la méthode, mais l'annotation.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								On peut passer des paramètres aux annotations, c'est la gestion des exceptions.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Si on a plusieurs BEFORE, ils seront exécutés dans l'ordre où ils apparaissent dans la classe.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								== Conclusion ==
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Investissement de départ, mais pour une application de longue haleine, c'est un très bon investissement sur le long terme.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Il est très intéressant de l'utiliser AVANT de commencer à programmer.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								== Autres ==
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								En Java, il existe une fonction nommée TRIM qui permet de supprimer les espaces avant et après une chaîne : 
							 | 
						||
| 
								 | 
							
								<code java>
							 | 
						||
| 
								 | 
							
									Class ctl
							 | 
						||
| 
								 | 
							
									String trim ( String s)
							 | 
						||
| 
								 | 
							
								</code>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Code de test: 
							 | 
						||
| 
								 | 
							
								<code java>
							 | 
						||
| 
								 | 
							
								public class TestTrim
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
									@Test
							 | 
						||
| 
								 | 
							
									public void chaineVide()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										assertTrue( Ctl.trim("").length() == 0);
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@Test
							 | 
						||
| 
								 | 
							
									public void chaineEspaces()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										assertEquals( Ctl.trim("     "),"");
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@Test
							 | 
						||
| 
								 | 
							
									public void devant()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										assertEquals(Ctl.trim("   abc"), "abc");
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									@Test
							 | 
						||
| 
								 | 
							
									public void milieu()
							 | 
						||
| 
								 | 
							
									{
							 | 
						||
| 
								 | 
							
										assertEquals(Ctl.trim("abc   ok"), "abc   ok");
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								</code>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 |