0

より大きな数の 2 値の JUnit テストを取得する方法を理解する助けが必要です。

加算、減算などの単純な関数の Junit テストを行う方法は知っていますが、2 つの値の大きな値を見つけることはできません。

これは私が持っているものです:

 public static int getMax(int x, int y){
        if(x >= y) {
            return x;
        }
        else {
            return y;
        }
    }

私は私が書いたことを証明することにこだわっています。

4

3 に答える 3

0

単体テストを行う場合、関数を呼び出して、その結果を期待するテストと比較することは、既に行ったことと変わらないはずです。

Junit 4を使用する

@Test public void mySimpleTestCase(){
    // assertEquals tells junit you want the two values to be equal
    // first parameter is your expected result second is the actual result
    assertEquals(2 , MyFunctions.getMax(1,2) );
}

@Test public void myComplexTestCase(){
    // by generating numbers randomly we can do a slightly 
    // different test each time we run it.
    Random r = new Random();
    int i = r.nextInt();
    int j = r.nextInt();
    if (i > j){
      assertEquals("looking for max of " +i + " : " + j, i , MyFunctions.getMax(i,j) );
    } else {
      assertEquals("looking for max of " +i + " : " + j, j , MyFunctions.getMax(i,j) );
    }
}
于 2013-10-02T03:37:52.043 に答える
0

私はするだろう:

import static org.assertj.core.api.Assertions.assertThat;
import org.junit.runner.RunWith;
import com.googlecode.zohhak.api.TestWith;
import com.googlecode.zohhak.api.runners.ZohhakRunner;

@RunWith(ZohhakRunner)
class MyMaxTest {

  @TestWith({
     "1, 2, 2",
     "2, 1, 2",
     "1, 1, 1"
  })
  public void shouldReturnMaximum(int number1, int number1, int expected) {

    int result = MyClass.getMax(number1, number2);

    assertThat(result).isEqualTo(expected);
  }

}
于 2013-10-13T19:11:25.413 に答える
0

コードを調べると、分岐は 1 つしかないため、カバーするケースは 2 つだけです。

@Test
public void firstNumberGreaterThanSecondIsReturned()
{
    assertEquals(1, NumericUtils.getMax(1, 0));
}

と:

@Test
public void secondNumberGreaterThanFirstIsReturned()
{
    assertEquals(1, NumericUtils.getMax(0, 1));
}

これを TDD として記述している場合は、等しい数または他の境界ケースから始めることができますが、確信が持てないケースが他にない限り、テストを追加する価値はありません。

于 2013-10-08T11:51:49.927 に答える