在这个测试方法中,我需要比较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");
Run Code Online (Sandbox Code Playgroud) 我将此方法添加到公共静态类
public static LogMessage(Exception ex)
{
Trace.WriteLine(ex.ToString());
return ex;
}
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我收到一条消息,说"方法必须有一个返回类型"
在返回时,我还收到一条消息,说"由于'Util.logMessage(System.Exception)'返回void,返回关键字后面不能跟一个对象表达式"
我该如何纠正?
当我运行这个测试时,我得到一个“Assert.Fail failed. Assert.AreEqual failed. Expected:. Actual:.”
如何在错误消息末尾没有“实际:”的情况下使此测试通过或失败?我使用“Assert.Fail(ex.Message);” 在其他几个测试中,所以我无法直接更改消息。
[TestMethod]
public void TestCreateUser()
{
try
{
AsaMembershipProvider prov = this.GetMembershipProvider();
//call get user
MembershipCreateStatus status;
MembershipUser user = prov.CreateUser("testUserX", "12345", "test.UserX@abc.com", "", "", true, null, out status);
Assert.AreNotEqual(status, MembershipCreateStatus.Success);
var isAuthenticated = prov.ValidateUser(user.UserName, "12345");
Assert.IsTrue(isAuthenticated);
Assert.AreEqual(user.UserName, "testUserX");
Assert.AreEqual(user.Email, "test.userx@abc.com");
Assert.IsTrue(user.CreationDate==DateTime.Now);
//TODO Asserts
}
catch (Exception ex)
{
LogMessage(ex);
Assert.Fail(ex.Message);
}
}
Run Code Online (Sandbox Code Playgroud)