之前和同事聊天聊到做自动化,顺口说了句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自动化不同环境的环境配置

更多推荐