Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 测试asp.net成员资格提供程序时出现2个问题_C#_Unit Testing_Asp.net Membership - Fatal编程技术网

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);
    }
    
  • prov.FindUserByName(“testUser1”…-应该是“testUser”
  • usernames.ToArray()==字符串[]{“testUser1”、“testUser2”}-它不包含“testUser”
  • 问题1: 您正在两个用户的集合中查找“testUser1”。您得到的是1而不是2,因为只有一个名为“testUser1”的用户

    问题2:
    您正在搜索“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);)