单元测试不返回值的函数

时间:2013-10-12 15:59:44

标签: c# unit-testing

我正在玩TDD和一般的单元测试。我见过的所有例子都返回值,这似乎是最简单的情况。但是,如果我的函数没有返回值,该怎么办?

例如,假设我有一个Actor类,我需要一种方法来增加它的“健康”。我做了一个像下面这样的单元测试然后让Actor类来满足它,但这样做是否正常?我没有看到很多在单元测试中使用属性的例子。我应该对这种东西有不同的想法吗?

    [TestMethod]
    public void IncreaseHealth_PositiveValue_PositiveHealth()
    {
        Actor a = new Actor();

        int beforeHealth = a.Health;

        a.IncreaseHealth(5);

        int afterHealth = a.Health;

        Assert.AreEqual(beforeHealth + 5, afterHealth);
    }

1 个答案:

答案 0 :(得分:4)

这个测试是一个好的开始。但是,就像测试返回值的方法一样,您应该测试具有副作用的方法的边界条件。在这种情况下,您还应该检查

  • 您的方法不会采取否定(或采取否定,并按预期工作)
  • 当通过溢出整数的某个大值递增运行状况时,结果仍然是可预测的(例如,运行状况上限为某个值)
  • 当使用大于当前健康值的值递减健康状况时,剩余健康状况不会变为负值(除非允许)
  • 当健康状况变为零时,应该触发任何可能触发的其他事情。

尽管您使用本地初始化对象很好,但您也可以将其放在单元测试对象上,并使用[Setup]方法初始化它。