我需要更好地了解何时为单元测试加载程序集。
我有一个类 (ClassDerived
),我正在对其进行单元测试。 ClassDerived
派生自另一个类 (ClassBase
)。
我试图在运行第一个测试之前使用 ClassInitialize
属性来初始化 ClassDerived
。单元测试项目引用了 ClassBase
和 ClassDerived
。
当执行 ClassInitialize
方法中的代码时,我注意到包含 ClassDerived
的程序集尚未加载。
我通过查看调用 GetAssemblies()
的返回值来确定这一点。
var assemblies = System.AppDomain.CurrentDomain.GetAssemblies();
奇怪的是包含 ClassBase
的程序集被加载了。
我尝试将初始化代码移至单元测试构造函数,结果相同。
有人知道这是怎么回事吗?
最佳答案
我怀疑加载时间不是单元测试特有的。在 .net 3.5 中,这是我所看到的:
给定具有方法“Y”的程序集“X”,并且方法“Y”使用程序集“Z”中的某些内容。
在这种情况下,程序集“Z”将在方法“Y”执行之前加载。 .net 4.0 据推测在许多方面引入了更大的“懒惰”,所以我不知道上述观察是否仍然正确。
关于c# - 单元测试何时加载依赖程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8844004/