J Java中乘法的单元测试

J Java中乘法的单元测试,java,junit,Java,Junit,我正试图为这段代码编写一个J单元测试。现在它通过了,但我不能完全确定它是否正确。我也不完全确定代码一开始是否正确。该代码假定取两个有理数作为参数,并返回一个有理数作为其乘积 public static int multiply(int a, int b) { int product = a * b; return product; } 更新 下面是我的Rational类和我的实际代码: @Test public void multiplyTest() {

我正试图为这段代码编写一个J单元测试。现在它通过了,但我不能完全确定它是否正确。我也不完全确定代码一开始是否正确。该代码假定取两个有理数作为参数,并返回一个有理数作为其乘积

public static int multiply(int a, int b) {
    int product = a * b;
    return product;
}
更新

下面是我的Rational类和我的实际代码:

@Test   
public void multiplyTest() {        
    int product = Rational.multiply(5/7,2/3);       
    assertEquals(product, Rational.multiply(5/7, 2/3));     
}

解决方案不正确,测试也不正确

您的方法将两个整数作为输入,并返回一个整数。 您需要创建一个带有命名符和分母字段的Rational类。 将其用作参数类型和返回类型

您还需要将结果告知10/21测试,测试将确定测试中的方法是否能够获得正确的结果。给定的junit使用相同的方法计算相同的内容两次,然后验证结果是否相同。它们当然是一样的,但这证明不了什么

更新

基于您的更新,我提供了Rational类的更新版本。 其他方法也可以做类似的更改。请注意,最好是互惠返回一个rational,这样程序员也可以使用它。 您仍然可以通过写入
rational.interactive()
来打印它,因为
toString
将被自动调用,例如在
System.out.println(rational.interactive())中


您的代码只需调用测试代码两次。这将测试
multiply
是否是幂等的(至少在调用两次时是如此)。它不测试它是否实际乘以其参数。如果只是将它们相加并返回总和,您的测试将不会注意到(即失败)

你的测试也很复杂,;为什么代码中有除法

改为这样做:

public class Rational {

    private final int num;
    private final int den; 

    public Rational(int numIn, int denIn) {
        num = numIn;
        den = denIn;

    }

    public int getNum() {
        return num;
    }

    public int getDen() {
        return den;
    }

    public String toString() {
        return num + "/" + den;
    }


    public Rational reciprocal() {
        return new Rational(den,num);
    }

    public static Rational multiply(Rational a, Rational b) {
        return new Rational(a.num * b.num , a.den * b.den );
    }

    public Rational divide(int a) {
        return new Rational(this.num,a*this.den);
    }


}

如果real或long对您的测试代码很重要,请重复该操作。

有什么问题?你运行程序了吗。试过了吗?现在你的
multiply
方法应该包含两个
Rational
对象。有理数与两个分子以及两个民主党人相乘。用乘法的结果创建一个新的
Rational
对象,并返回新的
Rational
public class Rational {

    private final int num;
    private final int den; 

    public Rational(int numIn, int denIn) {
        num = numIn;
        den = denIn;

    }

    public int getNum() {
        return num;
    }

    public int getDen() {
        return den;
    }

    public String toString() {
        return num + "/" + den;
    }


    public Rational reciprocal() {
        return new Rational(den,num);
    }

    public static Rational multiply(Rational a, Rational b) {
        return new Rational(a.num * b.num , a.den * b.den );
    }

    public Rational divide(int a) {
        return new Rational(this.num,a*this.den);
    }


}
@Test
public void multiplyInts() {        
    assertEquals(Integer.valueOf(35), Rational.multiply(5, 7));     
}