Не удается устранить эти мутации — Java Junit Pit Testing

#java #junit #code-coverage #mutation

#java #junit #покрытие кода #мутация

Вопрос:

У меня есть простой метод, который проверяет, находится ли вычисленная разница в пределах диапазона. Он показывает 5 мутаций для возвращаемого значения. Что бы я ни пытался, я не могу уничтожить эти мутации. Ниже приведен метод и тестовый пример.

     public boolean isInRange(Float value1, Float value2) {
        int upperBound = acceptableDifference;
        int lowerBound = -acceptableDifference;
        Float difference = value1 - value2;
        return difference >= lowerBound amp;amp; difference <= upperBound;
    }

////////TEST CASE

        assertEquals(true, classUnderTest.isInRange(20.0F, 30.0F));
        assertEquals(false, classUnderTest.isInRange(20.0F, 45.0F));
  

Как вы уничтожаете такие мутации, как эта?

Отчет о PIT:

 96      public boolean isInRange(Long value1, Long value2) { 
97          int upperBound = acceptableDifference;
98  1       int lowerBound = -acceptableDifference;   //<== One mutation
99  1       Long difference = value1 - value2;        //<== One mutation
100 5       return difference >= lowerBound amp;amp; difference <= upperBound;  //<== Five Mutations
  

Комментарии:

1. Можете ли вы объяснить, каков правильный код и какую мутацию вы делаете?

2. Конечно. Итак, самая большая мутация, которую я хочу устранить, — это оператор return (только для этой строки их 5). Я попытался указать значения, которые заставляют этот метод возвращать как true, так и false, а затем использовал assertEquals() для проверки правильности возврата true или false. Однако мутации не уничтожаются. Как вы можете видеть в отчете PIT, строка 100 содержит 5 мутаций. (это удаляет условные границы).

3. Чтобы устранить эту мутацию, вам нужно запустить тест, который проверит границы. Как вы устанавливаете acceptableDifference?

4. И если вы выполните мутацию и удалите границы, тест должен завершиться неудачей. Так ли это?

5. понял. Мне пришлось также учитывать как отрицательные, так и положительные значения в тестировании. глупый недосмотр. Спасибо.s