自动化(一)之Java自动化完整搭建
之前和同事聊天聊到做自动化,顺口说了句python暴露了身份......
嗯~~......所以苦心专研Java自动化
说在前面 Java自动化核心是用代码/框架替代重复人工,覆盖单元、接口、UI、APP、性能及CI/CD,主流生态成熟、并且落地快。
一、自动化分类与主流框架有以下几种:
1️⃣ 单元测试(代码层)
- JUnit 5:Java标配,注解/断言/参数化,SpringBoot原生集成。
- TestNG:分组/依赖/并行,数据驱动,适合复杂集成测试。
- Mockito:Mock外部依赖,隔离单元逻辑。
2️⃣ 接口自动化(API)
- RestAssured:简洁语法发HTTP请求,验证响应,支持JSON/XML。
- OkHttp/Apache HttpClient:底层HTTP客户端,灵活定制请求。
3️⃣ Web UI自动化
- Selenium WebDriver:主流,Chrome/Firefox/Edge,元素定位+操作+断言,POM模式。
- Playwright:微软出品,更快更稳,自动等待,支持录屏/截图。
4️⃣ APP自动化
- Appium:跨Android/iOS,支持原生/混合APP,无需改源码。
5️⃣ 行为驱动(BDD)
- Cucumber:Gherkin自然语言(Given-When-Then),跨角色协作。
6️⃣ 构建与CI/CD
- Maven/Gradle:依赖管理+构建+自动执行测试。
- Jenkins/GitLab CI:代码提交→构建→测试→报告→部署,全流程自动化。
二、快速上手示例(JUnit 5 + RestAssured)
废话少说——直接展示
1. 单元测试(JUnit 5)
java
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
public class CalculatorTest {
@Test
void testAdd() {
Calculator calc = new Calculator();
assertEquals(5, calc.add(2, 3));
}
}
2. 接口测试(RestAssured)
java
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
public class ApiTest {
@Test
void testGetUser() {
given()
.baseUri("https://api.example.com")
.when()
.get("/users/1")
.then()
.statusCode(200)
.body("name", equalTo("张三"));
}
}
3. Web UI测试(Selenium)
java
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class LoginTest {
public static void main(String[] args) {
WebDriver driver = new ChromeDriver();
driver.get("https://example.com/login");
driver.findElement(By.id("username")).sendKeys("test");
driver.findElement(By.id("password")).sendKeys("123456");
driver.findElement(By.id("submit")).click();
driver.quit();
}
}
三、落地的流程如下(共5步)
1、分层策略:单元(JUnit)→接口(RestAssured)→UI(Selenium)→APP(Appium)。
2、框架选型:中小项目选JUnit 5 + RestAssured + Selenium;复杂项目加TestNG + Cucumber。
3、设计模式:UI用POM封装页面元素/操作;接口用数据驱动(TestNG DataProvider/Excel)。
4、报告集成:Allure/Extent Reports生成可视化报告。
5、CI/CD接入:Jenkins配置Maven/Gradle任务,提交自动触发测试。
四、关键注意点如下:(小编暂时想出这几个)
1、用例分层:优先覆盖核心业务+高频回归,UI用例不宜过多(维护成本高)。
2、稳定性:UI测试加智能等待(Selenium WebDriverWait);接口用环境隔离+测试数据独立。
3、维护成本:元素定位用ID/name/XPath相对路径;接口用契约测试(Pact)防接口变更。
五、小编的学习来时的路径(从易到难)
1. 基础:Java基础+Maven/Gradle
2. 单元测试:JUnit 5 + Mockito
3. 接口测试:RestAssured + 数据驱动
4. Web UI:Selenium + POM
5. 高级:TestNG + Cucumber + Jenkins
关注小编 避免走失 ——下篇文章整理一下Java自动化不同环境的环境配置
更多推荐
所有评论(0)