问题标签 [spring-boot-test]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
246 浏览

rest - spring boot 集成测试 rest

我正在使用 spring boot 1.3.x 并尝试使用@WebIntegrationTest(randomPort=true)and设置一些集成测试TestRestTemplate

我最初遇到的几个问题 -

@Autowired TestRestTemplate testRestTemplate;没用,只好一起去TestRestTemplate testRestTemplate = new TestRestTemplate();

然后,@Value("${local.server.port}")也没有工作。它抛出了无法解决的异常。所以不得不这样做 - @Autowired Environment environment;

并且在@Test方法中试图从环境中获取端口,但我得到的只是null。所以那也行不通。

然后将端口更改为8080使用application.properties和仅使用@WebIntegrationTest并手动设置TestRestTemplate.

完成所有这些之后,我现在收到 Connection Refused 错误。

请帮忙。spring 文档没有帮助。

谢谢

0 投票
3 回答
26083 浏览

java - 解析已在 Spring 引导测试中使用的端口 DEFINED PORT

我有一个 Spring Boot 应用程序,它启动并执行一个类,该类侦听Application Ready 事件以调用外部服务以获取一些数据,然后使用该数据将一些规则推送到类路径以执行。对于本地测试,我们在应用程序中模拟了外部服务,该服务在应用程序启动期间运行良好。

问题是在测试应用程序时使用spring boot 测试注释和嵌入式码头容器运行它:

  • 随机端口
  • 定义端口

RANDOM PORT的情况下,在应用程序启动时,它会从定义端口的属性文件中获取模拟服务的 url,并且不知道嵌入式容器在哪里运行,因为它是随机获取的,因此无法给出响应.

DEFINED PORT的情况下,对于第一个测试用例文件,它成功运行,但是在拾取下一个文件的那一刻,它会失败,说端口已经在使用中。

测试用例在逻辑上划分为多个文件,需要在容器开始加载规则之前调用外部服务。

在使用定义的端口的情况下,我如何在测试文件之间共享嵌入式容器,或者重构我的应用程序代码,而不是在测试用例执行期间启动时获取随机端口。

任何帮助,将不胜感激。

应用程序启动代码:

测试代码注释:Test1

测试代码注释:Test2

0 投票
2 回答
1899 浏览

spring-boot - 无法在没有 HSQL 的情况下使用 JPA 运行 Spring Boot 测试运行器

我们正在尝试使用 AbstractRoutingDataSource、Mockito 为在 Spring Boot 中与 MyBatis 和 JPA 一起工作的应用程序编写测试用例;我们可以模拟 mybatis 代码。当我们集成 JPA 时,@SpringBootTest 试图访问它失败的 AbstractRoutingDataSource 数据源。

我们喜欢完全扩展使用 mockito,因此我们不想使用 HSQL/H2 数据库进行测试,这会增加我们插入所有所需数据的代码。请在下面找到错误日志,

我们试图模拟 AbstractRoutingDataSource 但它仍然抛出不同的错误。

0 投票
3 回答
4500 浏览

spring - @DataMongoTest 正在创建一个空的 MongoTemplate

我一直在尝试按照以下链接中的说明尝试添加自动配置的嵌入式 MongoDB 实例以进行 Cucumber 集成测试。这目前不起作用,因为我一直得到一个空的 MongoTemplate。我以为@DataMongoTest 会自动配置“@Autowired private MongoTemplate mongoTemplate;” 不是这样吗?下面是我的代码:

mongoTemplate.save(文档,集合);引发空指针异常。

pom.xml 文件:

http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-testing-spring-boot-applications-testing-autoconfigured-mongo-test

0 投票
1 回答
1040 浏览

spring-boot - Spring boot TestRestTemplate 不会对请求参数值进行 URL 解码

设置:

  • Spring Boot + SpringBootApplication;Spring Boot Test + TestRestTemplate 进行测试
  • 1 个端点,由方法 foo 处理。
  • 输入:1 个必需的请求参数(名为 q),必须在 URI 中进行 URL 编码。
  • 输出: (foo) 只返回字符串 (q)。foo 没有进行任何处理。

如果我启动服务器并使用 URL 编码值卷曲端点,我会在响应中获得非 URL 编码值。

如果我用 TestRestTemplate 查询完全相同的东西,foo 会得到一个 URL 编码的值来处理,并且在现实世界中事情开始出错......

com.example.App

com.example.TestApp

构建.gradle

服务器启动 + curl 的输出:

集成测试的日志输出:

知道怎么了?

0 投票
0 回答
244 浏览

java - 使用 Spring Boot 进行集成测试

出于好奇......我是 Spring Boot 的新手,我正在做一些集成测试,使用@SpringBootTest测试类的更新注释。

在常规代码(非测试代码)中,应用程序有一个自定义初始化程序,允许它加载外部 YAML 文件。

我想在测试中使用它,所以我有一个@ContextConfiguration覆盖初始化器的注释,并且可能因为我添加了这个注释,它搞砸了@SpringBootTest正在做的任何巫术,所以我需要添加 classes 参数来给它mainSpringApplication以便在测试期间应用程序上下文可用并且Autowired可以找到 bean。

我的问题是 - 提供ExamProcessorApplication.class(主 SpringBootApplication)与默认行为在自动发现期间 @ContextConfiguration的作用相同 - 或多或少?@SpringBootTest

我和一位同事正在讨论这个问题,我的想法是我的方式实际上是实例化主应用程序对象,但@SpringBootTest不是。只是试图了解引擎盖下发生了什么。

0 投票
3 回答
40127 浏览

maven - 找不到 SpringApplicationConfiguration:错误的 spring-boot-starter-test 内容?

在 Maven 中出现编译错误:

Maven repo 似乎存在 jar:

在此处输入图像描述

但是,该 jar 中没有任何已编译的类。只有 META-INF 目录:

在此处输入图像描述

这是设计使然吗?我在哪里可以得到包含SpringApplicationConfiguration类的 jar 来让 Maven 开心?

这是我的 pom.xml 的相关部分:

0 投票
1 回答
1475 浏览

spring-boot - 无法使用 Spring Boot Test 测试自定义存储库

我正在使用 Spring Boot 1.4.4。按照Spring Boot Test文章进行单元测试。当我有自定义存储库时,测试无法正常工作并因错误而失败UnsatisfiedDependencyException: Error creating bean with name 'com.jay.UserRepositoryTest': Unsatisfied dependency expressed through field 'userRepository';

这是我的代码,

但是我可以在没有任何配置更改的情况下使用 Spring Boot 测试以下 Dao,

当我使用时@SpringBootTest,我可以注射UserRepository,但不能TestEntityManager

0 投票
1 回答
290 浏览

spring - Spring Boot 黄瓜

我知道有一些类似的问题,但我对功能黄瓜文件的绑定步骤有一些问题。这是我的黄瓜跑者

注解

脚步

我总是得到“您可以使用下面的代码片段实现缺少的步骤:”。我使用 InteliJ IDEA,并在配置中设置了胶水。但仍然不起作用。你能帮助我吗?

0 投票
1 回答
2335 浏览

java - 使用多 Maven 项目设置测试 Spring Boot 应用程序的问题

我目前在 spring boot 和多 maven 项目结构方面遇到了一些问题。我正在使用 Spring Boot 4.3.1。

我的项目结构如下:

application模块依赖于library.

MyApplicationTest工作得很好,但是运行MyLibraryTest时,我失败了,出现以下错误:

我的第一个猜测是library需要依赖application,但这会导致循环。

这个问题有什么解决办法吗?如何正确构建我的应用程序?

非常感谢您的建议。

MyLibraryTest如下所示: