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

标签 java junit quartz-scheduler job-scheduling

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

工作类别如下:

       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,因为它是私有(private)的。.有关如何为调度程序编写单元测试用例的任何建议

最佳答案

为了编写测试,您需要有预期的行为,因此测试不执行任何操作的方法是没有意义的。

现在解决您的主要问题。如果您有某种遗留应用程序,并且不允许更改方法的可见性,则测试私有(private)方法的最佳方法是使用 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

关于java - java 中的单元测试调度程序作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35728587/

相关文章:

java - Spring Autowiring 仅扫描测试文件

java - 使 Spring Quartz Job Scheduler 在用户操作上运行

Java - 使用 binarySearch 查找数组中特定元素的出现次数,无需 If

java - 使用UiBinder时是否需要GWT SafeHtml?

java - Xcode 8 Jenkins JUnit 错误 : test report no report files found

java - 我应该使用 Quartz XML 作业文件还是使用代码配置作业

java - 处理 Quartz 作业异常,以便它运行下一个正常轮次,而不会立即重新触发或丢弃

java - 如何在android中用java显示即将到来的生日?

java - 当数据库中没有条目时, if (dataSnapshot.getValue() == null) 返回 true,但在完成 "if"部分后也运行 else 部分

java - 如何使用具有多个其他依赖项(服务和存储库)的模拟存储库来测试服务?