C# 使用Nunit和全局变量的测试用例
我使用c#创建了一个asp.net 4.0 web应用程序。我有一个使用全局变量的类。我已经在Page_Load方法和其他函数中设置了该变量的值 现在我想创建该函数的测试用例。我想知道在使用nunit调用测试用例中的该函数之前,如何设置该全局变量的值 这是我的密码:C# 使用Nunit和全局变量的测试用例,c#,asp.net,nunit,testcase,C#,Asp.net,Nunit,Testcase,我使用c#创建了一个asp.net 4.0 web应用程序。我有一个使用全局变量的类。我已经在Page_Load方法和其他函数中设置了该变量的值 现在我想创建该函数的测试用例。我想知道在使用nunit调用测试用例中的该函数之前,如何设置该全局变量的值 这是我的密码: public string userId = ""; protected void Page_Load(object sender, EventArgs e) { userId = Membership.Get
public string userId = "";
protected void Page_Load(object sender, EventArgs e)
{
userId = Membership.GetUser().ProviderUserKey.ToString();
//some code here
}
public bool IsEntryExist()
{
string query="SELECT COUNT(*) FROM table WHERE user_id = '"+userId+"'";
bool Exist = Convert.ToBoolean(db.SelectScaler(query));
}
在这里,我用nunit创建了一个测试用例
[TestFixture]
public class Testing
{
[Test]
public void TestUser()
{
Assert.IsTrue(IsEntryExist())
}
}
如何设置UserId的值?首先,您没有使用全局变量。您正在使用成员变量
[Test]
public void TestUser()
{
MyClass myClass = new MyClass();
MyClass.userid = "test value";
Assert.IsTrue(IsEntryExist())
}
其次,最好将此代码移动到包含方法的其他类
public bool IsEntryExist(int id)
比测试更容易。而且您不需要在单元测试中实例化ASP.NET页面类,这有点奇怪。感谢您的快速响应。如果我将变量定义为private,那么如何为该变量赋值。@NamanGoyal如果它是private,则不能直接设置它。您必须在其周围提供某种受保护或公开的setter。如果将其设置为受保护,则可以在派生测试类中设置它。