C# 验证密码的单元测试

C# 验证密码的单元测试,c#,unit-testing,validation,passwords,C#,Unit Testing,Validation,Passwords,有人能为验证用户密码的单元测试提供一些示例代码吗 //set test to crate user AsaMembershipProvider prov = this.GetMembershipProvider(); //call get user MembershipCreateStatus status; MembershipUser user = prov.Create

有人能为验证用户密码的单元测试提供一些示例代码吗

            //set test to crate user 
            AsaMembershipProvider prov = this.GetMembershipProvider();
            //call get user
            MembershipCreateStatus status;
            MembershipUser user = prov.CreateUser("testUserX", "12345", "test.UserX@abc.com", "", "", true, null, out status);
            user = prov.GetUser("testUserX", false);



            //TODO Asserts
            Assert.AreEqual(status, MembershipCreateStatus.Success);
            Assert.AreEqual(user.UserName, "testUserX");
            Assert.AreEqual(user.Email, "test.userx@abc.com");
            //Assert.AreEqual(password, "12345");

如果您想断言密码是正确的,那么可以断言您能够进行身份验证,而不是直接测试密码。测试提供者的功能有点多余

 Assert.AreEqual(status, MembershipCreateStatus.Success);

 var isAuthenticated = Membership.ValidateUser(user.Username, "12345");

 Assert.IsTrue(isAuthenticated);
 Assert.AreEqual(user.UserName, "testUserX");
 Assert.AreEqual(user.Email, "test.userx@abc.com");

用评论的内容编辑你的问题,这将有助于可读性。其次,您应该能够从某处提取密码散列。只需测试以确保“12345”的哈希值与数据库中的哈希值匹配。您可以发布其余的测试代码吗?断言status==success是否足够?为什么在成员资格提供者的单元测试中需要验证密码(以及用户名)?