首页 / 知识
关于.net:如何允许程序集(一个单元测试)访问另一个程序集的内部属性?
2023-04-14 16:49:00

How do I allow assembly (unit testing one) to access internal properties of another assembly?我希望我的Core程序集不公开某个类,而我仍然希望能够对其进行测试。 我怎样才能做到这一点 ? InternalsVisibleTo归功于救援! 只需添加:
到您的核心类AssemblyInfo.cs文件 有关最佳实践,请参见Friend程序集(C#编程指南)。 如果您的程序集是重命名的,则使用InternalsVisible,例如,您需要指定公共密钥(注意:完整密钥而不是公共密钥令牌)...
而以下技巧对于在不诉诸cmd行的情况下获取公钥确实很有用... http://www.andrewconnell.com/blog/archive/2006/09/15/4587.aspx 我将单元测试与要测试的代码放在同一程序集中。这对我来说很有意义,因为我认为"测试自己"是班级的功能,同时也包括"初始化自己"和"描述自己"之类的东西。 我听说过有人反对这种方法,但很少有人对此表示信服。 我说,这伤害了表现Bah!没有硬数据就不要优化!也许,如果您计划通过慢速链接下载程序集,那么使程序集大小最小化将是值得的。 这是安全隐患。仅当您在测试中有秘密时。不要那样做 现在,您的情况与我的情况不同,因此也许对您有意义,也许不会。您必须自己弄清楚。 另外:在C#中,我曾经尝试将单元测试放在名为" Tests"的类中,该类嵌套在要测试的类中。这使事物的正确组织变得显而易见。它还避免了在对" Foo"类的测试位于" FooTests"类中时出现的名称重复。但是,我可以使用的单元测试框架拒绝接受未标记为"公共"的测试。这意味着您正在测试的类不能是"私有的"。我想不出有什么充分的理由要求测试必须"公开",因为没有人真正将它们称为公开方法-一切都是通过反思。如果您曾经为.Net编写过单元测试框架,请考虑允许我进行非公开测试! 我建议不要麻烦……如果您真的想对"内部"类进行单元测试,只需将它们隐藏在仅内部代码最终会使用的命名空间中即可。除非您要编写.NET框架规模的框架,否则您实际上并不需要这种隐藏级别。 您可以使用反射(就像MS测试项目一样),也可以将单元测试程序集声明为核心程序集的朋友。 另一个选择是将单元测试放在同一程序集中。 |
最新内容
相关内容
linux命令下访问页面?
linux命令下访问页面?,系统,数据,传播,网址,环境,密码,信息,地址,软件,工作,linux,按了ctrl+alt+F1,进入了类似纯命令行的界面,让输入login信linux访问网站的命令?
linux访问网站的命令?,地址,系统,服务,工作,网站,命令,网络,管理,信息,网址,Linux必学的网络操作命令Linux的网络命令比较多,其中一些命令像pinlinux访问模板命令?
linux访问模板命令?,工作,地址,系统,信息,管理,命令,目录,发行,设备,文件,linux系统常用操作命令1、linux常用命令有pwd命令、cd命令、ls命令命令访问linux系统?
命令访问linux系统?,系统,地址,信息,软件,命令,时间,工具,网络,管理,电脑,linux文件系统常用命令linux常用命令:查看内核版本:uname-a。图形界面linux命令查看包属性?
linux命令查看包属性?,时间,系统,信息,状态,命令,文件,通讯录,管理,情况,标准,Linux文件相关命令命令一:cat cat命令应该是在Linux中查看文件内linux命令访问网页?
linux命令访问网页?,地址,传播,网络,系统,软件,网址,密码,服务,数据,首次,linux命令行打开火狐浏览器并跳转到想访问的地址程序设定。在编程软linux访问日志的命令?
linux访问日志的命令?,系统,信息,对比,实时,基础,日志,命令,文件,设备,管理,linux系统常用命令熟悉吗?如何在日志文件中,定位用户请求1、“chmlinux网页访问命令?
linux网页访问命令?,地址,网络,工作,系统,命令,传播,信息,软件,代码,首次,在Linux下怎么通过命令上网1、首先,连接相应linux主机,进入到linux命linux访问日志命令?
linux访问日志命令?,系统,信息,对比,日志,简介,管理,情况,实时,命令,文件,查看linux系统日志的命令1、第一种:查看实时变化的日志(比较吃内存)。linux访问d盘命令?
linux访问d盘命令?,系统,管理,电脑,设备,软件,概念,信息,分区,文件,命令,...6.2的Linux系统,Linux系统无法识别ntfs格式的D盘,不重装系统的情linux文件访问命令行?
linux文件访问命令行?,系统,地址,工作,图片,命令,标准,名称,情况,官方网站,信息,如何使用命令行在Linux中查找文件和文件夹列出文件清单命令,lslinux客户访问命令?
linux客户访问命令?,网络,系统,地址,服务,管理,信息,数字,基础,密码,命令,Linux下定制SSH来简化远程访问教程1、/etc/ssh/ssh_config 为默认的