java - Amazon Kinesis + 集成测试

标签 java spring spring-boot integration-testing amazon-kinesis

我目前正在开发一系列需要与 Kinesis 集成的 Web 服务 - 实现已经完成,但是我们有一系列集成测试(我们的 Web 服务都使用 Spring Boot,所以我们使用我们的测试类上的 @WebIntegrationTest 注释来启动服务器的本地实例,然后使用 TestRestTemplate) 调用我们的资源,这些资源当前正在尝试连接到真正的运动。

虽然在普通单元测试中模拟对 Kinesis 库中方法的调用不是问题,但我们不能在集成测试中真正做到这一点,因为整个应用程序堆栈都与 Spring 连接在一起。对于其他一些事情(例如 OAuth2 和对我们其他 Web 服务的调用),我们已经能够使用 WireMock 来模拟实际的端点——我真正想做的是以这种方式使用 WireMock 来模拟对 AmazonKinesisClient 的调用,但我找不到有关如何执行此操作的任何建议。

另外,我看到一些 AWS 组件具有由第三方编写的测试库,允许您运行它的本地版本(例如:DynamoDbLocal),但无法为 Kinesis 找到这样的解决方案。

有人能给我一些关于如何使用 Kinesis 运行集成测试的建议吗?

最佳答案

现在给出解决方案可能已经太迟了,但我会补充一下我的团队在本地复制 AWS 资源所做的工作,因为我们使用了大量 Kinesis、DynamoDb、S3 和 cloudWatch。

我们围绕 Localstack -> https://github.com/localstack/localstack 创建了包装器,允许我们使用 docker-compose 将必要服务的本地实例作为 docker 容器启动。

一个典型的 docker-compose.yml 文件看起来像:

version: '2'
services:
  localstack:
    image: "localstack/localstack"
    environment:
      - SERVICES=kinesis,dynamodb,cloudwatch
    ports:
      - "4568"
      - "4569"
      - "4582"

然后在集成测试的设置阶段,我们的包装器启动 docker-compose up 并针对本地基础架构运行测试。 稍后在拆卸过程中,包装器会杀死容器。

关于java - Amazon Kinesis + 集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30777368/

相关文章:

java - 在 Android 应用程序中从 C++ 调用 Java 代码

java - 通过 Java 从 OpenDJ ldap 检索图片

java - GradlecompileTestJava 在 gradle clean 构建期间失败

java - 在 Web 应用程序中使用 log4j.xml 未生成日志文件

java - PDF 到字节数组,反之亦然

java - 如何使用 spring 集成 dsl 转换子流路由中的字符串

java - 使用 P 命名空间配置 Hibernate XML

java - 'nested'注释的Spring AOP切入点

java - 如何在spring boot starter测试中应用两个@RunWith

java - 从 thymeleaf 到 spring boot 的对象列表