Maison > Java > javaDidacticiel > Pourquoi ne pas fournir la méthode assertNotEquals de JUnit ?

Pourquoi ne pas fournir la méthode assertNotEquals de JUnit ?

黄舟
Libérer: 2016-12-29 09:14:01
original
1837 Les gens l'ont consulté

1. Je suggère les nouvelles assertions de style assertThat(), qui facilitent la description de diverses négations et génèrent automatiquement une description de ce que vous attendez et de ce que vous obtenez si les assertions échouent : assertThat(objectUnderTest,

is(not(someOtherObject)));
assertThat(objectUnderTest, not(someOtherObject));
assertThat(objectUnderTest, not(equalTo(someOtherObject)));
Copier après la connexion

Les trois options sont équivalentes, choisissez celle qui vous semble la plus lisible (et qui permet à cette syntaxe stricte de fonctionner) et vous avez besoin de ces importations :

i

mport static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
Copier après la connexion

2 . Il y a assertNotEquals dans JUnit 4.11 :
3 Je ne sais pas si l'API d'assertions n'est pas très adaptée pour tester les objets qu'elle fournit et bien sûr CodeGo.net, ce n'est pas trop long à écrire :

assertFalse(foo.equals(bar));
Copier après la connexion


Avec cet argument, une partie du rendement est si malheureuse qu'elle devrait être divisée :

String msg = "Expected <" + foo + "> to be unequal to <" + bar +">";
assertFalse(msg, foo.equals(bar));
Copier après la connexion

C'est bien sûr, améliorer le déploiement de assertNotEqual fera probablement partie de JUnit dans le futur : JUnit Numéro 22
4. Je pense que si assertNotEqual est effectivement celui qui rend JUnit un peu moins intéressant à apprendre, gardez à l'esprit que c'est une situation intéressante où l'ajout d'une API réduite aiderait au moins. avec plus d'espace. Je suppose que la raison de l'omission pourrait être qu'il y a trop peu d'appels multijoueurs, cependant, je m'attends à ce que même assertFalse n'existe pas, donc je pourrais finir par ajouter un point positif car ce n'est pas difficile. un, même si j'avoue qu'il existe des solutions de contournement qui sont même élégantes
5 Très tard pour la fête, mais j'ai trouvé que le format suivant :

static void assertTrue(java.lang.String message, boolean condition)
Copier après la connexion

peut fonctionner pour la plupart des « pas égaux ». cas

int status = doSomething() ; // expected to return 123
assertTrue("doSomething() returned unexpected status", status != 123 ) ;
Copier après la connexion

6. C'est mieux pour Hamcrest. Les assertions négatives au lieu de assertFalse afficheront un échec différentiel dans le rapport de test. Si assertFalse, vous n'obtiendrez qu'un rapport des assertions ayant échoué
7. . La raison est que assertNotEquals(). ) sont des commandes intégrées sans les convertir d'abord en objets à part entière : Exemple détaillé :

....
assertThat(1, not(equalTo(Integer.valueOf(winningBidderId))));
....
Copier après la connexion

vs.

assertNotEqual(1, winningBidderId);
Copier après la connexion

8. Cohérence de l'API du module, pourquoi JUnit ne fournit-il pas assertNotEquals(), ce qui est la raison pour laquelle JUnit l'aime toujours assertStringMatchesTheRegex(regex, str) vs assertStringDoesntMatchTheRegex(regex, str) assertStringBeginsWith(prefix, str) vs assertStringDoesntBeginWith(prefix, str) ) c'est-à-dire qu'il n'y a pas de fin pour fournir un type spécifique de quelque chose que vous voudrez peut-être ajouter de la logique à votre argument ! Mieux vaut tester des primitives comme equalTo(...), is(...), not(...), regex(...) et les faire fonctionner ensemble pour plus de lisibilité et de bon sens.

Ce qui précède explique pourquoi la méthode JUnit assertNotEquals n'est pas fournie ? Contenu, pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal