Unit Test 访问Internal类型和方法
2014-03-14 11:27
204 查看
原则上Unit Test主要是测试一些Public的类型和方法等,但是有时候我们需要验证标记为Internal的类型是不是正常工作。那么,既然被标记为Internal了,应该就不能被所在项目之外的项目访问了,这时最容易想起来的方式是将Internal标记的类型临时改为Public,此方法可行,但是在大量Internal类型需要修改的时候就不适用:不但修改起来繁琐,还有可能会在最后忘记改回Internal而影响程序设计的结构。所以本文简单的介绍另一种较为简单可行的办法:在被测试的代码库的AssemblyInfo.cs中添加“[assembly:
InternalsVisibleTo("UnitTest项目名称")]”。
举一个简单的例子说明:
被测试项目:MyClassLibrary
AssemblyInfo.cs文件如下:
Unit Test: UnitTest1
运行结果:
源代码下载:UnitTestVisitInternal.rar
----转载请注明出处
InternalsVisibleTo("UnitTest项目名称")]”。
举一个简单的例子说明:
被测试项目:MyClassLibrary
AssemblyInfo.cs文件如下:
using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; [assembly: AssemblyTitle("MyClassLibrary")] [assembly: AssemblyDescription("")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("MyClassLibrary")] [assembly: AssemblyCopyright("Copyright © 2014")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] [assembly: InternalsVisibleTo("MyClassLibrary.UnitTest")] [assembly: ComVisible(false)] [assembly: Guid("37e87d2d-e928-4639-9207-ad66340cf511")] [assembly: AssemblyVersion("1.0.0.0")] [assembly: AssemblyFileVersion("1.0.0.0")]被测试的类型:ClassDoThings
namespace MyClassLibrary { internal class ClassDoThings { internal void Do() { } } }
Unit Test: UnitTest1
using Microsoft.VisualStudio.TestTools.UnitTesting; namespace MyClassLibrary.UnitTest { [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { var classDoThings = new ClassDoThings(); classDoThings.Do(); } } }
运行结果:
源代码下载:UnitTestVisitInternal.rar
----转载请注明出处
相关文章推荐
- 解决“使用google test做单元测试(unit test)中访问类的私有成员”的几种方法
- Java中的内部类02-访问其所在方法中的final类型的局部变量
- PyCharm鼠标右键不显示Run unittest方法
- 匿名内部类不能访问外部类方法中的局部变量,除非变量被声明为final类型
- 利用Javassist获取Java类中的方法参数名、参数类型、方法访问类型
- 关于Java中方法重写的访问修饰符和返回值类型的限制
- VS2012 Unit Test(Void, Action, Func) —— 对无返回值、使用Action或Func作为参数、多重载的方法进行单元测试
- 应该以静态方法访问类型DealString中的静态方法toGb(string)
- JS基本类型方法和类的访问
- spring mvc 注解访问控制器以及接收form数据的方式,包括直接接收日期类型及对象的方法
- 自定义Cell访问不了自己的set方法,并且对象初始化产生的不是自定义的类型(cell.contact = self.contacts[indexPath.row])
- java 判断客户端访问设备的类型 的后台方法
- Python单元测试框架unittest使用方法讲解
- 【转自JavaEye】为什么“局部内部类能且只能访问所在方法中的final类型的参数和变量”?
- 为什么匿名内部类只能访问其所在方法中的final类型的局部变量?
- 修改SQL数据库中表字段类型时,报“一个或多个对象访问此列”错误的解决方法
- Python中unittest测试根据不同参数组合产生单独的test case的解决方法
- python中的Unittest常用方法
- OpenCV不同类型Mat的at方法访问元素时该如何确定模板函数的typename
- 无法访问.svg图片,请添加MIME类型 的解决方法