端到端测试
端到端测试是指对应用程序的整个系统进行测试,从用户的角度出发,模拟用户使用系统的过程。Spring Boot提供了多种端到端测试工具,使得开发者可以轻松地编写端到端测试。
1. 添加测试依赖
首先需要在项目的pom.xml文件中添加测试依赖:
代码语言:javascript复制<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.codeborne</groupId>
<artifactId>webdrivermanager</artifactId>
<version>3.7.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.141.59</version>
<scope>test</scope>
</dependency>
这些依赖包含了Spring Boot Test、Spring MVC Test、Webdriver Manager和Selenium。
2. 编写测试类
创建一个名为MyTest
的测试类:
import io.github.bonigarcia.wdm.WebDriverManager;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.springframework.boot.test.context.SpringBootTest;
import static org.junit.jupiter.api.Assertions.assertEquals;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
public class MyTest {
private static WebDriver webDriver;
@BeforeAll
static void setup() {
WebDriverManager.chromedriver().setup();
webDriver = new ChromeDriver();
}
@AfterAll
static void teardown() {
webDriver.quit();
}
@Test
void test() {
webDriver.get("http://localhost:8080");
webDriver.findElement(By.id("inputName")).sendKeys("John");
webDriver.findElement(By.id("submitButton")).click();
String message = webDriver.findElement(By.id("message")).getText();
assertEquals("Hello, John!", message);
}
}
这个测试类使用了Spring的@SpringBootTest
注解来启动Spring应用程序上下文。在setup
方法中,我们使用了Webdriver Manager来自动下载并设置ChromeDriver。在test
方法中,我们使用了ChromeDriver来打开Web应用程序,并在输入框中输入名字并点击提交按钮。最后,我们使用assertEquals
方法来断言返回的消息是否正确。
注意,在这个测试类中,我们需要在@SpringBootTest
注解中设置webEnvironment
属性为DEFINED_PORT
,以便在测试期间使用与应用程序相同的端口启动应用程序。