如何配置 Spring STS 来运行 Selenium 测试类?

问题描述 投票:0回答:2

我正在使用 Spring STS (3.7) 开发 MVC 应用程序。我正在尝试使用我在书中读到的示例来运行简单的 Selenium 测试。当我运行 JUnit 测试时,我收到“ClassNotFoundException”。奇怪的是,找不到的类是测试类本身:“UIHomeTest”。我已经验证类路径上有 JUnit、Hamcrest 和 Selenium。我尝试将 JUnit 库添加到运行配置中。这是测试类的代码:

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverBackedSelenium;
import org.openqa.selenium.firefox.FirefoxDriver;

import static org.junit.Assert.assertEquals;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import com.thoughtworks.selenium.SeleneseTestBase;

公共类 UIHomeTest {

private WebDriver browser;


private static final String HOME_URL = "http://localhost:8080/";

@Before
public void setUp() throws Exception {

    WebDriver driver = new FirefoxDriver();

}


@Test
public void testHomePage()
{

    browser.get(HOME_URL);

    assertEquals("Home", browser.findElement(By.id("title")).getAttribute("value"));
}

@After
public void tearDown() throws Exception
{
    browser.close();
}

}

这是错误:

Class not found org.test.ui.UIHomeTest
java.lang.ClassNotFoundException: org.test.ui.UIHomeTest
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:685)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:421)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:444)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

我之前已经能够在 Spring STS 中运行非 Selenium JUnit 测试类。谁能帮助我正确配置 Spring STS 来运行 Selenium 测试类?谢谢。

java spring-mvc selenium junit
2个回答
0
投票

在观察导入和 selenium 代码时,我发现很少有不需要的导入,例如 import org.openqa.selenium.WebDriverBackedSelenium;导入 com.thoughtworks.selenium.SeleneseTestBase;并且也未使用或启动驱动程序对象。下面是完整的代码,对我来说效果很好。

com.tesngtraining;是我的包裹。如果您下载了 java 特定的 selenium jar,那么请包含构建路径中不同文件夹中的所有 jar,或者下载独立的 selenium jar 文件并将其放在构建路径中。

 package com.tesngtraining;

import static org.junit.Assert.*;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

public class TestingJunit {

private WebDriver browser;


private static final String HOME_URL = "http://localhost:8080/";

@Before
public void setUp() throws Exception {

    browser = new FirefoxDriver();

}


@Test
public void testHomePage()
{

    browser.get(HOME_URL);

    assertEquals("Home", browser.findElement(By.id("title")).getAttribute("value"));
}

@After
public void tearDown() throws Exception
{
    browser.close();
}

}

谢谢你, 穆拉里


0
投票

如果它是一个 Spring Boot 应用程序,你需要在你的类上方添加注释 @springbootTest,并且 webdriver 需要通过 @autowired 注入

© www.soinside.com 2019 - 2024. All rights reserved.