comment tester si les déclarations avec junit?
Je n'arrive pas à trouver des didacticiels en ligne qui traitent de ce
J'ai cette if
déclaration:
if (basket.getCustomerId() != null) {
Basket exBasket = findBasketByCustomerId(basket.getCustomerId());
if (exBasket != null && exBasket.getBasketId() != null) {
return exBasket;
}
et je veux écrire un test unitaire qui permettra de tester chaque ligne pour voir si elle est en train de faire la bonne chose.
Des idées?
@Test
public void testBasketWithANullCustomerId(){
basketInformationServiceImpl.createBasket(mockBasket);
assertNotNull(mockBasket.getCustomerId());
}
OriginalL'auteur BlueShark | 2014-12-22
Vous devez vous connecter pour publier un commentaire.
Le but d'effectuer des tests unitaires n'est pas de tester états mais méthodes. La bonne chose à faire est de ne pas considérer cette ligne, mais de considérer la méthode qu'il apparaît, et demander ce que vous voulez que la méthode pour le faire: quelle sorte d'entrée ne il prendre, et ce genre de sortie doit-il produire?
Puis écrire des tests qui prennent un certain typique entrées, et de vérifier qu'ils donnent de corriger les sorties, et aussi quelques bord de cas intrants (comme
null
, 0,Integer.MAX_VALUE
, etc.) et vérifiez que vous obtenez le droit sorties pour ceux qui sont trop.Si c'est l'ensemble de votre méthode (qui, en fait, il ne peut pas l'être, mais si c'est l'essence même de celui-ci), j'avais test:
basket
avec unnull
ID client;null
panier (sauf si vous êtes certain de cela ne peut jamais arriver), parce qu'actuellement, ce code vous donnera unNullPointerException
;exBasket
;exBasket
denull
;exBasket
qui n'est pas nulle, mais dont le panier ID estnull
.Je pense que vous êtes à la recherche à de la mauvaise façon. Comme je l'ai dit, ne pense pas que sur le test de instructions à tous. Pensez - les entrées et les sorties.
ok regarde ma question pour une mise à jour de la réponse à votre premier point. est-ce correct?
très probablement, bien que vous aurez besoin
mockBasket
être défini en quelque sorte... et je suis en supposant que.createBasket()
est la méthode qui contient la déclaration que vous avez mentionné?c'est au sommet de ma classe. @Mock privé Panier mockBasket; désolé, lequel des énoncés? .createBasket() est la méthode à l'intérieur d'basketInformationServiceImpl classe
OriginalL'auteur chiastic-security
En supposant que c'est un extrait d'une méthode que vous êtes en train de tester, on dirait que vous avez besoin d'au moins deux cas de test - celui où
basket.getCustomerId()
devrait être null et celui où il ne l'est pas. Dans les deux cas, vous devriez être en mesure de tester la méthode de la valeur de retour (je suis en supposant unBasket
sera retourné en casgetCustomerId()
est nulle) par rapport au résultat attendu.OriginalL'auteur rchang
De test dans la façon dont vous semblez vouloir (mettant l'accent sur la couverture en ligne), vous avez besoin d'un test pour chaque situation que vous souhaitez tester (par exemple, un test pour une valeur nulle basketId, de l'autre pour ne pas null basketId, un autre pour un autre cas où vous souhaitez tester).
Se moquant de cadres (comme Mockito) peut être utilisé pour définir les conditions préalables pour un test. Pour un exemple d'un cas vous pouvez dire
OriginalL'auteur Brandon McKenzie