需要多个依赖项/其他对象的单元测试方法

时间:2014-09-20 20:54:23

标签: unit-testing oop

我正在尝试单元测试计算奖励的方法,该方法基于与方法所在的同一类中定义的几率,以及在另一个类GameTurn中生成的骰子结果。

private final double[] ODDS = {0, 1.5, 1.5, 2, 2, 3, 3, 3, 2, 2, 1.5, 1.5};

public double getOutcome(int dieResult)
{
    return bet * ODDS[dieResult-1];
}

在GameTurn类中,我设置了应该使用的骰子数量,在Die类中,我设置了骰子边数。

我想要退出测试,是检查ODDS数组长度是否对应 骰子* dieides的数量。

我的想法是我测试了getOutcome方法,但为了让我测试它,我需要实例化其他几个对象,因此它让我感到震惊:

  1. 单元测试时是否正常,为了测试方法,需要实例化几个对象,而我实际上需要运行一半的程序?
  2. 是不是因为OOP设计不好,我的单元测试需要这些对象?
  3. 情况概述

    enter image description here

1 个答案:

答案 0 :(得分:1)

这些问题通常很难回答,但我会尽量给出一些帮助你做出决定的角色

  1. 应该进行单元测试以了解您正在测试的内容 - 应该在测试中测试1个案例
  2. 如果您的班级需要拥有所有应用程序和设置 - 您可能会遇到设计问题。
  3. 最简单的解决方法是:更好的设计,接口,注入
  4. 如果您依赖其他第三方服务 - 使用模拟,那么您可以控制响应并测试边缘情况
  5. 根据您的平台 - 您可以使用Mockito或构建自己的模拟
  6. 测试类继承自你的类是有意义的 - 这样你可以测试非公开方法
  7. 有关详细信息,请查看此good Unit Testing Guidelines

    希望这个帮助