【发布时间】:2014-06-19 17:27:57
【问题描述】:
我想测试我的 Quartz.Net 作业的执行功能,它实现了 Quartz.IJob:
public void Execute(IJobExecutionContext context)
问题:如何创建一个新的 IJobExecutionContext 类实例。或者甚至不创建一个新的,而是从一个已经存在的计划作业中获取它。
目标是创建一个测试,例如:
[Test()]
public void Test()
{
IJobExecutionContext jobExecutionContext = ???; //get a defined JobExecutionContext somehow...
m_myJob.Execute(jobExecutionContext);
}
我发现的都是this related post 有同样的问题。他所说的只是“通过仅将 JobDataMap 对象传递给我的方法来解决:context.MergedJobDataMap”,我似乎无法重现。而另一个提议,即起订量的使用,目前对我来说是遥不可及的。虽然如果它真的是唯一的方法,我将专注于这个解决方案。不过我觉得还是先找个更简单的方法比较合理。
【问题讨论】:
-
你有实现
IJobExecutionContext接口的类吗?你可以使用它们。 -
不,我没有。这是 Quartz.Net 调用作业的主要执行的一种内部方式。
IJobExecutionContext有 17 种方法要实现。这就是为什么我认为从已经安排好的作业中“裁剪”现有作业会更简单。但即便如此,我似乎也无法完成。 -
如果适合你使用Quartz.Net的内部类而不是test doubles,你可以使用汇编属性InternalsVisibleToAttribute
标签: c# quartz.net