动态创建的程序集的单元测试

时间:2013-04-18 12:40:51

标签: c# unit-testing

我过去曾问过类似的问题,但我们把这个问题放在一边,我们回到了问题所在。 我们试图在动态创建的dll上运行单元测试。

我们有一些API可供QA工程师在我们的应用程序中插入脚本。 QA工程师,在我们的应用程序编辑器中编写一些代码,然后在运行时编译代码,并在磁盘上保存为汇编。

我们希望能够在这个动态创建的程序集上运行一组测试。 我们正在迫使我们的QA团队从一些基类继承并覆盖一些方法,这些是我们想要测试的方法......

你会怎么称赞这个?任何想法都会有所帮助。感谢。

2 个答案:

答案 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工程师还需要指定预期的单位测试结果。