单元测试使用疑问

疑问:如果示例代码需要代码覆盖率达到100%,单元测试是否要针对不同参数的组合进行多次执行?
有看到文档上提到数据提供者,但是实际场景可能校验的地方次数会很多,并且不同的参数组合,请问有什么优雅的解决方案吗?

示例代码

    /**
     * 测试验证参数 * Created by  Snakelis * Date: 2021/2/25 17:15 * @throws
      */
    public function testCheckData()
    {

      $params = [];
      $result = $this->checkData($params);
      $this->assertTrue($result);
    }

    /**
     * 验证参数 * Created by  Snakelis * Date: 2021/2/25 17:14 * @param $params
     * [@return](https://learnku.com/users/31554) bool
     * @throws
      */
    public function checkData($params)
    {

      if (empty($params['a'])) {
          throw new Exception('...');
     }
      if (empty($params['b'])) {
          throw new Exception('...');
     }
      if (empty($params['c'])) {
          throw new Exception('...');
     }  
        return true;
    }
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

我理解的是通过模拟各种输入参数情况,这其中要覆盖到你的代码各种条件判断,并断言你的代码输出是否符合你的预期

1个月前 评论
oliver-l (作者) 1个月前
xuding 1个月前
snakelis (楼主) 1个月前
snakelis (楼主) 1个月前
讨论数量: 7

你想问啥? :joy:

1个月前 评论
snakelis (楼主) 1个月前

我 一般 为了 各种case 覆盖代码 ,如果很复杂 会 另外再写一个 function,如果相差不多 ,就在同一个function 中,每再数据库创建一种 情况数据 再请求一次

1个月前 评论
snakelis (楼主) 1个月前
lai (作者) 1个月前

我理解的是通过模拟各种输入参数情况,这其中要覆盖到你的代码各种条件判断,并断言你的代码输出是否符合你的预期

1个月前 评论
oliver-l (作者) 1个月前
xuding 1个月前
snakelis (楼主) 1个月前
snakelis (楼主) 1个月前

所以编写测试用例时,应尽量全面覆盖所有可能出现的情况

1个月前 评论
snakelis (楼主) 1个月前

我写的代码不要测试

1个月前 评论
snakelis (楼主) 1个月前

有种叫表格测试法,列举多组情况参数去测试

1个月前 评论

业务代码一般不写单元吧...更底层的服务或者方法才需要单元测试

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!