结果校验主要分为三大类的校验:返回值的校验、存储的校验和日志的校验。
1.返回值校验:
a. 基本类型数据,优先使用Assert类进行校验。testng原生assert支持哪些校验,请参照我之前的BLOG,TestNG Assert 详解。
b. 两个自定义Object比较, 如果Object 对象均实现了hashCode() 及equals 方法,推荐使用Assert.assertEquals() 比较。
两个自定义Object类未实现上述两个方法,建议使用 EqualsBuilder.reflectionEquals 进行比较,可以全属性比较,也可以部分属性 比较。来自apache的工具类。
<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency>
d. List<Object> Set<Object> 如果Object 对象均实现了hashCode() 及equals 方法,推荐使用Assert.assertEquals() 比较。
List<Object> Set<Object> 未实现上述两个方法,可以使用我编写的CollectionHelper方法比较,提供反射全属性比较,反射部分属性比较,自定义比较方法比较三种方法进行比较。
e. List<List<Object>> 如果Object 对象均实现了hashCode() 及equals 方法,推荐使用Assert.assertEqualsNoOrder(left.toArrayList(), right.toArrayList()) 比较。
未实现,则需要自己编写校验逻辑。如果再在上面包装一层LIST,则也需要自己编写实现逻辑。
f. Map<Key, Value> Key Value均实现hashCode() 及equals 方法,使用Assert.assertEquals()比较。未实现,则需要自己编写校验逻辑。
Map<Key, Value> 其中Key实现了hashCode() 及equals方法,可以使用我编写的CollectionHelper方法比较,提供反射全属性比较,反射部分属性比较,自定义比较方法比较三种方法进行比较。
2.存储数据校验,包括DB,HBASE,MILE,TAIR 等。
内存中数据校验:
生成文件的校验:
3.日志校验:
推荐使用LogWatcher工具类进行校验,依赖了这两个JAR包。
<dependency> <groupId>ch.ethz.ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>build210</version> </dependency> <dependency> <groupId>ganymed</groupId> <artifactId>ganymed-ssh2</artifactId> <version>2.5.0</version> </dependency>