10
votes

Test de Junit de ToString

Compte tenu d'une méthode de tostrage:

public String toString()
{
    String accountString;
    NumberFormat money = NumberFormat.getCurrencyInstance();

    accountString = cust.toString();
    accountString += " Current balance is " + money.format (balance);
    return accountString;
}


0 commentaires

3 Réponses :


14
votes

Voici comment je le ferais:

public class AccountTest
{
    @Test
    public void testToString()
    {
        Account account = new Account(); // you didn't supply the object, so I guessed
        String expected = ""; // put the expected value here
        Assert.assertEquals(expected, account.toString());
    }
}


4 commentaires

Oui. Vous devez faire plus que ce que j'ai posté. Voir les pièces où j'ai dit que vous devez ajouter quelque chose? Avez-vous JUNIT 4.X dans votre classe de classe? Cela fonctionne si vous le faites bien. Vous devez faire les importations appropriées et telle. Je suppose que vous savez quelque chose sur Java.


java.lang.assertionError: prévu: mais était:


Je suis désolé mais je répare un petit bug avec / n dans ma chaîne, mais maintenant: attendu: Java.lang.string mais était: br.com.treinamento.logic.Account


Maintenant, le travail a oublié d'oublier à Obj, excuse l'inattention. Merci



6
votes

Je me suis aussi demandé à ce sujet aussi et je pense que la réponse de Duffymo est bien, ce n'est pas le meilleur.

Les problèmes que je vois sont des choses que vous ne pouvez pas toujours savoir ou, comme vous l'avez souligné dans des commentaires, de nouvelles lignes et d'autres personnages d'espace qui ne comptent probablement pas. P>

Donc, je pense que la meilleure chose est plutôt que la meilleure chose à utiliser, je dirais utiliser Asssertion en conjonction avec contenant (chèques si une chaîne spécifique existe dans la chaîne) et / ou des allumettes (utilise Regex pour voir si une chaîne contient un certain motif). P>

Disons que vous travaillez avec une classe de nom définie comme p>

void toStringTest1(){
    String toString = name.toString();
    // this test checks that the String at least is 
    // outputting "first=" followed by the first variable
    // but the first variable may incorrect 1's and 0's
    assertTrue(toString.contains("first=" + first));
}

void toStringTest2(){
    String toString = name.toString();
    // this test checks that the String has "first="
    // followed by only alphabetic characters
    assertTrue(toString.matches("first=[a-zA-Z]*?"));
}


0 commentaires

5
votes

Une très bonne bibliothèque pour tester les classes de modèle: https://github.com/jparams/to-string-verificateur

Échantillon: xxx


1 commentaires

Je suis nouveau ici, mais cela gardera cela est l'esprit. Pour répondre à @antoni, cela fonctionne dans un test JUNIT.