Java 使用ant脚本执行Selenium数据库测试时失败

Java 使用ant脚本执行Selenium数据库测试时失败,java,sql,selenium,ant,webdriver,Java,Sql,Selenium,Ant,Webdriver,我有一个SeleniumWebDriver测试,它连接到数据库,执行查询并将值存储在字符串中。然后我就用它做一些事情 当我在Twist(基于Eclipse)中执行测试时,这个测试工作得很好 但当我使用ant脚本执行测试时,它无法声明null指针异常,也看到了这一点。。[twist.runner]java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQ l服务器驱动程序 代码片段: public void verifyUser

我有一个SeleniumWebDriver测试,它连接到数据库,执行查询并将值存储在字符串中。然后我就用它做一些事情

当我在Twist(基于Eclipse)中执行测试时,这个测试工作得很好

但当我使用ant脚本执行测试时,它无法声明null指针异常,也看到了这一点。。[twist.runner]java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQ l服务器驱动程序

代码片段:

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; 
}
Ant返回的错误:

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; 
}
java.lang.NullPointerException 在test.products.NewUserSubscribes.verifyUserCreatedInTslUserProfileAndSubscriptionTables中(NewUserSubscribes.java:68) 位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) 在java.util.concurrent.FutureTask.run(FutureTask.java:262)处
在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

。通过将jdbc驱动程序添加到类路径来修复它

哪一行是第68行是完整堆栈跟踪?对不起,第68行是:String userDetails=Products.verifyUserDetailsInSubscriptionTable();从堆栈跟踪中获得更多信息。。。[twist.runner]java.lang.ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQ LServerDriver错误说明一切:“ClassNotFoundException:com.microsoft.sqlserver.jdbc.SQ LServerDriver”您缺少依赖项。