写点什么

事业 - 最佳实践 - 编码 - 单元测试 - 测试方法结构

作者:南山
  • 2024-03-30
    江苏
  • 本文字数:798 字

    阅读完需:约 3 分钟

原则

  • 简单

  • 清晰

  • 测试范围小

命名

  • should 测试效果 _when 测试条件

结构

准备:

  • 构造具体测试方法依赖的测试数据,大多情况下是方法入参

  • 构造测试类依赖,预设执行是期望返回的测试数据

执行:

  • 一次只测试一个方法(函数)

  • 一次只测试一个方法(函数)

  • 一次只测试一个方法(函数)

断言:

  • 负责验证执行的结果是否正确

  • 可以是方法是否执行

  • 可以是是否抛出异常

  • 可以是是否返回预期值

清理(可选):

  • 如数据库是否要回滚

  • 过程数据是否会影响其他测试(尽量优化设计)

基本要求

  • Automatic,自动化

  • Thorough,全面

  • Repeatable,可重复

  • Independent,独立

  • Professional,专业


示例代码

@Testvoid shouldCorrectlyAggregate_whenMultipleFetchParamsResults() {    // 准备数据    List<FetchParam> fetchParams = Arrays.asList(new FetchParam(), new FetchParam());    Set<OriginalFieldFetcher> fetchers = new HashSet<>(singletonList(mockFetcher1));
Map<OriginalFieldDef, Object> dataMap1 = new HashMap<>(); dataMap1.put(OriginalFieldDef.orderId, "value1");
Map<OriginalFieldDef, Object> dataMap2 = new HashMap<>(); dataMap2.put(OriginalFieldDef.orderStatus, "value2");
when(mockFetcher1.batchQuery(fetchParams)) .thenReturn(Arrays.asList( new FetchTargetOriginalData(1L, dataMap1), new FetchTargetOriginalData(2L, dataMap2) ));
// 执行 Map<Long, Map<OriginalFieldDef, Object>> result = executor.doFetchersBatchQuery(fetchParams, fetchers);
// 验证 assertEquals(2, result.size(), "应处理并返回两个不同主体ID的结果"); assertEquals(1, result.get(1L).size(), "第一个主体ID下应有一个字段数据"); assertEquals(1, result.get(2L).size(), "第二个主体ID下应有一个字段数据");}
复制代码


用户头像

南山

关注

采菊东篱下,悠然见南山~ 2018-05-04 加入

黄沙百战穿金甲,不破楼兰终不悔!

评论

发布
暂无评论
事业-最佳实践-编码-单元测试-测试方法结构_最佳实践_南山_InfoQ写作社区