【问题标题】:Best way to write unit test for multiple variables为多个变量编写单元测试的最佳方法
【发布时间】:2013-09-09 01:36:23
【问题描述】:

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

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

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

【问题讨论】:

  • 您在寻找参数化测试吗?
  • 是的,但不确定设计测试如何有效。需要为每个测试中的所有变量设置不同的值

标签: java unit-testing testng


【解决方案1】:

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-03
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 2020-11-19
    • 1970-01-01
    相关资源
    最近更新 更多