3

我一般都在玩 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);
    }
4

1 回答 1

4

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

  • 您的方法不接受否定(或接受否定,并且按预期工作)
  • 当将健康值增加某个溢出整数的大值时,结果仍然是可预测的(例如,健康值被限制在某个值)
  • 当将生命值减少大于当前生命值的值时,剩余生命值不会变为负数(除非允许)
  • 当生命值归零时,应该触发任何其他可能触发的事情。

尽管您可以使用本地初始化的对象,但您也可以在单元测试对象上放置一个,并在您的[Setup]方法中对其进行初始化。

于 2013-10-12T16:12:06.483 回答