集成测试

Java 测试入门

Maria Milusheva

Senior Software Engineer

集成测试的定义

  • 集成:将独立的软件组件或子系统组合为一个协同运行的统一系统。
  • 集成测试:验证应用中多个组件或模块之间的交互是否正确,通常涉及外部依赖。

宜家家具即将组装的图片

Java 测试入门

依赖关系

  • 软件依赖:组件之间的一种关系,其中一方依赖另一方才能工作

1 Chart made using Mermaid: https://mermaid.live
Java 测试入门

集成测试 vs. 单元测试

单元测试:

  • 在隔离环境中测试单个组件
  • 失败可精准定位到特定代码部分
  • 编写与运行更快
  • 使用多种工具避免测试依赖
  • 断言精确结果与输出

集成测试:

  • 测试多个组件及其交互
  • 失败需更深入分析排查
  • 较重,搭建与运行更耗时
  • 测试与真实依赖的真实交互
  • 可能断言一般行为而非精确结果
Java 测试入门

示例:外汇

假设我们正在构建一款外汇应用:

public class ExchangeApp {
    private EuropeanCentralBankServer bank; // Enables ExchangeApp to use the bank server

    public ExchangeApp(EuropeanCentralBankServer bank) {
        this.bank = bank; // Save the object passed through the constructor
    }


public double convertEuroTo(String currency, double amount) { double rate = this.bank.getRateEuroTo(currency); return amount * rate; // Use the return values of the bank method in calculations } }
Java 测试入门

外汇的集成测试

集成测试同时验证 convertEuroTo 方法与 EuropeanCentralBankServer

@Test
void convert_convertsWithoutError() {
    EuropeanCentralBankServer bank = new EuropeanCentralBankServer();
    ExchangeApp exchangeApp = new ExchangeApp(bank); // Pass bank object to constructor

double amount = 1000.0; String currency = "USD"; // convertEuroTo calls getRateEuroTo from the bank object double result = exchangeApp.convertEuroTo(currency, amount); assertTrue(result > 0); // Can't predict exact value, can only sanity test }
Java 测试入门

Passons à la pratique !

Java 测试入门

Preparing Video For Download...