You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yilai/OrderProcessingTest.java

56 lines
2.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* 订单处理系统测试类
*/
package com.orderprocessing;
import java.util.ArrayList;
import java.util.List;
public class OrderProcessingTest {
public static void main(String[] args) {
// 创建日志记录器
Logger logger = new ConsoleLogger();
// 创建订单验证器
OrderValidator validator = new OrderValidator();
// 创建订单通知器
OrderNotifier notifier = new OrderNotifier(logger);
// 创建订单处理器
OrderProcessor processor = new OrderProcessor(validator, notifier, logger);
// 创建测试订单项
List<OrderItem> items = new ArrayList<>();
items.add(new OrderItem("P001", "笔记本电脑", 1, 5999.0));
items.add(new OrderItem("P002", "无线鼠标", 1, 99.0));
// 创建订单
Order order = new Order("ORD-2024-001", "张三", items);
System.out.println("=== 测试1: 基本订单处理 ===");
processor.processOrder(order);
System.out.println();
// 测试2应用百分比折扣
System.out.println("=== 测试2: 应用10%折扣 ===");
Order order2 = new Order("ORD-2024-002", "李四", items);
processor.setDiscountStrategy(new PercentageDiscountStrategy(0.1)); // 10%折扣
processor.processOrder(order2);
System.out.println();
// 测试3应用固定金额折扣
System.out.println("=== 测试3: 应用固定金额折扣 ===");
Order order3 = new Order("ORD-2024-003", "王五", items);
processor.setDiscountStrategy(new FixedAmountDiscountStrategy(500, 1000)); // 固定500元折扣最低消费1000元
processor.processOrder(order3);
System.out.println();
// 测试4无效订单
System.out.println("=== 测试4: 无效订单测试 ===");
List<OrderItem> invalidItems = new ArrayList<>();
invalidItems.add(new OrderItem("", "无效商品", 1, 100.0)); // 产品ID为空
Order invalidOrder = new Order("ORD-2024-004", "赵六", invalidItems);
processor.processOrder(invalidOrder);
}
}