使用一些内部属性创建测试DataContract对象?

时间:2015-12-23 09:03:33

标签: c# unit-testing

我有一个具有以下结构的数据合同Foo。

 [DataContract]
 public sealed class Foo
 {
     [DataMember]
     public String Type
     {
         get;
         internal set;
     }
  }

出于测试目的,我想创建一个具有特定类型的Foo实例,但是在创建实例后我无法设置Type属性,因为它是一个内部属性。我怎样才能做到这一点?

一个想法是创建对象的序列化版本,然后使用反序列化器来创建对象的实例,这是可能的,如果是,我该怎么办呢?

2 个答案:

答案 0 :(得分:1)

使用产品装配中的System.Runtime.CompilerServices.InternalVisibleTo属性标记测试装配可见的内部结构。

AssemblyInfo.cs文件中:

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("YourTestAssembly.dll, PublicKey=123456")]

答案 1 :(得分:0)

在班上有2个构造函数:

public Foo ();

public Foo (string type) {
    Type = type;
}

使用第二个构造函数进行测试。