Как тестировать экземпляры в 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)

}

Где вы видите эту линию? Если вы наводите курсор на линию, что это означает?

Sotirios Delimanolis 13.09.2018 20:32
3
2
291
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Вы не указываете свою среду, но, скорее всего, она ведет себя аналогично Eclipse (может быть, это Eclipse?), Поскольку строчка в коде указывает на то, что вы используете устаревший API. В этом случае, если вы перейдете к документации API Junit, вы увидите, что assertEquals для двойников, которые вы вызываете, устарел в пользу того, который включает дельту. API

Идея состоит в том, что числа с плавающей запятой по своей сути неточны, поэтому их сравнение в лучшем случае неточно. Вам также необходимо включить дельту, чтобы вы могли указать, насколько далеко могут быть друг от друга числа, и при этом они будут приемлемыми.

Итак, в основном вы хотите:

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

Кстати, я понимаю, что вы просто пытаетесь осознать это - и, следовательно, вы, вероятно, пытаетесь придумать простой тест, просто чтобы «что-то заработало». Но подобные тесты - когда вы сравниваете константу класса, чтобы убедиться, что это то, что вы вводите - не особенно полезны. Я был бы более склонен протестировать, чтобы убедиться, что поставка 0, когда ваши "сожженные галлоны" вернут правильную константу "INVALID_MPG".

ой ну спасибо! имеет смысл

Clyde 13.09.2018 21:28

Вычеркивание строки означает, что метод устарел. http://junit.sourceforge.net/javadoc/org/junit/Assert.html#assertEquals(double, двойной)

Новый метод для использования ниже

public static void assertEquals (ожидаемое двойное значение, двойной актуальный, двойная дельта)

Дельта - это разница между фактическим и ожидаемым значением.

Другие вопросы по теме