C# 单元测试委托方法
在单元测试一个方法时,它唯一做的事情就是在另一个对象上委托工作,这有什么意义吗?例如:C# 单元测试委托方法,c#,java,unit-testing,tdd,C#,Java,Unit Testing,Tdd,在单元测试一个方法时,它唯一做的事情就是在另一个对象上委托工作,这有什么意义吗?例如: class abc { ... public void MoveLeft() { fallingPiece.MoveLeft(); } ... } 为了学习的目的,我正在为我现有的一些课程做单元测试。例如,对这个MoveLeft()方法进行单元测试似乎有点奇怪。但我不确定如果我先做了测试会怎么样 感谢我对单元测试的理解是,它们的存在是为了确保方法
class abc {
...
public void MoveLeft()
{
fallingPiece.MoveLeft();
}
...
}
为了学习的目的,我正在为我现有的一些课程做单元测试。例如,对这个MoveLeft()方法进行单元测试似乎有点奇怪。但我不确定如果我先做了测试会怎么样
感谢我对单元测试的理解是,它们的存在是为了确保方法中的逻辑在您不想更改时保持不变,而此方法中没有逻辑。我们在我工作的代码库中有很多这样的传递方法。表面上,它们是“控制器”类,但在大多数情况下,它们所做的只是传递到数据层 是的,您可以对它们进行单元测试,前提是您有办法模拟
fallingPiece
。如果您确实计划扩展MoveLeft方法以包含逻辑,那么这可能是一个好主意
然而,在我上面的评论中,在您真正需要引入向左移动的逻辑之前,最好只内联该方法。如果我这样做,您的代码会中断吗?如果它会,那么你需要一个测试来捕捉它
class abc {
...
public void MoveLeft()
{
// fallingPiece.MoveLeft();
}
...
}
假设:abc是公共/公开类型,fallingPiece是依赖项。如果这一点成立,那么您需要一个测试来测试MoveLeft行为。如果它不是公共类型,那么您需要对公共类型XYZ进行测试,该类型使用abc作为协同器/依赖项。您不直接测试它,但它仍然需要测试。此方法可能失败的一种情况是,当调用Abc.MoveLeft时,fallingPiece为null。拥有一个构建合法abc并调用abc.MoveLeft的测试用例可能是个好主意。 差不多 CanMoveLeft() { Abc=新Abc(); abc.MoveLeft(); Assert.That(abc.fallingPice已移到左侧)
}首先,你为什么会有这种方法?雅格尼…我需要它。我一直在运行FallingPiece.MoveLeft()代码。嗯,我不明白你内联该方法的意思。你能说清楚一点吗?我想他指的是,无论你在哪里,都要把fallingPiece放进去。不过,如果您有abc.MoveLeft并用abc.fallingPiece.MoveLeft()替换它,这可能不是一个好主意。我同意abc.fallingPiece.MoveLeft()将是一种糟糕的形式。在这一点上,我必须看更多的代码才能做出建设性的评论。但是,看到您在下面关于这是一个非公共方法的回应,无论如何都不会有人调用abc.fallingPiece.MoveLeft();abc中的其他一些代码将调用fallingPiece.MoveLeft().Hmmm。我没有想到abc的可访问性。我想说,它可能不会向外界公开。FallingPiece确实是一个依赖项。