3

Gojko Adzic 在他的书Test Driven .NET Development with FitNesse中给出了一些减少测试代码的基本技巧。有一个方法调用LogIn,根据用户名和密码,返回玩家的 id 或在没有注册玩家时抛出异常。这是测试代码的初始版本:

public class CheckLogIn : fit.ColumnFixture
{
    public string username;
    public string password;

    public int LoggedInAsPlayerId()
    {
        try
        {
            SetUpTestEnvironment.playerManager.LogIn(username, password);
            return true;
        }
        catch (Exception)
        {
            return false;
        }
    }
}

然后将其替换为更短的版本:

public class CheckLogIn : fit.ColumnFixture
{
    public string username;
    public string password;

    public int LoggedInAsPlayerId()
    {
        return SetUpTestEnvironment.playerManager.LogIn(username, password);
    }
}

现在第二个测试有一个额外的好处,即验证是否返回了正确的 id,但它不允许您检查系统是否拒绝未知用户/错误密码。是否有任何特殊值可用于列中以指示异常?还是我必须结合这两个测试来涵盖所有场景?我记得,尽管此时此刻模糊不清,有某种用于处理异常的单元测试模式,但我敢肯定有人已经问过它,所以我不想重复。除非社区对此表示同意,否则请建议测试此类方法的最佳实践。

如果我不清楚:

假设我有一个注册玩家:(john.doe/test123/101用户名/密码/id)。我想要测试系统的两种组合是john.doe/test123/101john.doe/johnny/<WrongUserOrPasswordException>

4

1 回答 1

1

有两个夹具关键字允许检查异常:

  • error- 在测试期间应该抛出异常时
  • exception- 检查特定异常

这实际上在本书的下一页上得到了很好的解释......我没有立即注意到它很糟糕。也许有人会发现这些信息很有用,所以我不会删除这个问题。

于 2010-06-21T00:34:24.370 回答