【问题标题】:UnitTesting non returning method c# [duplicate]UnitTesting非返回方法c# [重复]
【发布时间】:2014-07-06 13:26:22
【问题描述】:

如何对这样的方法进行单元测试?当它是一个虚空时,它甚至可能吗?

public static void CalcDeltaCO2 ()
    {
        double plantCO2usage = CalcPlantCO2Usage ();
        double airShiftsPerHour = 1 + instance._greenhouse.WindowRoof.GetStatus ();
        double co2AtStart = _simulatedChunks > 1 ? Toolbox.PPMtoM3perM3 (instance._currentCO2Sensor) : Toolbox.CO2_LEVEL_OUTSIDE;
        instance._deltaCO2 = Toolbox.M3perM3toPPM ((((instance._greenhouse.CO2Dispenser.GetFlow ()) - plantCO2usage
        / (airShiftsPerHour * instance._greenhouse.Volume))
        * (1.0 - (1.0 / Math.Pow (Math.E, (airShiftsPerHour * Toolbox.CHUNK_TIME_H)))) + (Toolbox.CO2_LEVEL_OUTSIDE - co2AtStart)
        * (1.0 / Math.Pow (Math.E, (airShiftsPerHour * Toolbox.CHUNK_TIME_H))) + co2AtStart)
        - Toolbox.PPMtoM3perM3 (instance._currentCO2Sensor));
    }

【问题讨论】:

  • void 方法通常会影响应用程序的状态(又名:变量在某处发生更改)。在您的情况下,您似乎正在更改 instance._deltaCO2 所以模拟/存根并验证更改。

标签: c# unit-testing void


【解决方案1】:

单元测试可以验证以下三件事之一:

  1. 方法返回值
  2. 方法改变状态
  3. 方法引发异常

在您的情况下,您的方法通过进行一些计算来改变状态。在这种情况下,您可以做的是验证 instance._deltaCO2 是否符合预期值。

【讨论】:

  • +1 用于此特定测试。单元测试可以验证的其他事情是(对象或应用程序的)行为受到调用的正确影响。 NUnit 还可以验证调用方法 a) 具体不会抛出任何异常,并且 b) 在指定时间内返回。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-22
相关资源
最近更新 更多