单元测试方法中是否有任何一点,它唯一能做的就是委托另一个对象工作?例如:
class abc {
...
public void MoveLeft()
{
fallingPiece.MoveLeft();
}
...
}
为了学习目的,我正在为我现有的一些课程进行单元测试。例如,为此MoveLeft()方法执行单元测试似乎有点奇怪。但我不确定如何完成Test-First。
由于
答案 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已向左移动) }