0
public static void sql() {
    String url = "jdbc:msql://carthage.imaginary.com/ora";
    Connection con = null;

    try {
      String driver = "com.imaginary.sql.msql.MsqlDriver";

      Class.forName(driver).newInstance();
    } catch (Exception e) {
      System.out.println("Failed to load mSQL driver.");
      return;
    }
    try {
      con = DriverManager.getConnection(url, "borg", "");
      Statement select = con.createStatement();
      ResultSet result = select
          .executeQuery("SELECT test_id, test_val FROM test");

      System.out.println("Got results:");
      while (result.next()) { // process results one row at a time
        int key = result.getInt(1);
        String val = result.getString(2);

        System.out.println("key = " + key);
        System.out.println("val = " + val);
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (con != null) {
        try {
          con.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    }
  }
}

一連の SQL メソッドについて Junit でいくつかのテストを行う必要がありますが、このコードで何ができるかわかりません。アサートと予期される例外の使用方法は知っていますが、ここでは役に立ちません。

4

3 に答える 3

0

まず、コードを 2 つの部分にリファクタリングします。

1 .create connection

2. Get connection object and do operation.

コードで両方を組み合わせています。

私は以下のようにテストケースを行います

最初に、接続をテストするためのjunitクラスを作成します。

Class GenericDAO
public static Connection getConnection(){

   do your sql steps and return connection object

}

そしてあなたのテストクラスは

public class TestConnection {

   public void testConnection(){
    Connection con = GenericDAO.getConnection();

   assert here for not null
   Assert.assertForNotNull(con );
   }

add test cases for other boundary condition

}

後で個々のテストケースを書くことができます その他のテーブル SQLクエリ

試験台用

public class TestDAO
      //either you pass conection object or inherit from parent class
      public String retrieveResults(){
       do opertaion here

    }
  }

これには別のjunitがあります

class TestDAOTest{

   public void testForResults(){

    String str = testDAO.retreiveResults();

    do assertrtion as per your wise

   assert for null, or specific string, negative test cases etc. Note , each can be a separate test cases, by this we are covering boundary conditions

   }

}

最後に、テストをテスト スイートに結合して、一緒に実行できます。

http://www.tutorialspoint.com/junit/junit_suite_test.htm

于 2013-10-01T05:51:14.133 に答える
0

あなたのメソッドは何も返さないので、あなたのメソッドはただ遊んでいるだけだと思いますか? 通常、DAO のメソッドは値を返し、挿入し、更新し、または削除します。これらはテストできるものです。

于 2013-10-01T05:54:22.567 に答える
0

まず、いくつかのテスト ケースを作成することをお勧めします。次に、必要なメソッドを実装します (このコードをメソッドにリファクタリングします)。

于 2013-10-01T04:58:43.947 に答える