2014-09-20 3 views
-1

J'ai des problèmes avec mon test. On dirait que c'est simple. Tout ce que vous avez à faire est de supprimer un espace, mais je continue à recevoir une erreur pour une raison quelconque.Erreur lors du test

@Override 
    public String format(String template) { 
     if(template.equals("%t")){ 
      return String.format("%02 seconds", getSeconds()); 
     } 
     else if(template.equals("%h:%M:%S")) { 
      return String.format("%02d:%02d:%02d", getHours(), getMinutes(), getSeconds()); 
     } 
     else if(template.equals("%d days, %h hours, %m minutes, and %s seconds")){ 
      return String.format("%d days,%2d hours,%2d minutes, and %2d seconds", getDays(), getHours(), 
        getMinutes(), getSeconds()); 
     } 
     else return null; 

    } 


@Test 
    public void testFormatExample1() { 
     assertEquals("3 days, 4 hours, 0 minutes, and 9 seconds", 
       fromDHMS(3, 4, 0, 9) 
         .format("%d days, %h hours, %m minutes, and %s seconds")); 
    } 

C'est ce que je devrais obtenir

3 days, 4 hours, 0 minutes, and 9 seconds 

encore ce que je continue à recevoir

Expected :3 days, 4 hours, 0 minutes, and 9 seconds 
Actual :3 days, 4 hours, 0 minutes, and 9 seconds 

J'ai tout essayé de se débarrasser de cet espace supplémentaire dans and 9 seconds

Si je vais au dernier cas de mon instruction if, et que je supprime l'espace entre and et %2d seconds, cela ne fonctionne toujours pas. Je l'ai fait pour les espaces avant et ça a marché.

Est-ce que quelqu'un connaît le problème?

+0

Où est le code pour 'fromDHMS()'? –

+0

Je ne pensais pas que c'était nécessaire –

Répondre

4

Le problème est juste %2d - vous avez explicitement demandé le nombre de secondes à convertir en un minimum de deux caractères. Il suffit de le faire %d et ça devrait aller. Voir le Formatter documentation pour plus de détails. Notez que pour le moment, si vous avez 10 heures ou plus et 10 minutes ou plus, vous n'obtiendrez probablement pas la sortie que vous attendez - vous n'aurez plus d'espace après la virgule. Je suppose que vous voulez une chaîne de format:

"%d days, %d hours, %d minutes, and %d seconds" 

En aparté, cependant, je ne pense pas que seulement accepter certains modèles d'entrée très spécifiques est une très bonne idée - si c'est tout ce que vous devez soutenir, je J'utiliserais une énumération pour les représenter à la place.

+0

Merci. Je comprends maintenant. –

Questions connexes