0

我需要测试一些复杂对象的变量,例如。

对象 - 人
           |->名称
           |->地址
           | |->街道
           | |->城市
           | |->邮编
           | |->Apt_num
           |->兴趣
           | |->运动
           | |->音乐
           | |->电影
           |->其他1
           | |->x1
           | |->x2   
           |->其他2

对于上述对象,我想编写单元测试来测试 Person 对象的不同变量,例如。city、zip、apt、x1 等。在上面的对象中,名称、地址、兴趣等也是对象和其他一些对象。人中的子对象可以为空。我正在使用 testng 编写测试。有没有一种好方法可以为上述对象编写 dataProvider 并调整变量。

4

1 回答 1

1

在纯单元测试中,您应该测试一个类,例如 Person,与您的单元的所有(边缘)案例的其他和测试方法完全分开。

完全分离是非常重要的事情,因为您想要进行单元测试,因此您应该只测试一个单元 - 例如人员类。

所有依赖项呢?您应该模拟它们,因为您必须 100% 确定它们按照您的要求工作 - 这可能意味着:

  • 他们没有被破坏 - 您的同事有可能破坏地址代码
  • 它们也必须针对边缘情况进行调整,例如,如果音乐兴趣可以为空,则您不能信任某人的 API

有时很难从外部实现这些要求。我的意思是你不能确定有人没有提交一段不会返回null而不是地址街道的代码,或者很难将兴趣的音乐设置为 null,因为 API 不必公开这样的方法。

模拟是您应该使用的正确方法。查看示例http://en.wikipedia.org/wiki/Mockito,因为您可以用您的预期行为在几行代码中完全替换测试中组件的依赖项。

于 2013-09-10T06:56:36.487 回答