Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 用于jUnit测试的Objects.equals_Java_Unit Testing_Junit - Fatal编程技术网

Java 用于jUnit测试的Objects.equals

Java 用于jUnit测试的Objects.equals,java,unit-testing,junit,Java,Unit Testing,Junit,首先,我是Java新手,所以希望这不是一件非常简单的事情,但我正在尝试进行一些单元测试,并且我没有在Eclipse中获得旧的绿灯。对于我的问题: 所以,我有两个对象,都是类分数,我只是想确保我的方法(multiplyThem)是。。。。UH功能正常 代码(编辑以显示我现在拥有的内容): 在方法multiplyEm中,返回类型是一个分数,它将两个分子和两个分母相乘,然后调用另一个名为simplify的函数。然后返回简化的分数 我对这两个单独使用了System.out.println,并将完全相同的

首先,我是Java新手,所以希望这不是一件非常简单的事情,但我正在尝试进行一些单元测试,并且我没有在Eclipse中获得旧的绿灯。对于我的问题:

所以,我有两个对象,都是类分数,我只是想确保我的方法(multiplyThem)是。。。。UH功能正常

代码(编辑以显示我现在拥有的内容):

在方法
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;
    }