誰でもテストコードを準備する方法を示すコードを作成できますか

誰でも以下のクラスのJavaテストコードを作成できますか? 私はこれを準備する方法を見たいと思います。ランダムに準備することはできますか?

public class SortString {

  public static void selectionSort(String[] s) {
    for (int toInd = s.length-1; toInd > 0; toInd--) {
      int indMax = 0;

      for (int k = 1; k <= toInd; k++) {
        if (s[indMax].compareTo(s[k]) < 0) {
          indMax = k;
        }
      }

      String temp = s[toInd];
      s[toInd] = s[indMax];
      s[indMax] = temp;
    }
  }


  public static void show(String[] s) {
    System.out.print('\n');

    for (int i = 0; i < s.length; i++) {
      System.out.print(" " + s[i]);
    }
  }


  public static void main(String[] args) {
    String[] s =  {"A", "Z", "C", "B", "1", "3", "2", "A", "C" };

    show(s);
    selectionSort(s);
    show(s);
  }

}
1
うーん...何?
追加された 著者 Gabriel,
あなたは何を試そうとしていますか? 'テストコード'は本当に一般的なものではありませんが、何かに合わせて調整する必要があります。また、どのフレームワークを使用しようとしていますか? JML? JUnit?
追加された 著者 ewok,
コードの単体テストをしたいようです。私の意見では、一連の固定配列は無作為に生成された配列よりも優れています。そうすれば、テストが繰り返し実行され、ランダムに生成された配列が正しくソートされているかどうかを検証するコードを記述する必要はありません。ユニットテストを構築するには、JUnitを調べるとよいでしょう。
追加された 著者 Laf,

1 答え

main()で印刷する場合のJUnitテストをテストします:

import org.junit.Test;
import static org.junit.Assert.*;

public class SortStringTest {
    @Test
    public void testSelectionSort() {
        String[] s = {"A", "Z", "C", "B", "1", "3", "2", "A", "C"};
        String[] expected = { "1", "2", "3", "A", "A", "B", "C", "C", "Z"};

        SortString.selectionSort(s);
        assertArrayEquals(expected, s);
    }
}

実装のすべての側面をテストしようとすると、さらにいくつかのケースが必要になるでしょう。

2
追加された