2

データベースからデータを読み取って変換するクラスの Testclass を作成したいと考えています。テストクラスは、この変換関数をテストする必要があります。しかし、この関数をテストするには、ResultSet オブジェクトが必要です。

データベースに接続せずに ResultSet オブジェクトにデータを入力するにはどうすればよいですか?

4

2 に答える 2

1

データベースからの読み取りは、単体テストではなく、統合テストに関連しています。したがって、統合テストでは実際のバックエンド (データベースなど) が考慮されるため、オリジナルを使用できますし、使用する必要があります。ResultSet

ロジックの単体テストを試みる場合は、テスト対象のサンプル データを返すために、特定の DAO 呼び出し部分をスタブまたはモックします。ResultSetただし、この場合は データベースをまったく呼び出さないでください (を扱わないでください)。

于 2012-11-29T14:10:46.333 に答える
1

以下のコードのようなもの: Db アクセス用のインターフェイスが必要です。コードとテスト コードで使用するこのインターフェイス: myDbConnectionMock は、Db 接続と同じインターフェイスを持つ Mock オブジェクトですが、作成するオブジェクトであり、必要なものを入力できます。

私はMockitoまたはさらに悪いEasyMockを使用しません。

texteditor に入力したコード (うまくいけばコンパイル可能ですが、そうでないかもしれません):

public void testDBConnection() {

  IDataBaseConnection conn = new MyDbConnectionMock();

  conn.connect();
  Set<Result> result = conn.readData();

  assertTrue(result.size > 0);
}

どこ

 // Interface for DB connection, adapt to real DB connection
    public interface IDataBaseConnection {
       boolean connect();
       Set<Result> readData();
    }

// DB connection Mock
class MyDbConnectionMock implements IDbConnection {
  public void connect() {
     return true;
  }

  public Set<ResultSet> readData() {
     Set<Result> resultSet = new HashSet<Result>();
     Result res1 = new Result(20);
     resultSet.add(res1);

     Result res1 = new Result(30);
     resultSet.add(res2);
     return resultSet;
   }
}
于 2012-11-29T14:11:44.300 に答える