用户工具


编写测试用例的难点在于:如何准备参数数据

个人总结如下经验

  1. 一个函数尽可能的依赖基本数据类型而不是自定义类型,便于构建测试参数
  2. 如果参数是基本类型数据
    • 数据量小:直接模拟
    • 数据量大(比如数据库中数据):第一次读出来之后,序列化后保存为一个文件,建议用kryo进行序列化。需要使用时,对文件进行反序列化即可
  3. 如果参数是自定义类型
    1. 测试方法依赖自定义类型的属性
      1. 属性是基本数据类型(服从第2条)被依赖的属性一定要有set方法,不然不好构建
      2. 属性是自定义类型如果该类型对象能直接模则直接模拟,否则kryo进行序列化,反序列化
    2. 测试方法依赖自定义类型的方法
      1. 如果自定义类型能直接模拟,则直接模拟(new 一个对象)
      2. 如果自定义类型很难构建(如果构造函数非常复杂的话),可以使用jmock技术模拟一个对象
      3. 如果jmock也很难模拟的话,那最好这个自定义类型有个接口,临时创建一个类,实现这个接口,模拟一个跟这个自定义类型相似的对象

  • 如果方法没有副作用,返回执行结果
    • 根据返回值判定测试方法是否正常工作
  • 对于有副作用的方法,返函数执行状态(会改变非当前函数范围内的变量的值)
    • 根据副作用是否生效,和返回值判定测试方法是否正常工作