junit并从命令行运行selenium测试

时间:2015-04-18 17:14:06

标签: java selenium junit

有点噩梦,使用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

任何提示?

1 个答案:

答案 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()
  • JUnit4样式的测试(即使用@Test@Before等注释的测试)不应直接或间接地扩展junit.framework.TestCase。实际上,您的JUnit4样式测试不应引用junit.framework包中的任何类。