单元测试使用疑问

疑问:如果示例代码需要代码覆盖率达到 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;
    }
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

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

4年前 评论
oliver-l (作者) 4年前
xuding 4年前
snakelis (楼主) 4年前
snakelis (楼主) 4年前
讨论数量: 7

你想问啥? :joy:

4年前 评论
snakelis (楼主) 4年前

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

4年前 评论
snakelis (楼主) 4年前
lai (作者) 4年前

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

4年前 评论
oliver-l (作者) 4年前
xuding 4年前
snakelis (楼主) 4年前
snakelis (楼主) 4年前

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

4年前 评论
snakelis (楼主) 4年前

我写的代码不要测试

4年前 评论
snakelis (楼主) 4年前

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

4年前 评论

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

4年前 评论