我正在使用自定义的asp.net成员资格提供程序,并且使用了nhibernate数据访问代码,这很好。现在我需要使用测试来练习这些方法。
是否有兴趣建议如何测试这些方法?提供一些使用一些标准解释测试方法的链接可能吗?
这是我的第一个问题,所以要温柔:)
答案 0 :(得分:1)
在单元测试任何与数据库或第三方库有关的代码时,您应该解除这些依赖关系,以便测试只测试您的代码。
例如,如果我们的成员资格提供程序中有一个方法用于添加单个用户,那么我们要测试的是我们的这个单一方法的代码是否正常工作,而不是数据库已启动并正在运行或者调用的方法通过这种方法工作。即使数据库脱机或者对其他类的方法调用失败,我们的单元测试仍应通过。
这是Mocking发挥作用的地方。您将要模拟您的数据上下文并设置您将在其上使用的任何方法,以便您可以控制其响应。
仔细查看您的会员提供商所拥有的方法。每个人应该怎么做?这是你真正想要测试的唯一的东西。这种方法作为一个独立的单元,是否能完成我期望的工作。
答案 1 :(得分:0)
会员提供商很难模拟和测试,所以我个人不打扰。但是,我所做的是将所有会员代码放在 易于测试的类中。
我的大多数自定义提供商都是这样的:
public class CustomMembershipProvider : MembershipProvider
{
private readonly IUserService _userService;
public ButlinsMembershipProvider()
{
_userService = DI.Resolve<IUserService>();
}
public override bool ValidateUser(string username, string password)
{
return _userService.Authenticate(username, password);
}
}
在这个例子中,我会编写集成测试来验证用户服务的行为。我不测试提供商。