下面是我要测试的代码
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)
}
答案 0 :(得分:1)
您没有声明您的环境,但是很可能它的行为类似于Eclipse(也许是Eclipse?),因为代码中的一行表明您正在使用不赞成使用的API。在这种情况下,如果您转至Junit API文档,则会发现不赞成使用像您正在调用的double那样的assertEquals,而推荐使用包含增量的double。 API
这个想法是,浮点数本质上是不精确的,因此比较它们充其量是不精确的。您还需要包含一个增量,以便可以指示这些数字可以相距多远并且仍然可以接受。
所以基本上你想要:
assertEquals(results, -1, .000001); // For example.
在旁注中,我了解到您只是想绕开这个头-因此,您可能正在试图提出一个简单的测试以使“某些东西正常工作”。但是像这样的测试-比较类常量以查看是否是您输入的内容-并不是特别有用。我将更倾向于进行测试以确保在“加仑燃烧”中提供0会返回正确的“ INVALID_MPG”常量。
答案 1 :(得分:0)
线交叉表示不赞成使用该方法。 http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertEquals(double,加倍)
下面使用的新方法
public static void assertEquals(应加倍, 实际两倍 双三角洲
变化量是实际值和预期值之间的差异。