0

Java コードが与えられ、100% のカバレッジが得られるようにテスト ケースを作成する必要があります。ただし、与えられたコードは、"if" ステートメントの 1 つが決して真にならないように記述されています。コードを変更することはできませんが、100% のコード カバレッジを達成する必要があります。どうやってするか。ツールは単なるヘルパーであり、投稿の 1 つで言及されていますが、とにかくそれを行う必要がある場合はどうでしょうか。コードは-`

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

上記の「if」が真であるテストケースを提示することはできません。

defineTriangleType メソッドは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 に答える