0

我正在使用带有底层 nhibernate 数据访问代码的自定义 asp.net 会员提供程序,这很好。现在我需要使用测试来练习这些方法。

有人有兴趣建议如何测试这些方法吗?提供一些链接来解释使用一些标准的测试方法吗?

这是我的第一个问题,所以要温柔:)

4

2 回答 2

1

当涉及到对与数据库或第三方库做某事的任何代码进行单元测试时,您应该解耦这些依赖关系,以便您的测试只测试您的代码。

例如,如果我们的成员资格提供程序中有一个用于添加单个用户的方法,我们想要测试的是我们的该单个方法的代码是否正常工作,而不是数据库是否已启动并正在运行或该方法调用的方法工作。即使数据库离线或其他类的方法调用失败,我们的单元测试仍然应该通过。

这就是 Mocking 发挥作用的地方。您需要模拟您的数据上下文并设置您将在其上使用的任何方法,以便您可以控制其响应。

仔细查看您在会员提供程序中使用的方法。每个人应该怎么做?这是您真正想要测试的唯一内容。这种方法,作为一个独立的单元,是否可以完成我期望的工作。

于 2012-05-18T11:17:22.627 回答
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);
        }
}

在此示例中,我将编写集成测试来验证用户服务的行为。我不测试提供者。

于 2012-05-18T12:17:25.463 回答