2016-10-13 1 views
0

Wert des lokalen Objekts wird während der Aktivierung geändert. So erhalten Sie den gleichen Wert für ein lokales Objekt wie für ein gespottetes Objekt.JMockit: Wert des lokalen Objekts wird geändert, während

zum Beispiel:

enter code here 
public void checkStatus() 
{ 
ABC abc = new ABC(); 
// line of code 
} 

Während die JUnit-Testfall mit JMockit Schreiben i das Objekt von ABC verspottet haben Aber, während der Wert des Objekts überprüft oder behaupten, wird der Wert von abc immer verändert.

enter code here 
@Test 
public void checkStatusTest(@Mocked ABC abc) 
{ 
    new StrictExpectations() 
    { 
     new ABC(); 
     result = abc; // here value of abc is getting changed 
     times=2; 
    } 
} 
    someobject.checkStatusTest(); 
    assertequals(abc,new ABC()); 

}

Im obigen Testfall der Wert abc geändert zu werden. I zeigt die Fehler

java.lang.AssertionError:[email protected] but was:ABC5fe33

Antwort

2

Sie nicht equals() auf der ABC Klasse definiert haben, das heißt, es durch zu Object.equals() fällt die true zurück, wenn und nur wenn sie genau das gleiche Objekt sind.

Nun haben Sie in StrictExpectations ein Objekt ABC erstellt ... und in assertEquals() haben Sie ein anderes erstellt. So werden sie niemals gleich sein. Nichts hat sich an dir verändert; Sie haben es nur mit zwei verschiedenen Objekten zu tun, die nicht gleich sind.

Verwandte Themen