Java 用于jUnit测试的Objects.equals
首先,我是Java新手,所以希望这不是一件非常简单的事情,但我正在尝试进行一些单元测试,并且我没有在Eclipse中获得旧的绿灯。对于我的问题: 所以,我有两个对象,都是类分数,我只是想确保我的方法(multiplyThem)是。。。。UH功能正常 代码(编辑以显示我现在拥有的内容): 在方法Java 用于jUnit测试的Objects.equals,java,unit-testing,junit,Java,Unit Testing,Junit,首先,我是Java新手,所以希望这不是一件非常简单的事情,但我正在尝试进行一些单元测试,并且我没有在Eclipse中获得旧的绿灯。对于我的问题: 所以,我有两个对象,都是类分数,我只是想确保我的方法(multiplyThem)是。。。。UH功能正常 代码(编辑以显示我现在拥有的内容): 在方法multiplyEm中,返回类型是一个分数,它将两个分子和两个分母相乘,然后调用另一个名为simplify的函数。然后返回简化的分数 我对这两个单独使用了System.out.println,并将完全相同的
multiplyEm
中,返回类型是一个分数,它将两个分子和两个分母相乘,然后调用另一个名为simplify的函数。然后返回简化的分数
我对这两个单独使用了System.out.println
,并将完全相同的内容打印到屏幕上。我知道这并不总是意味着它们是相同的,但也许对象.equals
不是我应该在这里使用的。对象只是两个整数:分数x=new分数(inty,intz)
我不知道为什么这次考试不及格。有人有什么想法吗?如果能为它正确编写单元测试,我将不胜感激
分数类方法倍数:
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;
}
您遇到了对象标识和相等之间的差异。equals方法根据实现检查标识或相等。
=
操作符始终检查对象的标识
该方法检查空引用,然后将检查委托给第一个参数的equals方法
从对象类继承的equals方法检查对象的标识。对象引用是否相同。Fraction
类应该覆盖equals实现。有一些方法可以正确实现equals方法。equals和hashCode方法有一个契约,Java集合要正常工作,就必须遵守这个契约
JUnit框架中包含一个方法。这是单元测试中通常用来测试相等性的方法。您遇到了对象标识和相等性之间的差异。equals方法根据实现检查标识或相等。
=
操作符始终检查对象的标识
该方法检查空引用,然后将检查委托给第一个参数的equals方法
从对象类继承的equals方法检查对象的标识。对象引用是否相同。Fraction
类应该覆盖equals实现。有一些方法可以正确实现equals方法。equals和hashCode方法有一个契约,Java集合要正常工作,就必须遵守这个契约
JUnit框架中包含一个方法。这是单元测试中通常用来测试相等性的方法。打印的内容是不相关的。Objects.equals()使用分数.equals(fraction2)。因此,如果您没有重写equals(Object),那么分数只等于它自己。您为分数类实现了equals和hashCode方法吗?Assert.assertEquals和Objects.assertEquals都委托给Fraction.equals来检查等式我想你是在问我是否在分数类(或.hashCode)的任何地方使用了france.equals?如果这就是你要问的,不,我没有。我想我也应该在课堂上发布我的代码。也许这就是我真正搞砸的地方,那些印刷品是无关紧要的。Objects.equals()使用分数.equals(fraction2)。因此,如果您没有重写equals(Object),那么分数只等于它自己。您为分数类实现了equals和hashCode方法吗?Assert.assertEquals和Objects.assertEquals都委托给Fraction.equals来检查等式我想你是在问我是否在分数类(或.hashCode)的任何地方使用了france.equals?如果这就是你要问的,不,我没有。我想我也应该在课堂上发布我的代码。也许这就是我真正搞砸的地方啊,我终于明白你的意思了。我需要自己重写equals()方法!我做到了,而且成功了。非常感谢。还有,我真的很喜欢简单的解释。啊,我终于明白你的意思了。我需要自己重写equals()方法!我做到了,而且成功了。非常感谢。而且,我真的很喜欢简单的解释。
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;
}