Pagina 1 di 1
[JAVA]assertEquals vs assertSame
Inviato: lunedì 27 marzo 2017, 21:30
da CRIMON
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
Inviato: sabato 8 aprile 2017, 17:33
da melfnt
Ciao!
Prova a guardare
qui.
Re: [JAVA]assertEquals vs assertSame
Inviato: domenica 9 aprile 2017, 19:17
da CRIMON
bhé si, tanto vale rimuivere questa e tutte le altre sezioni del forum, grazie
Re: [JAVA]assertEquals vs assertSame
Inviato: lunedì 10 aprile 2017, 18:25
da melfnt
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.
Re: [JAVA]assertEquals vs assertSame
Inviato: lunedì 10 aprile 2017, 21:52
da CRIMON
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
Inviato: martedì 11 aprile 2017, 10:23
da melfnt
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: 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 di debug
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
Re: [JAVA]assertEquals vs assertSame
Inviato: martedì 11 aprile 2017, 21:27
da CRIMON
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
Inviato: giovedì 13 aprile 2017, 22:22
da melfnt
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.
Re: [JAVA]assertEquals vs assertSame
Inviato: giovedì 13 aprile 2017, 22:25
da CRIMON
grazie