zoukankan      html  css  js  c++  java
  • [转] Unit Test 访问Internal类型和方法

    原网页:https://blog.csdn.net/jiangzhanchang/article/details/21228091

     原则上Unit Test主要是测试一些Public的类型和方法等,但是有时候我们需要验证标记为Internal的类型是不是正常工作。那么,既然被标记为Internal了,应该就不能被所在项目之外的项目访问了,这时最容易想起来的方式是将Internal标记的类型临时改为Public,此方法可行,但是在大量Internal类型需要修改的时候就不适用:不但修改起来繁琐,还有可能会在最后忘记改回Internal而影响程序设计的结构。所以本文简单的介绍另一种较为简单可行的办法:在被测试的代码库的AssemblyInfo.cs中添加“[assembly: 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();
            }
        }
    }
    

      运行结果:

  • 相关阅读:
    Endnote
    C#在子线程Thread中使用await会出问题
    httpwebrequest抓取网页数据非字符串时要使用流直接写文件
    此流不支持查找操作
    http请求头中Referer的含义和作用
    C# Net Core 使用 ClientWebSocket 实现 WebSocket 客户端
    C# 实现WebSocket服务端实例
    WebSocket 协议初探
    WebSocket技术
    WebSocket的使用
  • 原文地址:https://www.cnblogs.com/LOGHG/p/9042225.html
Copyright © 2011-2022 走看看