0

「Students」という名前のデータベース テーブルがあるとします。

         Students Table
|---------------|---------------|
|     Name      |      Age      |
|---------------|---------------|
|     John      |       9       |
|---------------|---------------|
|     Jane      |       7       |
|---------------|---------------|
|     Dana      |       8       |
|---------------|---------------|
|     John      |       6       |
|---------------|---------------|

次を使用して、すべての名前を返すようにデータベースに要求します。

SELECT Name FROM Students

したがって、結果セットは次のようになります。

ResultSet rs = {"John" "Jane" "Dana" "John"}

次に、すべての一意の値を返したいので、populateSet()a に を入力するために呼び出されるメソッドを作成HashSet setOfNamesrsます。

を実行するpopulateSet(ResultSet rs)と、一意の名前のみが表示されます。

"John" "Jane" "Dana"

検証テストは次のとおりです。

public void testValidation() {
    // Skipping the test data / db connection / query part
    ResultSet rs = ResultSet received back from DB
    Set<String> expected = {"John", "Jane", "Dana"};
    Set<String> actual = WhateverClass.populateSet(rs);
    assertEquals(expected, actual);
}

私が書くことができる可能性のある単体テストにはどのようなものがありますか?

null、空、および否定的なテストを作成する必要があることはわかっています。いくつかのコーナーケースは何ですか?

4

1 に答える 1

2

考えられるまれなケース:

  • 非常に大きなテーブル (数百万行)
  • トランザクション性 - たとえば、テーブル スキャンを開始した後に名前が挿入/削除/更新された場合はどうなりますか?
  • データの順序
  • 名前の大文字と小文字の区別/区別なし
  • 名前の非 ASCII 文字
于 2013-10-04T04:27:14.837 に答える