@giannino1995: giusto per informazione (e per il "futuro"), ti mostro come si può fare meglio.
codice:public class CustomerTest { private static final String NAME_A = "Name A"; private static final String NAME_B = "Name B"; private static final String ADDRESS_A = "Address A"; private static final String ADDRESS_B = "Address B"; private static final double AMOUNT_A = 1234.5; private static final double AMOUNT_B = 5678.5; @Test public void equalsWithDifferentNameShouldGiveNotEqual() { Customer c1 = createCustomer(NAME_A, ADDRESS_A, AMOUNT_A); Customer c2 = createCustomer(NAME_B, ADDRESS_A, AMOUNT_A); assertFalse("The two customers should be NOT equal for different names", c1.equals(c2)); } @Test public void equalsWithNullParameterShouldGiveNotEqual() { Customer c1 = createCustomer(NAME_A, ADDRESS_A, AMOUNT_A); assertFalse("The customer should be NOT equal to null", c1.equals(null)); } // ... altri test ... private static Customer createCustomer(String name, String address, double amountInvoiced) { Customer c = new Customer(); c.setName(new String(name)); c.setAddress(new String(address)); c.setAmountInvoiced(amountInvoiced); return c; } }
Nota un po' di cose:
1) Ho usato un metodo statico di "utilità" per creare il Customer. Nota che ho usato il costruttore String(String) per le stringhe. Questo costruttore è normalmente (nella programmazione comune) una delle cose più inutili del framework, siccome le stringhe sono immutabili e quindi condivisibili. Ma in questo caso molto specifico è utile. Serve per avere stringhe distinte (due Customer che hanno stesso nome ma come oggetti String distinti).
2) Nota i nomi dei metodi. Non c'è purtroppo un accordo standard sulla denominazione dei metodi di test. Se cerchi in rete trovi idee e pareri discordanti e ben differenti. Esistono diverse convenzioni note. La forma che ho usato io è una scelta mia, memore di ciò che ho già letto e fatto in passato. I nomi sono effettivamente lunghi ma NON importa, l'importante è che siano esplicativi di COSA sta testando il metodo.
3) Guarda il primo test, ho fatto variare solo il nome, NON il resto. Variare il name è un caso. Variare l'address è un ALTRO caso di test.
Se mischi i casi nello stesso metodo @Test: a) è meno facile dare il nome al metodo, b) se fallisce è meno facile capire QUALE caso è fallito.

Rispondi quotando