Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178

    Testare le classi toString, clone ed equals [JUnit]

    Devo testare questi metodi. Precedentemente ho creato una classe che testa il metodo Fibonacci. Ad esempio:

    codice:
    @Test
    assertEquals(1, fibonacci(0));

    come potrei fare con il metodo toString, equals e clone utilizzando JUnit ?
    Ultima modifica di LeleFT; 10-06-2015 a 14:33

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Es.

    codice:
    public void testTwoIntegersEqual() {
        assertTrue(new Integer(123).equals(new Integer(123)));
    }
    
    public void testTwoIntegersNotEqual() {
        assertFalse(new Integer(123).equals(new Integer(12345)));
    }
    
    public void testIntegerNotEqualToOtherType() {
        assertFalse(new Integer(123).equals("xyz"));
    }
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Ho provato a creare un metodo che testa il metodo toString della classe Targa.

    codice:
    @Test
    public void testToString()
    {
    	String toString = targa1.toString();
    	assertTrue(toString.contains("Targa[c1 = " + targa1.c1 + "; c2 = "+ targa1.c2 + "; c3 = " + targa1.c3 +"]"));
    }
    il test mi da esito negativo

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    il test mi da esito negativo
    Come è fatto il toString() di Targa? Dove/come assegni quel targa1?
    E comunque non va bene che usi targa1.c1 ecc...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Come è fatto il toString() di Targa? Dove/come assegni quel targa1?
    E comunque non va bene che usi targa1.c1 ecc...
    public String toString()
    {
    return "Targa[c1 = " + c1 + "; c2 = "+ c2 + "; c3 = " + c3 +"]";
    }

  6. #6
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    E cosa restituisce?

    Un consiglio: invece di assertTrue usa assertEquals: in questo modo nel messaggio di errore ottieni qualche info in più:

    String expectedValue = "PIPPO";
    String actualValue = "PIPPA";

    assertEquals(expectedValue, actualValue);

    // l'errore dirà una cosa del tipo "expected PIPPO, actual value is PIPP[A]"

    Comunque accedere dall'esterno direttamente a c1, c2 ecc è terribile D:
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  7. #7
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    178
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    E cosa restituisce?

    Un consiglio: invece di assertTrue usa assertEquals: in questo modo nel messaggio di errore ottieni qualche info in più:

    String expectedValue = "PIPPO";
    String actualValue = "PIPPA";

    assertEquals(expectedValue, actualValue);

    // l'errore dirà una cosa del tipo "expected PIPPO, actual value is PIPP[A]"

    Comunque accedere dall'esterno direttamente a c1, c2 ecc è terribile D:
    E' corretto testarla cosi ?

    codice:
    @Test
    public void testToString()
    {
         Targa targa = new Targa("hgt", "455", "jjj");
         assertEquals("Targa[c1 = " + targa.c1 + "; c2 = "+ targa.c2 + "; c3 = " + targa.c3 +"]",     targa.toString());
    }
    oppure direttamente

    codice:
    Targa targa =new Targa("hgt","455","jjj");
    assertEquals("Targa[c1 = hgt; c2 = 455; c3 = jjj]", targa.toString());
    il test mi da esito positivo. Ma è corretta la forma ?
    Ultima modifica di Bombonera; 11-06-2015 a 15:05

  8. #8
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Bombonera Visualizza il messaggio
    oppure direttamente

    codice:
    Targa targa =new Targa("hgt","455","jjj");
    assertEquals("Targa[c1 = hgt; c2 = 455; c3 = jjj]", targa.toString());
    Ma è corretta la forma ?
    Sì, è corretta la forma. Ed è meglio dell'altra dove usi targa.c1 ecc... E ti spiego anche perché. Metti caso che il costruttore di Targa sia sballato, metti che sia "saltato" l'assegnamento ad un campo, che pertanto rimane a null. Siccome il toString usa quel campo e pure la concatenazione nel tuo test usa quel campo, avresti comunque un match ma testeresti una cosa fasulla ...
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.