【问题标题】:Unit testing of dynamically created assembly动态创建程序集的单元测试
【发布时间】:2013-04-18 20:47:50
【问题描述】:

我过去也问过类似的问题,但我们把这件事放在一边,我们又回到了问题上。 我们试图实现它以在动态创建的 dll 上运行单元测试。

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

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

你会如何暗示这个?任何想法都会有所帮助。谢谢。

【问题讨论】:

标签: c# unit-testing


【解决方案1】:

您必须检查动态程序集中的类型并找到从您的基类派生的具体类型。假设它们都有无参数构造函数,您可以执行以下操作:

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
}

【讨论】:

    【解决方案2】:

    从上面看,您需要使用某种方法(反射是一种方法)创建动态创建的 dll 中定义的类的实例。将这些对象转换为您的基类类型,然后您应该能够执行基类的方法。

    在我看来更有趣的是:当你执行一个方法时,你将如何定义正确的结果是什么?我会说您的 QA 工程师还需要指定预期的单元测试结果。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-21
      • 2015-05-04
      • 2010-11-14
      • 2012-10-20
      • 1970-01-01
      • 2010-09-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多