我过去也问过类似的问题,但我们把这件事放在一边,我们又回到了问题上。我们试图实现它以在动态创建的 dll 上运行单元测试。
我们有一些 API 供 QA 工程师将脚本插入到我们的应用程序中。QA 工程师在我们的应用程序编辑器中编写一些代码,然后在运行时编译代码,并在磁盘上保存为程序集。
我们希望能够在这个动态创建的程序集上运行一组测试。我们正在强迫我们的 QA 团队从一些基类继承并覆盖一些方法,这些是我们想要测试的方法......
你会如何暗示这一点?任何想法都会有所帮助。谢谢。
我过去也问过类似的问题,但我们把这件事放在一边,我们又回到了问题上。我们试图实现它以在动态创建的 dll 上运行单元测试。
我们有一些 API 供 QA 工程师将脚本插入到我们的应用程序中。QA 工程师在我们的应用程序编辑器中编写一些代码,然后在运行时编译代码,并在磁盘上保存为程序集。
我们希望能够在这个动态创建的程序集上运行一组测试。我们正在强迫我们的 QA 团队从一些基类继承并覆盖一些方法,这些是我们想要测试的方法......
你会如何暗示这一点?任何想法都会有所帮助。谢谢。
您必须检查动态程序集中的类型并找到从您的基类派生的具体类型。假设它们都有无参数构造函数,您可以执行以下操作:
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
}
从上面看,您需要使用某种方法(反射是一种方法)创建在动态创建的 dll 中定义的类的实例。将这些对象转换为您的基类类型,然后您应该能够执行基类的方法。
在我看来,更有趣的是:当你执行一个方法时,你将如何定义正确的结果是什么?我会说您的 QA 工程师还需要指定预期的单元测试结果。