尝试运行连接到SQL数据库的简单Selenium测试时遇到问题。该测试将无法运行,它似乎无法编译,但是没有提供有关错误发生位置的任何信息。
我已经研究了这个http://automationtricks.blogspot.com/2010/05/how-to-pass-parameters-to-junit-or.html和Google小组,但无法弄清楚。
这是代码,希望有人可以指出正确的方向。谢谢!
package com.XXX.Tests;
import java.sql.*;
import java.sql.Connection;
import org.junit.Test;
import org.testng.annotations.BeforeClass;
import com.thoughtworks.selenium.*;
import org.openqa.selenium.server.SeleniumServer;
public class SeleniumandDB extends SeleneseTestBase {
@BeforeClass
public void setUp()throws Exception {
SeleniumServer seleniumServer=null;
try {
seleniumServer = new SeleniumServer();
seleniumServer.start();
} catch (Exception e) {
e.printStackTrace();
}
selenium = new DefaultSelenium("localhost", 4444, "*firefox", "http://wwww-test/");
selenium.start();
}
@Test public void testUntitled2() throws Exception {
String userID = null;
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
selenium.open("/");
selenium.windowFocus();
selenium.windowMaximize();
Class.forName("net.sourceforge.jtds.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:jtds:sqlserver://XXXX:1433/XXX","XX","XXXX");
stmt = conn.createStatement();
rs = stmt.executeQuery("SELECT TOP 1 UserID FROM webuser ORDER BY 1 DESC");
while(rs.next()){
userID = rs.getString("UserID");
conn.close();
System.out.println(userID);
selenium.type("txtUserID", userID);
selenium.type("txtPassword", "password");
selenium.click("btnLogin2");
selenium.waitForPageToLoad("30000");
selenium.stop();
}
}
}
最佳答案
试试这个。它应该起作用。
1)删除-扩展SeleneseTestBase,然后与junit一起运行
(因为来自JUNIT的@Test Annotation将扮演角色)
要么
2)只需删除@Test批注并覆盖setUp()和其他一些方法,如start()
使用selenesetestbase类的方法并使用JUNIT容器运行该类。
3)或仅使用TESTNG。 (不要扩展类并使用注释)
从您的解释和代码中我可以看到的问题是,
您正在导入2个容器(TestNG和Junit4),并且正在扩展Test类
带有Junit3容器。
并使用Junit4容器定义测试用例(通过使用@Test)
但是使用junit3容器运行测试类。所以junit3需要那些默认方法来了解哪个
是setUp,哪个方法是测试用例。但是您不提供此类信息
Junit3容器只是在没有任何测试用例的情况下运行您的类。
我希望这可以解决问题。但是当我使用TestNG并且不扩展任何类时,我可能是错的。