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/101
和john.doe/johnny/<WrongUserOrPasswordException>