2014-10-08 76 views
-1

我有一個連接到數據庫的selenium webdriver測試,執行查詢並將值存儲在一個字符串中。然後我會做這些事情。使用ant腳本執行Selenium數據庫測試失敗

當我在Twist中執行測試(基於Eclipse)時,此測試正常工作。

但是,當我使用Ant腳本執行測試,它無法說明空指針異常,也看到這個.. [twist.runner]拋出java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQ LServerDriver

代碼段:

public void verifyUserCreatedInTslUserProfileAndSubscriptionTables() throws Exception { 

    String userDetails = Products.verifyUserDetailsInSubscriptionTable(); 

    verifyTrue("User details in subscription table did not match, please check manually", userDetails.contentEquals("1215401")); 
} 


public static String verifyUserDetailsInSubscriptionTable() throws IOException, SQLException { 

    String userSubscriptionDetails = null; 

    DBAccess.getConnection(ConnectionStrings.databaseConnect("authentication"), ConnectionStrings.getLoginDetailsDB("username"), ConnectionStrings.getLoginDetailsDB("password")); 

    Statement stmt = DBAccess.con.createStatement();  
    ResultSet result = stmt.executeQuery(ConnectionStrings.getSqlQuery("verifySubscription")); 

    while (result.next()) { userSubscriptionDetails = result.getString("ServiceID")+result.getString("Status")+result.getString("AutoRenew"); } 

    DBAccess.closeConnection(); 
    return userSubscriptionDetails; 
} 


public class DBAccess { 

public static java.sql.Connection con = null; 

public static java.sql.Connection getConnection(String conurl, String userName, String password) { 

    try { 

     Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance(); 
     con = java.sql.DriverManager.getConnection(conurl,userName,password);   
     if (con != null) System.out.println("Connection Successful!");  
    } 
    catch(Exception e){ 

      e.printStackTrace(); 
      System.out.println("Error Trace in getConnection() : " + e.getMessage()); 
    } 

     return con; 
    } 


public static String databaseConnect(String connection) throws IOException { 

    String conurl = null; 
    String url = "jdbc:sqlserver://"; 

    switch (connection) {      

    case "authentication": 
     if (Configuration.getSqlServerName().contains("stage")) { conurl = url + "tslauthentication.database.ST.tslweb.local"; break; } 
     else if (!Configuration.getSqlServerName().contains("stage")) { conurl = url + Configuration.getSqlServerName(); break; } 
     else break; 

    case "tes_connect": 
     conurl = url 
     +Configuration.getSqlServerName() + ".tslwebdev.local"+":" 
     +1433+";databaseName=" 
     +"tes_connect"+";selectMethod=" 
     +"cursor"+";"; break; 

    } 

    connection = conurl; 
    return connection; 
} 

錯誤由返回螞蟻:在test.products.NewUserSubscribes.verifyUserCreatedInTslUserProfileAndSubscriptionTables

顯示java.lang.NullPointerException (NewUserSubscribes.java:68) 在java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.run(FutureTask.java: 262) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

+0

哪一行是行68 – 2014-10-08 15:10:57

+0

是完整的堆棧跟蹤? – 2014-10-08 15:11:54

+0

對不起,第68行是:\t \t String userDetails = Products.verifyUserDetailsInSubscriptionTable(); – user3554072 2014-10-08 15:22:21

回答

1

真的很無聊的事情。設法通過將jdbc驅動程序添加到類路徑來修復它。