问题标签 [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 投票
1 回答
560 浏览

java - Vaadin 最新版本中的树组件不起作用

我尝试在我的 maven 项目中使用带有最新版本 Vaadin 的Tree() 方法和 spring-boot 创建一个下拉简单菜单,但我无法导入正确的包。

我的 pom.xml 文件中只有这些依赖项:

这是错误: 在此处输入图像描述

我应该怎么做才能在最新版本的 Vaadin 上使用 Tree() 并解决此错误?

0 投票
1 回答
458 浏览

maven - 用jar共享常见的Springboot集成测试?

我可以有一个包含 Springboot 集成测试的 jar 并在其他模块中使用这个 jar 来执行常见的集成测试吗?

0 投票
2 回答
1977 浏览

spring - Spring boot @SpyBean 导致测试套件出错可能是由于上下文未重置的问题

我对弹簧集成测试有疑问。

行为:

  • 当我单独运行下面的测试时,它是成功的。

  • 但是,当所有测试都运行时,其中许多测试包括下面的测试都是错误的。

  • 当我忽略下面的测试并运行所有测试时,一切都成功了。

我没有包含错误堆栈跟踪,因为它与我们的业务逻辑高度相关,我怀疑该错误与我对 spring boot test 的使用有关@SpyBean

这是测试:

请注意,这DataKeyStoreTokenTools.

正如我上面所说,我怀疑测试正在互相踩踏,并且我@SpyBean在其他测试类上以某种方式泄漏......

我的问题是如何确保此测试不会踩到其他测试?我试过@DirtiesContext注释无济于事......

另外让我感到困惑的@SpyBean是已经重置(根据文档/javadoc)。

有人可以帮忙吗?

编辑:使用我的 IDE 调试测试表明TokenTools所有测试仅实例化两次:一次在测试初始化​​时,第二次用于@SpyBean为上面的测试创建。在上述测试之后运行的其余测试使用第二个实例,即@SpyBean实例......

0 投票
1 回答
455 浏览

spring-test - 如何确保 @SpyBean 仅用于给定的测试,而不是由其他人使用

我希望 a@SpyBean仅由一个测试使用,而不被其他测试使用。我使用弹簧靴 1.4.4

我试图依赖配置。我希望 spy bean 仅供RegenerateTokenOnCollisionIT.

这是我尝试过的:

这是BaseApplicationTest课程:

BaseTest班级:

当然,我希望将上述Config类添加到现有的配置BaseApplicationTestBaseTest类中,但不要完全替换它们。

有人可以帮忙吗?

0 投票
1 回答
2093 浏览

spring-boot - 从 spring boot 1.3.8.RELEASE 迁移到 1.5.2.RELEASE - Neo4jDataAutoConfiguration 覆盖默认 sessionFactory

我有一个工作的 Spring Boot 应用程序,我正在尝试从 Spring Boot 1.3.8.RELEASE 迁移到 1.5.2.RELEASE。在我工作的 1.3.8.RELEASE 轨道中,我已经在使用休眠 5,即我在 y pom 中有以下依赖项

对于 Spring boot 1.5,这不是必需的,因此我将其更改为默认的 hibernate 5 依赖项,即 hibernate-core 并删除了版本声明。

但是我不知道为什么我的测试说:

我肯定已经配置了会话工厂

这是我如何开始我的 spring boot 1.5.2 测试:

由于某种原因,Spring boot 1.5 找不到我的会话工厂。但为什么?我是否使用了错误的依赖项?我已将 Hibernate5 会话工厂和事务管理器配置为 bean。

这是我的pom的一部分:

这是我如何启动我的应用程序

2017 年 3 月 29 日补充

在分析了启动配置后,我发现了这一行:

我不明白为什么Neo4jDataAutoConfiguration.class要覆盖我的自定义persistenceConfigDevelopmentbean。

此外,如果我在我的主类上删除@EnableAutoConfigurationand n然后应用程序启动并且正确的会话工厂被成功实例化,但是由于找不到 bean 而失败,但这是预期的,因为通常会处理这些 bean。@SpringBootApplicatioApplicationInternalResourceViewResolver@EnableAutoConfiguration

0 投票
1 回答
1006 浏览

java - 在测试中自发启动弹簧启动上下文

在深入了解 spring TestContext 配置期间,我遇到了 spring-boot-test 问题。

示例项目:github示例项目

我有三个带有一些 bean 的 Spring 配置(Config1- 重量级配置,我需要缓存它)

@ContextHierarchy在上下文中用于单独的配置,并且我希望 Config1 只会加载一次。(使用 @ContextHierarchy 因为我在 spring-boot-test 中没有找到类似物)

完整代码:

如果我运行测试,Config1 真的被缓存了!但是,我看到以下内容:

两次和

只有一次。在我看来,这是可能的,因为ConfigTest1已经缓存为 TestContext (它发生了,因为ConfigTest1ConfigTest2包含在同一个包中)

这意味着 spring 启动了我的 spring 上下文三遍!为什么?在日志中看到 spring boot logo 三次:

你对这种行为是什么意思?它是错误还是功能?也许我做错了什么?

更新1:

非常感谢。但是,如果我在两个测试类中以不同的顺序在 @SpringBootTest 中设置属性(或类) - 将不会缓存任何配置:(

如果没有属性 - config1 真的会被缓存!在这种情况下——没有缓存

0 投票
0 回答
177 浏览

katharsis - 使用 SpringBootTest 的 Katharsis

我遇到了一个有趣的问题,当我尝试在 SpringBootTest 下调用 Katharsis 公开的 API 时,找不到它们。我可以使用相同的方法连接到 Spring MVC API,但 Kartharsis 端点在测试中返回 HTTP 404。我能够连接到 Kartharsis 端点,同时通过外部进程进行连接,例如通过浏览器调用相同的进程。

我尝试了多种解决方案,用 RestTemplate 或 OkHTTP 替换 Spring TestRestTemplate 都遇到了同样的问题。

这是我的代码片段:

0 投票
1 回答
1799 浏览

java - 阻止 Spring Boot 测试点击 SpringBootApplication 类的@PostContruct

我有一个 SpringBootApplication 类,它有一个@PostConstruct类似的方法(它初始化数据库连接的类型):

我也在使用extend这个基类的 Spring Boot 测试:

我的测试在tests/我的源代码下src/

不幸的是,有些情况beforeTest()会在之前执行@PostConstuct,有些情况会在之后执行。有没有办法让我的测试在@SprinbBootTest不进入/构建SpringBootApp类的情况下运行?

谢谢!

0 投票
0 回答
71 浏览

spring-boot - 单元测试期间未加载 Bean 变量

我正在尝试在 Spring Boot 中测试一些 dao 代码。这是我正在测试的课程:

变量 sql 正在从 bean xml 加载:

这是我的测试课:

每当我尝试运行测试时,它都会在从 bean xml 加载 sql var 时抛出 NPE。我尝试在测试中的 dao 上添加 @ContextConfiguration 或只是 @Autowired 但它不起作用。另外我如何在测试中验证它是否加载了一个值?感谢你的帮助。

0 投票
1 回答
2574 浏览

dependency-injection - 依赖注入在 Spring Boot 测试中不起作用,但在正常开发中起作用

我开始开发经典的 Spring Boot MVC 应用程序。我使用依赖注入(使用@Service@Autowired注释)没有任何问题。

当我尝试使用依赖注入运行一些集成测试时,我从 Junit 收到以下错误消息:

org.springframework.beans.factory.UnsatisfiedDependencyException:创建名为“hu.bookandwalk.RepositoryTests”的bean时出错:通过字段“userService”表示的依赖关系不满足;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“hu.bookandwalk.services.UserService”类型的合格 bean 可用:预计至少有 1 个有资格作为自动装配候选者的 bean。依赖注解:{@org.springframework.beans.factory.annotation.Autowired(required=true)}

测试代码的相关部分:

hu.bookandwalk.services包中,我有一个UserService没有注释的接口和一个UserServiceImpl@Service.

我不明白 DI 是否适用于运行我的应用程序,而不是为什么它在测试中不起作用。正如错误消息所说,spring boot 不知何故没有发现我的带注释的实现类。

测试与我的应用程序类位于同一个包中:我的hu.bookandwalk 所有服务、存储库、域都位于以下:hu.bookandwalk.services, hu.bookandwalk.domain, ...

知道我想念什么样的注释来让测试类被userServiceImpl发现吗?