【发布时间】:2012-06-01 07:45:56
【问题描述】:
我是编写单元测试的新手。 我已经使用 PrivateObject 来访问和修改类的私有成员,以便在测试时使用它。
但是,如果我想访问我正在测试的方法的私有变量,我该怎么做。我不会更改任何功能,但我需要修改一个变量才能完成单元测试。
这就是我想要做的。 在 ABC 类中,我想修改 dwConn,因为我将无法访问 SqlConnectionManager 进行单元测试,但我可以在应用程序运行时访问它。非常感谢您阅读本文。任何帮助注册这都会很好。
public class ABCTest
{
public void MethodATest()
{
const string connectionString = @"Data Source=servername\MSSQLSERVER2008;Initial Catalog=DB1;User ID=user1;Password=pswd1";
SqlConnection sqlConn = new SqlConnection(connectionString);
PrivateObject param0 = new PrivateObject(target);
param0.SetField("dwConn", sqlConn);
actual = target.MethodA();
}
}
public Class ABC()
{
Method A()
{
SqlConnection dwConn = (SqlConnection)SqlConnectionManager.Instance.GetDefaultConnection();
using(dwconn)
{
//some stuff
}
}
}
【问题讨论】:
-
如果它们是私有变量并且您需要更改它们,您应该为每个变量设置公共 getter/setter。或者改用属性。
标签: c# visual-studio-2010 mstest vs-unit-testing-framework privateobject.invoke