Java 互惠的JUnit测试

Java 互惠的JUnit测试,java,junit,Java,Junit,我有一个代码,它取一个有理数的倒数。我也有一个构造函数。这就是我所拥有的: private int num; private int den; public Rational(int numIn, int denIn) { num = numIn; den = denIn; } public String reciprocal() { return den + "/" + num; } 我想为这段代码编写一个JUnit测试。到目前为止,我已经做到了这一点,但它一直在失败

我有一个代码,它取一个有理数的倒数。我也有一个构造函数。这就是我所拥有的:

private int num;
private int den;
public Rational(int numIn, int denIn) {
    num = numIn;
    den = denIn;
}
public String reciprocal() {
    return den + "/" + num;
}
我想为这段代码编写一个JUnit测试。到目前为止,我已经做到了这一点,但它一直在失败:

int num = 7;
int den = 5;
@Test
public void reciprocal() {
    String answer = 7 + "/" +5;
    assertTrue(answer == 5 + "/" + 7);
}

我怎样才能使JUnit测试在我的代码中不会失败?

您的测试没有测试任何东西。一般来说,测试需要

  • 设置一个测试用例(例如,在测试特定条件下构建一个
    Rational
    实例,即7和5)
  • 执行要测试的方法/功能(对构造的对象调用
    .interactive
  • 如果返回结果(倒数值),则断言结果;如果方法返回void并对某些预期值产生副作用,则断言状态更改
对于您的情况,这意味着:

@Test
public void reciprocal() {
    Rational rat = new Rational(7, 5);
    String res = rat.reciprocal();
    assertEquals(5 + "/" + 7, res);
}

你的测试不是在测试任何东西。一般来说,测试需要

  • 设置一个测试用例(例如,在测试特定条件下构建一个
    Rational
    实例,即7和5)
  • 执行要测试的方法/功能(对构造的对象调用
    .interactive
  • 如果返回结果(倒数值),则断言结果;如果方法返回void并对某些预期值产生副作用,则断言状态更改
对于您的情况,这意味着:

@Test
public void reciprocal() {
    Rational rat = new Rational(7, 5);
    String res = rat.reciprocal();
    assertEquals(5 + "/" + 7, res);
}

在测试中,您需要构造要测试的类的实例,
Rational
,调用被测试的方法,然后断言其结果。因此,使用
assertEquals
而不是
assertTrue
,以便它调用
equals()
方法。可能+5的作用与您预期的不同(+可以充当一元运算符)。在测试中,您需要构造要测试的类的实例,
Rational
,调用被测试的方法,然后断言其结果。因此,使用
assertEquals
而不是
assertTrue
,以便它调用
equals()
方法。可能+5的作用与您预期的不同(+可以充当一元运算符).