C# 测试asp.net成员资格提供程序时出现2个问题
我创建了一个单元测试来按名称搜索用户。我有两个问题无法解决C# 测试asp.net成员资格提供程序时出现2个问题,c#,unit-testing,asp.net-membership,C#,Unit Testing,Asp.net Membership,我创建了一个单元测试来按名称搜索用户。我有两个问题无法解决 Assert.IsTrue(coll.Count==2)没有按应有的方式对用户进行计数。应该有2个用户,并且只计算1个 Assert.IsTrue(usernames.Contains(“testUser”))找不到部分用户名字符串。有人能告诉我我做错了什么吗 这是我的密码: [TestMethod] public void TestFindUsersByName() { //set test to crate user
Assert.IsTrue(coll.Count==2)
没有按应有的方式对用户进行计数。应该有2个用户,并且只计算1个Assert.IsTrue(usernames.Contains(“testUser”))代码>找不到部分用户名字符串。有人能告诉我我做错了什么吗
[TestMethod]
public void TestFindUsersByName()
{
//set test to crate user
AsaMembershipProvider prov = this.GetMembershipProvider();
MembershipCreateStatus status;
//creates users
MembershipUser user1 = prov.CreateUser("testUser1", "12345", "test.User1@abc.com", "", "", true, null, out status);
MembershipUser user2 = prov.CreateUser("testUser2", "12345", "test.User2@abc.com", "", "", true, null, out status);
//gets users
user1 = prov.GetUser("testUser1", false); //not checking if user is online. Argument should be false. Not yet implemented
user2 = prov.GetUser("testUser2", false);
int pageSize = 5;
int pageIndex = 0;
int totalRecords = 2;
MembershipUserCollection coll = prov.FindUsersByName("testUser1", pageIndex, pageSize, out totalRecords);
Assert.IsTrue(coll.Count == 2);
List<string> usernames = new List<string>();
foreach (MembershipUser user in coll)
{
usernames.Add(user.UserName);
}
Assert.AreNotEqual(usernames, null);
Assert.IsTrue(usernames.Contains("testUser"));
//Deletes Users
prov.DeleteUser("testUser1", true);
prov.DeleteUser("testUser2", true);
//Tries to get users again
user1 = prov.GetUser("testUser1", false);
user2 = prov.GetUser("testUser2", false);
//test that no users are returned
Assert.AreEqual(null, user1);
Assert.AreEqual(null, user2);
}
[TestMethod]
public void TestFindUserByName()
{
//将测试设置为板条箱用户
AsMembershipProvider prov=this.GetMembershipProvider();
成员资格和状态;
//创建用户
MembershipUser1=prov.CreateUser(“testUser1”、“12345”、“test”。User1@abc.com“,”,”,true,null,out状态);
MembershipUser2=prov.CreateUser(“testUser2”、“12345”、“test”。User2@abc.com“,”,”,true,null,out状态);
//获取用户
user1=prov.GetUser(“testUser1”,false);//不检查用户是否联机。参数应为false。尚未实现
user2=prov.GetUser(“testUser2”,false);
int pageSize=5;
int pageIndex=0;
int totalRecords=2;
MembershipUserCollection coll=prov.FindUsersByName(“testUser1”,pageIndex,pageSize,out totalRecords);
Assert.IsTrue(coll.Count==2);
列表用户名=新列表();
foreach(coll中的MembershipUser用户)
{
usernames.Add(user.UserName);
}
arentequal(用户名,null);
Assert.IsTrue(usernames.Contains(“testUser”));
//删除用户
prov.DeleteUser(“testUser1”,真);
prov.DeleteUser(“testUser2”,真);
//尝试再次获取用户
user1=prov.GetUser(“testUser1”,false);
user2=prov.GetUser(“testUser2”,false);
//测试是否没有返回任何用户
arenequal(null,user1);
arenequal(null,user2);
}
您正在搜索“testUser”,而不是部分用户。您正在按名称“testUser1”查找用户,然后不明白为什么返回的用户数是1而不是2?我是否误解了这一点?这里还有一个无关的测试:
Assert.AreNotEqual(用户名,null)
您刚刚创建了上面几行的列表。您不需要测试该代码。这将有助于提高可读性。我想搜索testUser。任何用户名中包含“testUser”(testUser1、testUser2、testUser3等)的用户都应该显示在列表中,但您有prov.FindUsersByName(“testUser1”)…然后期望它包含“testUser2”。我还想补充一点,您的测试方法名称具有误导性。您所做的远不止测试一个方法。您可能应该考虑重命名该方法,或者更好地将其拆分为多个测试。这样也更容易调试。正确,但即使我有prov.FindUsersByName(“testUser”)…我仍然有我的问题。反正Assert.arnotequal(用户名,null)比Assert.IsNotNull(用户名)和Assert.IsTrue(coll.Count==2)更像Assert.AreEqual(2,coll.Count);)