单元测试动态加载程序集

在VS2008的单元测试下取程序集所在目录有点别扭。

System.Reflection.Assembly.GetExecutingAssembly().Location得到的一个临时的目录,没有引用到测试项目的dll不会拷贝到该临时目录。换言之如果你想动态加载某些类,请先引用到测试项目,无言

AppDomain.CurrentDomain.BaseDirectory得到自然是IDE所在的目录。

只好这样处理

代码
private T createInstance<T>(string pTypeName)
{
    
string[] arr = pTypeName.Split(',');
    
//取路径
    System.Reflection.Assembly cur = System.Reflection.Assembly.GetExecutingAssembly();
    
string folder = System.IO.Path.GetDirectoryName(cur.Location);
    
//取程序集
    string fullName = string.Format("{0}\\{1}.dll", folder.TrimEnd('\\'),arr[1]);
    System.Reflection.Assembly my 
= System.Reflection.Assembly.LoadFile(fullName);      
    
object obj = my.CreateInstance(arr[0]);     
    
    
if (obj == null)
        
return default(T);
    
else
        
return (T)obj;
}

 也可以在测试代码前放置这样的代码

AppDomain.CurrentDomain.SetData("APPBASE", @"D:\TestProject2\bin\Debug");

其中的“D:\TestProject2\bin\Debug ”是我测试程序的输出目录。

posted @ 2010-03-18 11:12  生命体验之kevin-Y  阅读(261)  评论(0编辑  收藏  举报