我过去曾问过类似的问题,但我们把这个问题放在一边,我们回到了问题所在。 我们试图在动态创建的dll上运行单元测试。
我们有一些API可供QA工程师在我们的应用程序中插入脚本。 QA工程师,在我们的应用程序编辑器中编写一些代码,然后在运行时编译代码,并在磁盘上保存为汇编。
我们希望能够在这个动态创建的程序集上运行一组测试。 我们正在迫使我们的QA团队从一些基类继承并覆盖一些方法,这些是我们想要测试的方法......
你会怎么称赞这个?任何想法都会有所帮助。感谢。
答案 0 :(得分:2)
您必须检查动态程序集中的类型,并找到从您的基类派生的那些简明类型。假设它们都具有无参数构造函数,您可以执行以下操作:
Assembly dynamicAssembly = //generated
var derivedInstances = dynamicAssembly.GetTypes()
.Where(t => !t.IsAbstract && t.IsSubclassOf(typeof(BaseClass)))
.Select(t => (BaseClass)Activator.CreateInstance(t));
foreach(BaseClass bc in derivedInstances)
{
//run tests
}
答案 1 :(得分:0)
从上面看,您需要使用某种方法创建动态创建的dll中定义的类的实例(反射是一种方式)。将这些对象转换为基类类型,然后您应该能够执行基类的方法。
我认为更有趣的是:当你执行一个方法时,你将如何定义什么是正确的结果?我想说你的QA工程师还需要指定预期的单位测试结果。