2013-07-22 3 views
0

Мне дается код Java, и я должен написать тестовые примеры, чтобы получить 100% -ый охват. Но приведенный код написан таким образом, что одно из операторов «if» никогда не будет истинным. Мы не можем изменить код, но мы должны достичь 100% охвата кода. Как это сделать. Инструмент только помощник, его упоминается в одном из поста, но что, если так или иначе мы должны сделать that.The коды-`JUnit покрытие недостижимого кода

public double getArea(int side1, int side2, int side3) { 
    String type = determineTriangleType(side1+"", side2+".1", side3+""); 
    double area; 

    //Different way of calculation for Equilateral 
    if(type.equals("Equilateral")) 
    { 
     area =(Math.sqrt(3)/4)*side1 *side2; 
    }` else{.....} 

Я не в состоянии дать тестовый пример, для которого выше«, если " правда.

Метод determineTriangleType является public String determineTriangleType(String side1, String side2, String side3) {......Some Processing.....}

ответ

0

Обычный подход здесь, чтобы убедиться, что type является искомым значением. Для этого вам нужно будет изменить determineTriangleType, чтобы вернуть требуемый тип.

Это то, куда входят макетные объекты. Идея состоит в том, чтобы расширить класс Java под тестом и переопределить determineTriangleType, чтобы безоговорочно вернуть правильное значение в производной реализации. Затем вы вызываете метод, который хотите протестировать на экземпляре производного класса, и теперь будет выполняться оператор метода if.

public class DerivedToCheckIf extends BaseClass { 
    @Override 
    public String determineTriangleType(String side1, String side2, String side3) { 
    // call to super implementation may not be required 
    // if the method does not change object state which affects the method under test 
    super.determineTriangleType(side1, side2, side3); 
    return "Equilateral"; 
    } 
} 
+0

Но все-таки, процент охвата в первоначальном базовом классе не изменится, как это утверждение еще недостижим в базовом классе –

+0

Ну, альтернатива надеяться, что 'determineTriangleType' есть ошибка, которая * вынуждающая * ошибка в исследуемый метод. В этом случае вы можете пройти равносторонним треугольником и получить ожидаемые результаты. – user268396

Смежные вопросы