java 中的单元测试调度程序作业

Unit Testing Scheduler job in java

我们的应用程序中有一个基于 cron 的作业。

作业class如下:

       public class DailyUpdate implements Job {

        public void execute(JobExecutionContext context) throws JobExecutionException {
                SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);

testMethod();

}
        private void testMethod()
        {
System.out.pritnln("Executed From scheduler");
        }
        }

我们应该如何编写单元测试用例来测试方法 测试方法()

我不能在没有调度程序的情况下直接调用 testMethod,因为它是私有的。关于如何为调度程序编写单元测试用例的任何建议

为了编写测试,您需要具有预期的行为,因此测试什么都不做的方法没有意义。

现在解决你的主要问题。如果您有一些遗留应用程序,并且不允许更改方法的可见性,那么测试私有方法的最佳方法是使用 reflection

所以你可以使用下面的模式

Method testMethod = DailyUpdate.getDeclaredMethod(testMethod, argClasses);
testMethod .setAccessible(true);
return testMethod.invoke(targetObject, argObjects);

另见这个问题how to test a class that has private methods fields or inner classes

如果有机会,我建议您使用 PowerMock(而不是自己编写代码)。 这里有一个 link 解释如何使用它:How to mock private method for testing using PowerMock?