7

在此测试方法中,我需要比较 user3 的字符串,同时忽略区分大小写。我在想我应该使用 CultureInfo.InvariantCulture 来忽略Case。这是实现这一目标的最佳方法,还是有更好的方法?

            //set test to get user 
            AsaMembershipProvider prov = this.GetMembershipProvider();        

            //call get users
            MembershipUser user1 = prov.GetUser("test.user", false);
            //ask for the username with deliberate case differences
            MembershipUser user2 = prov.GetUser("TeSt.UsEr", false);
            //getting a user with Upper and lower case in the username.
            MembershipUser user3 = prov.GetUser("Test.User", false);

            //prove that you still get the user, 
            Assert.AreNotEqual(null, user1);
            Assert.AreNotEqual(null, user2);

            //test by using the “.ToLower()” function on the resulting string.
            Assert.AreEqual(user1.UserName.ToLower(), user2.UserName.ToLower());
            Assert.AreEqual(user1.UserName, "test.user");
            Assert.AreEqual(user3.UserName, "test.user");
4

3 回答 3

9

Assert.AreEqual与 ignoreCase 参数一起使用会更好,因为它不需要创建新字符串(并且,正如@dtb 所指出的,您可以按照特定文化信息的规则工作)

Assert.AreEqual(user1.UserName, user2.UserName, true, CultureInfo.CurrentCulture);
于 2013-05-09T21:45:25.100 回答
3

StringInstance.ToUpperInvariant()

user1.UserName.ToUpperInvariant() == user3.UserName.ToUpperInvariant();

user3.UserName.ToUpperInvariant() == "TEST.USER";  
于 2013-05-09T21:41:53.207 回答
1

以简单的形式;您可以比较两个字符串,同时忽略它们的大小写,如下所示。

Assert.AreEqual(0,string.Compare("test", "TEST", true));

我不知道; 为什么需要采取非文化特定案例的路线,因为案例是一个简单的(非本地化)单元测试案例。话虽如此,如果您仍然想朝那个方向前进,那么请参考链接。

于 2013-05-09T21:47:13.387 回答