对不返回值的函数进行单元测试

本文关键字:单元测试 函数 返回值 | 更新日期: 2023-09-27 18:35:01

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

对不返回值的函数进行单元测试

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

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

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