当前位置: 首页 > 知识库问答 >
问题:

如何测试Spring@计划

林正平
2023-03-14

如何在spring boot应用程序中测试计划的作业任务?

 package com.myco.tasks;

 public class MyTask {
     @Scheduled(fixedRate=1000)
     public void work() {
         // task execution logic
     }
 }

共有3个答案

逑彬炳
2023-03-14

这通常很难。您可以考虑在测试期间加载Spring上下文并从中伪造一些bean,以便能够验证计划的调用。

我在Github repo中有这样的例子。有一个使用所述方法测试的简单计划示例

焦驰
2023-03-14

我的问题是:“你想考什么?

如果您的答案是“我想知道Spring在我希望的时候运行我的计划任务”,那么您正在测试Spring,而不是您的代码。这不是您需要单元测试的东西。

如果您的回答是“我想知道我是否正确配置了任务”,那么请编写一个包含经常运行的任务的测试应用程序,并验证该任务是否在您预期的运行时间运行。这不是单元测试,但将表明您知道如何正确配置任务。

如果答案是“我想知道我写的任务功能正确”,那么你需要单元测试任务方法。在你的例子中,你想单元测试work()方法。通过编写一个直接调用你的任务方法(work())的单元测试来做到这一点。例如,

public class TestMyTask
{
  @InjectMocks
  private MyTask classToTest;

  // Declare any mocks you need.
  @Mock
  private Blammy mockBlammy;

  @Before
  public void preTestSetup()
  {
    MockitoAnnotations.initMocks(this);

    ... any other setup you need.
  }

  @Test
  public void work_success()
  {
    ... setup for the test.


    classToTest.work();


    .. asserts to verify that the work method functioned correctly.
  }
习哲彦
2023-03-14

如果我们假设您的作业在很短的时间间隔内运行,您真的希望测试等待作业执行,并且您只想测试是否调用了作业,那么您可以使用以下解决方案:

向类路径添加等待性:

<dependency>
    <groupId>org.awaitility</groupId>
    <artifactId>awaitility</artifactId>
    <version>3.1.0</version>
    <scope>test</scope>
</dependency>

写入测试类似于:

@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {

    @SpyBean
    private MyTask myTask;

    @Test
    public void jobRuns() {
        await().atMost(Duration.FIVE_SECONDS)
               .untilAsserted(() -> verify(myTask, times(1)).work());
    }
}
 类似资料:
  • 主要内容:测试计划的类型,如何编写测试计划,测试计划指南测试计划是描述软件测试领域和活动的详细文档。它概述了测试策略,目标,测试计划,所需资源(人力资源,软件和硬件),测试评估和测试可交付成果。 测试计划是每个软件测试的基础。这是最重要的活动,可确保以适当的顺序提供所有计划活动清单。 测试计划是用于将软件测试活动作为定义的过程进行的模板,该过程由测试经理完全监视和控制。 测试计划的类型 测试计划有三种类型 主测试计划 阶段测试计划 测试特定类型的测试计

  • 我试图为使用Spring Data REST构建的REST API设置单元测试。我有这样一个存储库: 我的测试看起来是这样的: 最后,日志 编辑:beerRepositoryMock 谢谢

  • 抱歉,这似乎是一个无用的行为,但我们有没有办法在Spring Boot(1.3.8.RELEASE)的应用程序上进行junit测试。java这个类除了启动Spring Boot应用程序之外什么都不做? 如下所示: 也许我可以尝试捕捉异常?但我还可以测试什么,以便JUnit测试SpringApplication呢。run()?任何例子都值得赞赏。谢谢大家!

  • 主要内容:测试计划注意事项 -可以将测试计划可视化为用于运行测试的JMeter脚本。 测试计划由测试元素组成,例如线程组,逻辑控制器,样本生成控制器,监听器,定时器,断言和配置元素。 测试计划包含执行脚本的所有步骤。 测试计划中包含的所有内容都按照从上到下的顺序执行,或者按照测试计划中定义的顺序执行。 下图给出了测试计划的目录级别。 测试计划注意事项 - 在运行整个测试计划之前,应保存测试计划。 JMeter文件或测试计划以扩

  • 本文向大家介绍详解Spring MVC如何测试Controller(使用springmvc mock测试),包括了详解Spring MVC如何测试Controller(使用springmvc mock测试)的使用技巧和注意事项,需要的朋友参考一下 在springmvc中一般的测试用例都是测试service层,今天我来演示下如何使用springmvc mock直接测试controller层代码。 1

  • 我需要测试使用@ConfigurationProperties bean的自动配置类。我正在使用中记录的ApplicationContextRunnerhttps://docs.spring.io/spring-boot/docs/current/reference/html/spring-boot-features.html#boot-具有测试自动配置功能,可以加快测试速度,避免在每个变体之间启