0


山东大学2024软件测试技术实验二单元测试

实验 2** **单元测试实验(共 2 学时)(作业提交时间2024.4.21日前)(自己琢磨的,可能有些地方不太全面,或者有问题,期待各位批评指正)

这里我的环境是intelliJ IDEA 2023.3.6

使用 JUnit 工具,针对 Spring Unit Testing 控制器代码中 ItemController 类进行测试,编 写对应的测试类以完成单元测试,最终提交测试代码。(下面是itemController.java文件内容)

package com.sprint.unittesting.unittesting.controller;

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import
com.sprint.unittesting.unittesting.business.ItemBusinessService;
import com.sprint.unittesting.unittesting.model.Item;

@RestController
public class ItemController {

@Autowired
private ItemBusinessService businessService;

@GetMapping("/dummy-item")
public Item dummyItem() {
return new Item(1, "Ball", 10, 100);
}

@GetMapping("/item-from-business-service")
public Item itemFromBusinessService() {
Item item = businessService.retreiveHardcodedItem();

return item;
}

@GetMapping("/all-items-from-database")
public List<Item> retrieveAllItems() {
return businessService.retrieveAllItems();
}

}

实验步骤:

  1. 创建itemControllerTest类

点击itemController类,Ctrl+shift+T创建。或者右键Goto--test创建。

之后会出现如下界面,选择要测试的方法,和destination package(即你要把测试代码文件放在哪个目录下面),点击OK,就创建好了测试类。

测试类里面只有基本的框架方法,内容需要自己填写。

2.填写测试代码

首先声明 ItemController 和 ItemBusinessService 的 Mock 对象以及 @BeforeEach 方法。

  • @InjectMocks 注解表示要将模拟对象注入到被测试的 ItemController 类中。
  • @Mock 注解用于创建 ItemBusinessService 的模拟对象。
  • @BeforeEach 注解用于在每个测试方法执行之前初始化模拟对象。

其次****编写测试方法:

正常值

  • dummyItem() 测试方法用于测试 dummyItem() 方法的行为。

调用 itemController.dummyItem() 方法获取一个虚拟商品对象,并验证其属性是否与预期一致。

预期行为:商品名称应为 "Ball"。商品宽度应为 10。商品高度应为 100。

通过 assertEquals() 方法对实际返回的商品对象属性与预期值进行断言,以确保方法的行为符合预期。

  • itemFromBusinessService() 测试方法用于测试 itemFromBusinessService() 方法的行为。

使用 Mockito 模拟 itemBusinessService.retreiveHardcodedItem() 方法的行为,以返回一个模拟的商品对象。然后调用 itemController.itemFromBusinessService() 方法,验证其返回的商品对象是否与模拟对象相等。

  • retrieveAllItems() 测试方法用于测试 retrieveAllItems() 方法的行为。

使用 Mockito 模拟 itemBusinessService.retrieveAllItems() 方法的行为,以返回一组模拟的商品对象列表。然后调用 itemController.retrieveAllItems() 方法,验证其返回的商品对象列表是否与模拟列表相等。

最值/边界值/空值:

  • dummyItemBoundaryValues()测试边界值。

测试最值时,如果是手工创建,他会自动提示你超出范围,那么就测试边界值吧。

  • dummyItemNULL()检查空字符串

当传递空字符串作为参数时,Item对象是否能够正确地处理并将属性设置为空字符串。

  • retrieveAllItemsNUll() 检查空列表

3.测试

进行配置

选择自己版本的对应文件配置即可

然后点击运行即可,下面是运行结果。通过!


本文转载自: https://blog.csdn.net/fswsky/article/details/137748422
版权归原作者 听雪-晚梦 所有, 如有侵权,请联系我们删除。

“山东大学2024软件测试技术实验二单元测试”的评论:

还没有评论