我正在使用带有底层 nhibernate 数据访问代码的自定义 asp.net 会员提供程序,这很好。现在我需要使用测试来练习这些方法。
有人有兴趣建议如何测试这些方法吗?提供一些链接来解释使用一些标准的测试方法吗?
这是我的第一个问题,所以要温柔:)
我正在使用带有底层 nhibernate 数据访问代码的自定义 asp.net 会员提供程序,这很好。现在我需要使用测试来练习这些方法。
有人有兴趣建议如何测试这些方法吗?提供一些链接来解释使用一些标准的测试方法吗?
这是我的第一个问题,所以要温柔:)
当涉及到对与数据库或第三方库做某事的任何代码进行单元测试时,您应该解耦这些依赖关系,以便您的测试只测试您的代码。
例如,如果我们的成员资格提供程序中有一个用于添加单个用户的方法,我们想要测试的是我们的该单个方法的代码是否正常工作,而不是数据库是否已启动并正在运行或该方法调用的方法工作。即使数据库离线或其他类的方法调用失败,我们的单元测试仍然应该通过。
这就是 Mocking 发挥作用的地方。您需要模拟您的数据上下文并设置您将在其上使用的任何方法,以便您可以控制其响应。
仔细查看您在会员提供程序中使用的方法。每个人应该怎么做?这是您真正想要测试的唯一内容。这种方法,作为一个独立的单元,是否可以完成我期望的工作。
会员提供者很难模拟和测试,所以我个人不打扰。然而,我所做的是将我所有的会员代码放在易于测试的类中。
我的大多数自定义提供程序看起来像这样:
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);
}
}
在此示例中,我将编写集成测试来验证用户服务的行为。我不测试提供者。