有点噩梦,使用Scirocco记录一个宏只是为了测试Selenium,现在不能为我的生活弄清楚如何运行它。
为了设法编译代码,我使用 - classpath .:/usr/share/junit4/lib/junit.jar:/usr/local/share/selenium-2.45.0/selenium-java-2.45.0.jar
这似乎加载了所需的所有内容并进行编译。 它自己的测试脚本:
import java.util.concurrent.TimeUnit;
import junit.framework.TestCase;
import org.junit.*;
import org.openqa.selenium.*;
import org.openqa.selenium.chrome.ChromeDriver;
public class Test1 extends TestCase {
private WebDriver driver;
private String baseUrl;
@Before
public void setUp() throws Exception {
// Download chromedriver (http://code.google.com/p/chromedriver/downloads/list)
System.setProperty("webdriver.chrome.driver", "/usr/sbin/chromedriver");
driver = new ChromeDriver();
baseUrl = "https://www.google.co.uk/?gfe_rd=cr&ei=E4syVcSOK-jN7AbK0YH4Dg&gws_rd=ssl#q=Bengt+Bjorkberg";
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
}
@Test
public void test() throws Exception {
driver.get(baseUrl + "/");
driver.findElement(By.name("btnG")).click();
driver.findElement(By.linkText("Ben Bjorkberg | LinkedIn")).click();
driver.findElement(By.linkText("View Ben's Full Profile")).click();
driver.findElement(By.linkText("View Ben's Full Profile")).click();
}
@After
public void tearDown() throws Exception {
driver.quit();
}
}
很好地编译,理论上应该可以工作。
然后我创建了以下测试运行器:
package de.vogella.junit.first;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class MyTestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(Test1.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
}
但如果我跑
javac -classpath .:/usr/share/junit4/lib/junit.jar:/usr/local/share/selenium-2.45.0/selenium-java-2.45.0.jar MyTestRunner.java
此时我得到了
MyTestRunner.java:10: error: cannot find symbol
Result result = JUnitCore.runClasses(Test1.class);
^
symbol: class Test1
location: class MyTestRunner
1 error
任何提示?
答案 0 :(得分:2)
我建议使用standard directory layout在Eclipse或IntelliJ等IDE中进行开发。 IDE将会遇到很多问题。
我的猜测是Test1
没有包语句,所以它在默认包中。由于MyTestRunner
不在默认包中,因此会出现编译错误。这就是IDE会立即告诉你的那种问题。
准备好在命令行上构建之后,我会使用像Maven或Gradle这样的构建工具。
您的代码存在一些小问题:
MyTestRunner
看起来很像JUnitCore
,但它会对要运行的测试进行硬编码。我再次建议使用构建工具。您可以轻松配置Maven或Gradle来运行src/test/java
下的所有测试,如果测试失败,它们将打印出好的堆栈跟踪。它们都使用持续集成工具(JUnit本身使用http://cloudbees.com)。如果你真的想要自己的跑步者,你应该委托给JUnitCore.main()
@Test
和@Before
等注释的测试)不应直接或间接地扩展junit.framework.TestCase
。实际上,您的JUnit4样式测试不应引用junit.framework
包中的任何类。