如何在 Junit 中测试实例?



下面是我要测试的代码

public class EPATestMode {
public static final int INVALID_MPG = -1; 
private int odometerAtReset;

public EPATestMode() {
odometerAtReset = 0;
}

public void resetReadings(int milesDriven) {
// Use the current mileage as the new baseline
odometerAtReset = milesDriven;
}

public double mpg(int currentOdometer, int gallonsBurnt) {
if (gallonsBurnt == 0) {
return INVALID_MPG;
} else {
int milesDriven = currentOdometer - odometerAtReset;
return milesDriven / gallonsBurnt;
}
}
}

这是我想要做的第一个测试用例,在实例变量 INvalid MPG 上,但是当我这样做时,有一行划掉了"assertEquals"。对此非常困惑。(也是JUnit测试的新手(

@Test
public void testInvalidMpg() {
EPATestMode MpgTest = new EPATestMode();
double results=MpgTest.INVALID_MPG;
assertEquals(results,-1)
}

你没有说明你的环境,但很可能它的行为类似于Eclipse(也许是Eclipse?(,因为代码中的一行表明你正在使用一个不推荐使用的API。 在这种情况下,如果您转到 Junit API 文档,您将看到像您正在调用的双精度的 assertEquals 已被弃用,取而代之的是包含增量的双精度。 应用程序接口

这个想法是浮点数本质上是不精确的,因此比较它们充其量是不精确的。 您还需要包含一个增量,以便您可以指示数字之间的距离和仍然可以接受的距离。

所以基本上你想要:

assertEquals(results, -1, .000001); // For example.

附带说明一下,我知道你只是想解决这个问题 - 因此你可能试图提出一个简单的测试,只是为了让"一些东西起作用"。 但是像这样的测试——你比较一个类常量,看看它是否是你输入的——并不是特别有用。 我更倾向于进行测试以确保在您的"加仑燃烧"时提供 0 返回正确的"INVALID_MPG"常数。

划线表示该方法已弃用。 http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertEquals(双、双(

要使用的新方法如下

公共静态 void 断言等于(双预期, 双实际, 双三角洲(

增量是实际和预期可以有多大的差异。

最新更新