我的构建服务器使用 MSBuild 来构建我的应用程序。我们的单元测试需要访问一些私有成员进行测试,因此我们使用内置的私有访问器。 Visual Studio 没有问题,但是当我们将代码推送到构建服务器时,我们收到错误:
MyTest.cs(96,13):错误CS0246:
类型或命名空间名称“My_Accessor”
找不到(您是否缺少
使用指令或程序集
参考?)
为什么 MSBuild 忽略私有访问器以及如何修复它?
我们使用 NUnit 作为测试框架,使用 CruiseControl.Net 作为持续集成服务器。
编辑:
根据评论,这里是存储库模式类的基类的一些测试代码。
MockRepository mocks = new MockRepository();
IDataContextWrapper wrapper = mocks.DynamicMock<IDataContextWrapper>();
Repository_Accessor target = new Repository_Accessor(wrapper);
Assert.AreEqual(wrapper, target._DataContext);
此代码只是验证成员变量 _DataContext 是否设置为模拟的包装器。在我的构建服务器上使用 MSBuild 构建时失败。
您的构建设置似乎没有生成私有访问器程序集。因此,您会遇到缺少 using 指令或程序集引用的错误。你可以看看宣传 http://msdn.microsoft.com/en-us/library/bb514191.aspx在构建过程中生成私有访问器的工具。里面提到了
生成的程序集也是已知的
作为私有访问器。你也可以
从生成私有访问器
IDE,但您可以使用 publicize.exe
相反,在自动化、脚本编写和
构建场景。
我在一些测试中也使用私有访问器,并使用 TFS TeamBuild 和 MSTest。私有访问器是在构建期间生成的。我不需要手动执行任何操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)