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

如何在 AWS 上运行的 Spring Boot 应用程序上本地运行集成测试?

华星剑
2023-03-14

我正在开发一个在AWS上运行的Spring Boot应用程序。我已经安装了Spring Cloud AWS启动器,但是当我尝试在笔记本电脑上本地运行集成测试时,我遇到了这个错误。

创建名为“org . spring framework . cloud . AWS . context . support . io . resourceloaderbean postprocessor # 0”的bean时出错:设置构造函数参数时无法解析对bean“Amazon S3”的引用;嵌套异常为org . spring framework . beans . factory . beancreationexception:创建名为“amazonS3”的bean时出错:调用init方法失败;嵌套异常是Java . lang . illegalstateexception:没有可用的EC2元数据,因为应用程序没有在EC2环境中运行。只有当应用程序在EC2实例上运行时,区域检测才是可能的

有没有一种方法可以在没有AWS的情况下运行我的应用程序?仅用于本地集成测试。

共有2个答案

乜安志
2023-03-14

您可以为测试配置文件创建一个配置类,其中不包括与AWS相关的Spring自动配置类。例如:

import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;

import io.awspring.cloud.autoconfigure.context.ContextCredentialsAutoConfiguration;
import io.awspring.cloud.autoconfigure.context.ContextResourceLoaderAutoConfiguration;

@Configuration
@EnableAutoConfiguration(exclude= {ContextCredentialsAutoConfiguration.class,ContextResourceLoaderAutoConfiguration.class})
@Profile("test")
public class AwsTestConfiguration {

    
}
邰棋
2023-03-14

考虑添加使用外部API的类的虚假实现。您只能在测试配置文件中使用它们。例如:

@Component
@Profile("default")
public class FakePhotosUploader implements Photos {

  @Override
  public String uploadPhoto(byte[] bytes, String name, Integer receiptId) {
    return UUID.randomUUID().toString();
    //you can write here some implementation, suitable for your tests

  }
}

您可以在默认配置文件中关闭aws。

所以它不会去AWS。

只是不要将AmazonS3注入到默认配置文件中的beans中,这样就不会创建它。

希望我能正确理解你的问题。

 类似资料:
  • 我试图在AWS EMR上运行一个Spark应用程序。我遵循http://blogs.aws.amazon.com/bigdata/post/tx15ay5c50k70rv/installing-apache-spark-on-an-amazon-emr-cluster的说明 我从S3中加载fat-jar(通过执行“SBT Assembly”获得)和应用程序所需的输入文件。我在Spark-1.1.0

  • 我有几个繁重的Spring集成测试(是的,这不是最好的方法,我没有时间正确地模拟所有外部dep) 下面是测试的典型注释 由于以下原因,测试会定期失败: 这里有两个问题:1、让测试共存的正确方式是什么?我在surefire插件中设置了forkCount=0。好像有帮助 2.1. 在每次测试期间,我实际上不需要启动所有的

  • 我已经使用Appium和Java以及TestNG为Android应用程序编写了一些测试。我的测试在模拟器上本地运行良好,但当我将它们上传到设备场时,我的测试总是失败。我已经尽可能地简化了我的测试,但它仍然不起作用。目前,我尝试运行的测试会在打开应用程序时出现的提示中找到并单击“允许权限”按钮。代码: 观看Device Farm提供的视频,我可以看到它打开并立即关闭我的应用程序。它甚至没有像应该的那

  • 我用JDK 13制作了一个java应用程序。我用launch4j创建了一个exe文件。但是没有人可以运行它,因为每个人都有jre 1.8版本,而且它不会启动。。。我必须在安装中包含java jdk 13,并用它设置java_home?

  • 问题内容: 我正在使用yugabyte- db-1.3.0,并尝试按照其README.md中的说明在CentOS7上本地运行yugabyte电子商务示例应用程序yugastore,如下所示: 我收到错误,如下所示: 请帮助我解决问题。 更新1: 非常感谢Dorian先生 有一些弃用警告,因为我使用的是较旧的CentOS7。只需按以下步骤启动应用程序: 问题答案: 您使用的是YugabyteDB的非

  • 我的团队开发了一个kubernetes集群。我们已经使用< code>kubectl命令行对其进行了手动测试。这些测试用例涉及到,例如: < li >豆荚 < li >服务、负载平衡器等。 < li >部署 < li >水平窗格缩放 < li >回滚部署 < li >入口控制器 Helm-kubernetes的包装经理 < li >持久性卷和持久性卷声明。 < li>DNS 上述手动测试用例的链接