Comment écrire un test unitaire?

J’ai une classe java qui fait une sum binary, j’essaie toujours de comprendre comment faire des tests unitaires mais je ne sais pas comment le faire. J’ai googlé autour et la meilleure explication que j’ai eue était la page de Wikipedia: http://en.wikipedia.org/wiki/Unit_testing

mais je ne sais toujours pas comment faire mon test pour ce programme. Qu’est-ce que le programme fait essentiellement prendre 2 octets [] et les append et retourner le nouveau tableau binary. Écrit en Java. Comment puis-je le tester?

  1. Définissez la sortie attendue et souhaitée pour un cas normal, avec une entrée correcte.

  2. Maintenant, implémentez le test en déclarant une classe, nommez-le n’importe quoi (généralement quelque chose comme TestAddingModule), et ajoutez-y la méthode testAdd (comme celle ci-dessous):

    • Écrivez une méthode et au-dessus ajoutez l’annotation @Test.
    • Dans la méthode, exécutez votre sum binary et assertEquals(expectedVal,calculatedVal) .
    • Testez votre méthode en l’exécutant (dans Eclipse, cliquez avec le bouton droit de la souris, sélectionnez Exécuter en tant que → Test JUnit).

       //for normal addition @Test public void testAdd1Plus1() { int x = 1 ; int y = 1; assertEquals(2, myClass.add(x,y)); } 
  3. Ajoutez d’autres cas comme désiré.

    • Vérifiez que votre sum binary ne génère pas d’exception inattendue en cas de dépassement d’entier.
    • Testez que votre méthode gère correctement les entrées Null (exemple ci-dessous).

       //if you are using 0 as default for null, make sure your class works in that case. @Test public void testAdd1Plus1() { int y = 1; assertEquals(0, myClass.add(null,y)); } 

Pour faire un test unitaire pour votre projet, veuillez suivre ces étapes (J’utilise Eclipse pour écrire ce test):

1- Cliquez sur Nouveau -> Projet Java.

Créer un projet

2- Notez le nom de votre projet et cliquez sur Terminer.

Créer un projet

3- Faites un clic droit sur votre projet. Cliquez ensuite sur Nouveau -> Classe.

Créer une classe

4- Notez le nom de votre classe et cliquez sur Terminer.

Créer une classe

Ensuite, complétez le cours comme ceci:

 public class Math { int a, b; Math(int a, int b) { this.a = a; this.b = b; } public int add() { return a + b; } } 

5- Cliquez sur File -> New -> JUnit Test Case.

Créer un test JUnite

6- Vérifiez setUp () et cliquez sur Terminer. SetUp () sera l’endroit où vous initialiserez votre test.

Vérifier SetUp ()

7- Cliquez sur OK.

Ajouter JUnit

8- Ici, j’ajoute simplement 7 et 10. Donc, je m’attends à ce que la réponse soit 17. Terminez votre classe de test comme ceci:

 import org.junit.Assert; import org.junit.Before; import org.junit.Test; public class MathTest { Math math; @Before public void setUp() throws Exception { math = new Math(7, 10); } @Test public void testAdd() { Assert.assertEquals(17, math.add()); } } 

9- Cliquez sur votre classe de test dans l’explorateur de paquets et cliquez sur Exécuter en tant que -> Test JUnit.

Exécuter le test JUnit

10- Ceci est le résultat du test.

Résultat du test

J’espère que ça aide.

C’est une question très générique et il y a beaucoup de façons d’y répondre.

Si vous souhaitez utiliser JUnit pour créer les tests, vous devez créer votre classe de test, puis créer des méthodes de test individuelles qui testent des fonctionnalités spécifiques de votre classe / module sous tests (des classes de test individuelles sont généralement associées à une classe “production” unique). est en cours de test) et à l’intérieur de ces méthodes, exécuter diverses opérations et comparer les résultats avec ce qui serait correct. Il est particulièrement important d’essayer de couvrir le plus grand nombre de cas possibles.

Dans votre exemple spécifique, vous pouvez par exemple tester les éléments suivants:

  1. Une addition simple entre deux nombres positifs. Ajoutez-les, puis vérifiez que le résultat correspond à vos attentes.
  2. Une addition entre un nombre positif et un nombre négatif (qui renvoie un résultat avec le signe du premier argument).
  3. Une addition entre un nombre positif et un nombre négatif (qui renvoie un résultat avec le signe du second argument).
  4. Une addition entre deux nombres négatifs.
  5. Un ajout qui entraîne un débordement.

Pour vérifier les résultats, vous pouvez utiliser diverses méthodes assertXXX de la classe org.junit.Assert (pour plus de commodité, vous pouvez faire ‘import static org.junit.Assert. *’). Ces méthodes testent une condition particulière et échouent au test si elle ne valide pas (avec un message spécifique, éventuellement).

Exemple de classe de cas de test dans votre cas (sans le contenu des méthodes défini):

 import static org.junit.Assert.*; public class AdditionTests { @Test public void testSimpleAddition() { ... } @Test public void testPositiveNegativeAddition() { ... } @Test public void testNegativePositiveAddition() { ... } @Test public void testNegativeAddition() { ... } @Test public void testOverflow() { ... } } 

Si vous n’avez pas l’habitude d’écrire des tests unitaires mais plutôt de tester votre code en écrivant des tests ad hoc que vous validez ensuite “visuellement” (par exemple, vous écrivez une méthode principale simple qui accepte les arguments entrés avec le clavier et imprime ensuite les résultats) – et puis vous continuez à entrer des valeurs et à vous valider vous-même si les résultats sont corrects), vous pouvez commencer par écrire ces tests dans le format ci-dessus et valider les résultats avec la méthode assertXXX correcte au lieu de le faire manuellement. De cette façon, vous pouvez relancer le test beaucoup plus facilement si vous deviez faire des tests manuels.

Comme @CoolBeans mentionné, jetez un oeil à jUnit . Voici un petit tutoriel pour bien démarrer avec jUnit 4.x

Enfin, si vous voulez vraiment en savoir plus sur les tests et le développement piloté par les tests (TDD), je vous recommande de consulter le livre suivant de Kent Beck: Développement piloté par les tests par exemple .

 public class FirtJunit { @BeforeClass public static void startUp() { System.out.println("BeforeClass"); } @AfterClass public static void shutDown() { System.out.println("AfterClass"); } @Before public void setup() { System.out.println("Before"); } @After public void tearDown() { System.out.println("After"); } @Test public void mul() { System.out.println("Test for mul"); } @Test public void div() { System.out.println("Test for div"); } }