0

我得到了一个 java 代码,我必须编写测试用例才能获得 100% 的覆盖率。但是,给出的代码是以这样一种方式编写的,即“if”语句之一永远不会是真的。我们无法更改代码,仍然必须实现 100% 的代码覆盖率。怎么做。该工具只是帮助器,在其中一篇文章中提到过,但是如果我们需要这样做怎么办。代码是-`

    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{.....}

我无法给出上面“如果”为真的测试用例。

确定三角形类型方法是public String determineTriangleType(String side1, String side2, String side3 ) {......Some Processing.....}

4

1 回答 1

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";
  }
}
于 2013-07-22T15:26:06.703 回答