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();
        }
      }
    }
  }
}

我必须用 Junit 为一堆 SQL 方法做一些测试,但我不知道我能用这段代码做什么。我知道如何使用断言和预期异常,但这些在这里都没用。

4

3 回答 3

0

首先,我建议你写一些测试用例。然后您实现所需的方法(将这段代码重构为方法)。

于 2013-10-01T04:58:43.947 回答
0

首先,我会将代码重新分解为两部分。

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 回答