Zuerst bin ich neu in Java, also hoffentlich ist das nicht etwas furchtbar Einfaches, aber ich versuche ein paar Unit-Tests zu machen und ich bekomme nicht das alte grüne Licht in Eclipse. Zu meinem Problem:Objects.equals für jUnit test
Also, ich habe zwei Objekte, sowohl der Klasse Fraktion und ich versuche einfach sicherzustellen, dass meine Methode (MultiplyThem) ist .... äh ... funktioniert einwandfrei.
-Code (herausgegeben zu zeigen, was ich habe jetzt):
private Fraction newFraction, otherFraction, thirdFraction;
@Before
public void setUp(){
newFraction = new Fraction(2, 3);
otherFraction = new Fraction(1, 5);
thirdFraction = new Fraction(2, 15);
}
@Test
public void testMultiplyEm() {
System.out.println(newFraction.multiplyEm(otherFraction));
System.out.println(thirdFraction);
assertEquals("Fractions don't equal", newFraction.multiplyEm(otherFraction), thirdFraction);
}
Bei dem Verfahren multiplyEm
, ist der Rückgabetyp eine Fraktion und es multipliziert zwei Zähler und zwei Nennern vor simplify auf einer anderen Funktion aufgerufen aufrufen. Dann gibt es die vereinfachte Fraktion zurück.
Ich benutzte System.out.println
auf den beiden einzeln und bekam genau das gleiche auf den Bildschirm gedruckt. Ich weiß, das bedeutet nicht immer, dass sie gleich sind, aber vielleicht ist Objects.equals
nicht das, was ich hier verwenden sollte. Die Objekte sind einfach zwei Eingänge: Fraction x = new Fraction(int y, int z)
.
Ich bin mir nicht sicher, warum das den Test nicht besteht. Hat jemand Ideen? Wäre dankbar für eine Möglichkeit, einen Unit Test dafür richtig zu schreiben!
Fraktion Klasse Methode multiplyEm:
public Fraction multiplyEm(Fraction otherFraction){
int newNumerator = this.numerator * otherFraction.numerator;
int newDenominator = this.denominator * otherFraction.denominator;
Fraction newFraction = new Fraction(newNumerator, newDenominator);
return newFraction;
}
Was gedruckt wird, ist irrelevant. Objects.equals() verwendet fraction.equals (fraction2). Also, wenn Sie gleich (Objekt) nicht überschrieben haben, dann ist ein Bruch nur gleich zu sich selbst. –
Haben Sie die Methoden equals und hashCode für die Klasse Fraction implementiert? Die Assert.assertEquals und Objects.assertEquals delegieren beide an Fraction.equals, um die Gleichheit zu überprüfen. –
Ich denke, Sie fragen, ob ich Fraction.equals irgendwo in meiner Fraktionsklasse (oder .hashCode) verwendet habe? Wenn du das fragst, nein, habe ich nicht. Ich denke, ich sollte meinen Code auch aus der Klasse veröffentlichen. Vielleicht ist das, wo ich wirklich etwas vermasselt – drawnitsud