[JAVA]assertEquals vs assertSame
-
CRIMON
- Prode Principiante
- Messaggi: 136
- Iscrizione: domenica 30 agosto 2015, 18:38
- Desktop: Unity\Mate
- Distribuzione: Ubuntu 15.10
- Sesso: Maschile
[JAVA]assertEquals vs assertSame
salve, stavo provando Junit epr il testing, volevo dei chiarimenti, qule è la differenza tra asserEquals e assertSame, io avevo capito che assertSame equivale a un == e quindi meno stringente dell' equals che vale come metodo .equals(), giusto?
Re: [JAVA]assertEquals vs assertSame
Ciao!
Prova a guardare qui.
Prova a guardare qui.
-
CRIMON
- Prode Principiante
- Messaggi: 136
- Iscrizione: domenica 30 agosto 2015, 18:38
- Desktop: Unity\Mate
- Distribuzione: Ubuntu 15.10
- Sesso: Maschile
Re: [JAVA]assertEquals vs assertSame
bhé si, tanto vale rimuivere questa e tutte le altre sezioni del forum, grazie
Re: [JAVA]assertEquals vs assertSame
Se hai un problema molto specifico, che hai già provato a risolvere da solo anche facendo una ricerca sul forum e su google, allora sono ben lieto di aiutarti.
Se invece per risolvere il problema basta una ricerca non vedo il senso di un post, che ti fa perdere anche un sacco di tempo mentre aspetti che qualcuno ti risponda.
(;
Per ulteriori info ti rimando al regolamento.
Se invece per risolvere il problema basta una ricerca non vedo il senso di un post, che ti fa perdere anche un sacco di tempo mentre aspetti che qualcuno ti risponda.
(;
Per ulteriori info ti rimando al regolamento.
-
CRIMON
- Prode Principiante
- Messaggi: 136
- Iscrizione: domenica 30 agosto 2015, 18:38
- Desktop: Unity\Mate
- Distribuzione: Ubuntu 15.10
- Sesso: Maschile
Re: [JAVA]assertEquals vs assertSame
il dubbio mi è venuto durante una lezione, perchè usavo assertEquals in un modo(ovvero come se fosse il metodo .equals()) perchè così avevo letto venisse usato, mentre a lezione il professore (che non mi azzarderei mai a screditare) ci ha detto il contrario con degli esempi, volevo sapere quale era la soluzione più giusta
Re: [JAVA]assertEquals vs assertSame
Non c'è una soluzione più "giusta": sono due cose diverse.
assertEquals restituisce true se e solo se i due parametri sono uguali secondo la funzione equals, mentre assertSame restituisce true se e solo se i due parametri sono una referenza allo stesso oggetto.
A seconda dei casi ti servirà utilizzare uno o l'altro.
Piccolo esempio:
codice di debug
assertEquals restituisce true se e solo se i due parametri sono uguali secondo la funzione equals, mentre assertSame restituisce true se e solo se i due parametri sono una referenza allo stesso oggetto.
A seconda dei casi ti servirà utilizzare uno o l'altro.
Piccolo esempio:
Codice: Seleziona tutto
public class Point
{
private final int x;
private final int y;
....
@Override public boolean equals(Object other) {
boolean result = false;
if (other instanceof Point) {
Point that = (Point) other;
result = (this.getX() == that.getX() && this.getY() == that.getY());
}
return result;
}
Codice: Seleziona tutto
Point p1 = new Point ( 5, 10 );
Point p2 = new Point ( 5, 10 );
assertEquals ( p1, p2 ); // true
assertSame ( p1, p2 ); // false
assertEquals ( p1, p1 ); // true
assertSame ( p1, p1 ); // true
-
CRIMON
- Prode Principiante
- Messaggi: 136
- Iscrizione: domenica 30 agosto 2015, 18:38
- Desktop: Unity\Mate
- Distribuzione: Ubuntu 15.10
- Sesso: Maschile
Re: [JAVA]assertEquals vs assertSame
okey, grazie, quindi se non sbaglio se voglio fare un assert a un tipo restituito da un metodo same è "più stringente" giusto?
Re: [JAVA]assertEquals vs assertSame
Sì, perché se assertSame(a, b) vale true allora vale necessariamente anche assertEquals(a,b)[1], ma non è vero il viceversa: potrebbero esistere due oggetto per cui vale assertEquals (a,b) ma non assertSame(a,b), come i due punti p1 e p2 dell'esempio precedente.
[1] In realtà potresti implementare equals in modo che sia meno stringente del confronto fra le referenze, ma se rispetti le linee guida per l'implementazione di equals questo non dovrebbe mai succedere.
[1] In realtà potresti implementare equals in modo che sia meno stringente del confronto fra le referenze, ma se rispetti le linee guida per l'implementazione di equals questo non dovrebbe mai succedere.
Chi c’è in linea
Visualizzano questa sezione: 0 utenti iscritti e 2 ospiti
