- 状态验证
- 使用观察点来获取每种状态,使用断言将它于预期的结果进行比较,就可以验证SUT的状态。
- 行为验证
- 使用一些手段来获取SUT和它所依赖的组件之间的行为调用,就可以查检SUT的行为过程。
- 自定义断言
1: void assertObj(Obj a, Obj b)2: {
3: ASSERT_EQ(a.fun(), b.fun());
4: ASSERT_EQ(a.value, b.value);
5: ...
6: }
通过这种自定义的断言可以减少很多代码的Copy/Past。
- 参数化测试用例和数据驱动,也可以减少代码量。
- 在验证SUT时应该避免条件测试逻辑
- 减少使用if,如下:
1: List lineItems = obj.GetLineItems();
2: if(lineItems.size() == 0)
3: {
4: if(....)
5: {
6: ...
7: }
8: }
为什么不写成这样呢?
1: List lineItems = obj.GetLineItems();
2: ASSERT_EQ(lineItems.size, n); // n表示你想预期的那个值
3: ...