单元测试委托方法

时间:2010-08-13 05:09:00

标签: c# java unit-testing tdd

单元测试方法中是否有任何一点,它唯一能做的就是委托另一个对象工作?例如:

class abc {

    ...

    public void MoveLeft()
    {
        fallingPiece.MoveLeft();
    }

    ...
}

为了学习目的,我正在为我现有的一些课程进行单元测试。例如,为此MoveLeft()方法执行单元测试似乎有点奇怪。但我不确定如何完成Test-First。

由于

3 个答案:

答案 0 :(得分:4)

如果我执行此操作,您的代码是否会中断?如果可以,那么你需要一个测试来捕获它。

class abc {
    ...
    public void MoveLeft()
    {
        // fallingPiece.MoveLeft();
    }
    ...
}

假设:abc是public / exposed类型,fallPiece是依赖。如果这样,那么您需要一个测试来测试MoveLeft行为。如果它不是公共类型,那么您需要对使用abc作为colloborator / dependency的公共类型XYZ进行测试。您不直接测试它,但仍需要进行测试。

答案 1 :(得分:1)

我对单元测试的理解是,它们可以确保方法内部的逻辑在您不打算更改时保持不变,并且此方法中没有逻辑。在我工作的代码库中,我们有很多传递方法。表面上看,它们是“控制器”类,但在大多数情况下,它们只是传递到数据层。

是的,您可以对它们进行单元测试,假设您有办法模拟fallingPiece。如果您真的计划将MoveLeft方法扩展为包含逻辑,那么这可能是一个好主意。

然而,就我上面的评论而言,在你真正需要引入围绕左移的逻辑之前,可能更好的方法是内联该方法。

答案 2 :(得分:0)

此方法失败的一种情况是当调用Abc.MoveLeft时,fallingPiece为null。有一个构建一个合法的abc并调用abc.MoveLeft的测试用例可能是个好主意。 就像是 CanMoveLeft() {   Abc abc = new Abc();   abc.MoveLeft();   Assert.That(abc.fallingPice已向左移动) }