×
全部 > AI技术 > AI编程 > AI代码生成 > 生成Java订单服务的测试用例

生成Java订单服务的测试用例

通义千问2.5-Coder-32B(阿里云百炼)

【识别出的语言】 Java 【生成的测试代码】 ```java import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; public class OrderServiceTest { @Test public void testCalculateFinalPrice_RegularCustomer_NoCoupon_US() { // Arrange OrderService.Order order = new OrderService.Order(2, 50.0, false, "", "US"); OrderService orderService = new OrderService(); // Act double finalPrice = orderService.calculateFinalPrice(order); // Assert assertEquals(107.0, finalPrice, 0.001); } @Test public void testCalculateFinalPrice_VipCustomer_Save10Coupon_EU() { // Arrange OrderService.Order order = new OrderService.Order(1, 100.0, true, "SAVE10", "EU"); OrderService orderService = new OrderService(); // Act double finalPrice = orderService.calculateFinalPrice(order); // Assert assertEquals(81.0, finalPrice, 0.001); } @Test public void testCalculateFinalPrice_NegativeBasePrice_ShouldReturnZero() { // Arrange OrderService.Order order = new OrderService.Order(-1, 50.0, false, "", "US"); OrderService orderService = new OrderService(); // Act double finalPrice = orderService.calculateFinalPrice(order); // Assert assertEquals(0.0, finalPrice, 0.001); } @Test public void testCalculateFinalPrice_InvalidRegion_DefaultTaxRate() { // Arrange OrderService.Order order = new OrderService.Order(1, 100.0, false, "", "XYZ"); OrderService orderService = new OrderService(); // Act double finalPrice = orderService.calculateFinalPrice(order); // Assert assertEquals(110.0, finalPrice, 0.001); } } ``` ### 说明 - **testCalculateFinalPrice_RegularCustomer_NoCoupon_US**: 测试一个普通客户没有使用优惠券在美国购买的情况。 - **testCalculateFinalPrice_VipCustomer_Save10Coupon_EU**: 测试一个VIP客户使用了"SAVE10"优惠券在欧盟购买的情况。 - **testCalculateFinalPrice_NegativeBasePrice_ShouldReturnZero**: 测试当计算出的基础价格为负数时,最终价格应返回零。 - **testCalculateFinalPrice_InvalidRegion_DefaultTaxRate**: 测试当地区无效时,使用默认税率。 这些测试用例涵盖了正常情况、VIP折扣、优惠券折扣、税金计算以及异常情况(如无效地区和负价格)。

DeepSeek V3(Deepseek)

【识别出的语言】Java 【生成的测试代码】 ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class OrderServiceTest { @Test void calculateFinalPrice_shouldApplyVipDiscount() { OrderService.Order order = new OrderService.Order( 2, 100.0, true, // VIP customer null, "us" ); OrderService service = new OrderService(); double result = service.calculateFinalPrice(order); // 2*100=200, 10% discount=180, 7% tax=192.6 assertEquals(192.6, result, 0.001); } @Test void calculateFinalPrice_shouldApplySave10Coupon() { OrderService.Order order = new OrderService.Order( 1, 50.0, false, "SAVE10", // $10 off coupon "eu" ); OrderService service = new OrderService(); double result = service.calculateFinalPrice(order); // 1*50=50, -10=40, 20% tax=48 assertEquals(48.0, result, 0.001); } @Test void calculateFinalPrice_shouldApplyHalfOffCoupon() { OrderService.Order order = new OrderService.Order( 3, 30.0, false, "HALFOFF", // 50% off "cn" ); OrderService service = new OrderService(); double result = service.calculateFinalPrice(order); // 3*30=90, 50%=45, 13% tax=50.85 assertEquals(50.85, result, 0.001); } @Test void calculateFinalPrice_shouldApplyDefaultTaxForUnknownRegion() { OrderService.Order order = new OrderService.Order( 1, 100.0, false, null, "jp" // unknown region ); OrderService service = new OrderService(); double result = service.calculateFinalPrice(order); // 1*100=100, default 10% tax=110 assertEquals(110.0, result, 0.001); } @Test void calculateFinalPrice_shouldNotReturnNegativePrice() { OrderService.Order order = new OrderService.Order( 1, 5.0, // very low price true, // VIP discount "SAVE10", // $10 off "us" ); OrderService service = new OrderService(); double result = service.calculateFinalPrice(order); // 1*5=5, 10% discount=4.5, -10=-5.5 -> should clamp to 0 assertEquals(0.0, result, 0.001); } @Test void calculateFinalPrice_shouldHandleNullCouponCode() { OrderService.Order order = new OrderService.Order( 2, 25.0, false, null, // no coupon "eu" ); OrderService service = new OrderService(); double result = service.calculateFinalPrice(order); // 2*25=50, 20% tax=60 assertEquals(60.0, result, 0.001); } } ``` 测试代码说明: 1. 使用了JUnit5测试框架 2. 包含了6个测试用例,覆盖了: - VIP折扣场景 - 不同类型的优惠券场景 - 不同地区的税率计算 - 未知地区的默认税率 - 价格不会为负数的边界情况 - 优惠券为null的情况 3. 每个测试方法名清晰描述了测试场景 4. 使用了assertEquals进行浮点数比较,并指定了delta参数 5. 测试了各种组合情况,确保业务逻辑正确性

gpt-4o(OpenAI)

# 识别出的语言 Java # 生成的测试代码 下面是使用JUnit5测试框架为`OrderService`类中的`calculateFinalPrice`方法生成的测试代码。我们创建了一些测试场景以验证不同的折扣和税收情况。 ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class OrderServiceTest { OrderService orderService = new OrderService(); @Test void testCalculateFinalPrice_noDiscountOrTax() { OrderService.Order order = new OrderService.Order(2, 50.0, false, "", "unknown"); double expectedPrice = 2 * 50.0 * 1.1; // 100 base price + 10% unknown region tax assertEquals(expectedPrice, orderService.calculateFinalPrice(order), 0.001); } @Test void testCalculateFinalPrice_vipDiscount() { OrderService.Order order = new OrderService.Order(1, 100.0, true, "", "us"); double expectedPrice = 1 * 100.0 * 0.9 * 1.07; // 10% VIP discount + 7% US tax assertEquals(expectedPrice, orderService.calculateFinalPrice(order), 0.001); } @Test void testCalculateFinalPrice_couponSave10() { OrderService.Order order = new OrderService.Order(5, 30.0, false, "SAVE10", "eu"); double expectedPrice = (5 * 30.0 - 10) * 1.2; // $150 - $10 coupon + 20% EU tax assertEquals(expectedPrice, orderService.calculateFinalPrice(order), 0.001); } @Test void testCalculateFinalPrice_couponHalfOff() { OrderService.Order order = new OrderService.Order(2, 50.0, false, "HALFOFF", "cn"); double expectedPrice = (2 * 50.0 * 0.5) * 1.13; // 50% off + 13% CN tax assertEquals(expectedPrice, orderService.calculateFinalPrice(order), 0.001); } @Test void testCalculateFinalPrice_negativePrice() { OrderService.Order order = new OrderService.Order(1, -100.0, false, "HALFOFF", "us"); double expectedPrice = 0.0; // Price should not be negative assertEquals(expectedPrice, orderService.calculateFinalPrice(order), 0.001); } } ``` ## 解释 - **正向测试用例**: - `testCalculateFinalPrice_noDiscountOrTax`: 测试没有折扣且地区税默认为10%的情况。 - `testCalculateFinalPrice_vipDiscount`: 测试VIP客户优惠情况。 - `testCalculateFinalPrice_couponSave10`: 测试使用“SAVE10”优惠券情况。 - `testCalculateFinalPrice_couponHalfOff`: 测试使用“HALFOFF”优惠券情况。 - **异常测试用例**: - `testCalculateFinalPrice_negativePrice`: 验证当单价为负值时,最终价格不应该是负数。 这些测试用例验证了`calculateFinalPrice`方法是否正确地应用了各种折扣和税率,并能正确处理极端情况。

claude3.5 sonnet 20241022(Anthropic)

【识别出的语言】 Java 【生成的测试代码】 ```java import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.*; class OrderServiceTest { @Test void testCalculateFinalPrice_VipCustomerWithCoupon() { OrderService.Order order = new OrderService.Order(5, 20.0, true, "SAVE10", "us"); double finalPrice = new OrderService().calculateFinalPrice(order); assertEquals(85.0, finalPrice, 0.01); // 100 - 10 (VIP discount) - 10 (SAVE10 coupon) + tax } @Test void testCalculateFinalPrice_RegularCustomerWithCoupon() { OrderService.Order order = new OrderService.Order(5, 20.0, false, "HALFOFF", "us"); double finalPrice = new OrderService().calculateFinalPrice(order); assertEquals(50.0, finalPrice, 0.01); // (100 * 0.5) + tax } @Test void testCalculateFinalPrice_NegativePrice() { OrderService.Order order = new OrderService.Order(1, 5.0, false, "SAVE10", "us"); double finalPrice = new OrderService().calculateFinalPrice(order); assertEquals(0.0, finalPrice, 0.01); // Price should not be negative } @Test void testCalculateFinalPrice_UnknownRegion() { OrderService.Order order = new OrderService.Order(10, 10.0, false, null, "unknown"); double finalPrice = new OrderService().calculateFinalPrice(order); assertEquals(110.0, finalPrice, 0.01); // 100 + tax for unknown region } @Test void testCalculateFinalPrice_VipCustomerNoCoupon() { OrderService.Order order = new OrderService.Order(3, 30.0, true, null, "us"); double finalPrice = new OrderService().calculateFinalPrice(order); assertEquals(96.3, finalPrice, 0.01); // 90 - tax } } ```

模型名称 模型提供商 响应总时长(s) 生成 token 数 首 token 延迟(s) 生成速率(tokens/s)
40.22
597
0.53
延迟最小
14.84
40.77
862
内容最多
2.72
21.14
14.82
响应最快
734
2.42
49.52
速度最快
18.23
0
7.71
0
AI文本生成
38家服务商提供服务
AI深度推理
11家服务商提供服务
AI代码生成
11家服务商提供服务
AI数学模型
10家服务商提供服务