问题标签 [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 回答
344 浏览

java - 使用 Spring Boot 1.4 从 Spring Boot 测试中排除 Spring Integration

我最近开始使用 Spring Boot 1.4 和新的 Spring Boot 测试功能。

我正在将 spring-boot-starter-integration 与 Spring Boot 1.4.2.RELEASE 一起使用,并尝试使用新版本来测试我的存储库@DataJpaTest

当我运行我的测试时,我得到一个关于没有合格 bean 的异常。有问题的 beanhandler用于我的集成 bean。

如何在 JPA 测试期间排除集成运行?

应用类:

测试类:

0 投票
2 回答
2751 浏览

unit-testing - @WithUserDetails 似乎不起作用

我有一个应用程序,我在其中使用 Spring Social Security 进行身份验证和授权。不幸的是,我在模拟 Spring Security 时遇到了一些问题。似乎它根本不起作用。

我有一个 REST 控制器,如果它应该返回的实体的标识符不可用,它会返回 404 Not Found。如果用户未登录,则任何页面都会重定向到我的应用程序的社交登录页面。

我在这里读到@WithUserDetails注释最适合我。

所以我的测试方法看起来像这样

但这似乎根本不起作用。看起来测试方法是用匿名用户执行的,因为我得到的状态是 200 OK。

我的测试类是这样注释的

有没有人在模拟 Spring Social 提供的 Spring Security 时遇到过这样的问题?

0 投票
0 回答
436 浏览

mysql - Spring Boot 测试:使用 XA 在多租户环境中使用 @Sql 准备数据库

Spring 应用程序是多租户的,并使用 Atomikos 作为分布式事务管理器。数据库服务器是 MySQl 5.7 的。

我无法获得我想通过@Sql.

我什至设置@Transactional(isolation = READ_UNCOMMITTED)了测试方法和被测服务方法。但我在测试中看不到这些数据:

被测服务:

我检查了添加的行在被 Spring 测试上下文插入后是否可见。确实如此。我设置调试断点org.springframework.jdbc.datasource.init.ScriptUtils.executeSqlScript 并执行选择请求

SELECT count(*) as c FROM materials_groups

并且与该连接一起计数确实是+1。

但是这个额外的行对于被测服务是不可见的:(

0 投票
1 回答
5968 浏览

java - 基于 Spring Boot 的测试中的上下文层次结构

我的 Spring Boot 应用程序是这样启动的:

配置类用@SpringBootApplication. 结果,我有一个根上下文和两个子 Web 上下文。

我想编写集成测试,我想在那里有相同的上下文层次结构。我至少想ChildFirstCtxConfig.class用他的父上下文( )测试第一个子上下文(用 配置ParentCtxConfig.class)。我怎样才能做到这一点?

目前我ApplicationContext在我的测试中自动接线,所以我可以检查它。我在测试中有这个类注释:

但这会产生单一的上下文,我想要父子层次结构。我假设我应该用@ContextHierarchy注释来注释我的测试。

将我的测试注释更改为此似乎与前面的示例完全相同:

但如果我想介绍@ContextHierarchy并有这样的东西:

由于在父上下文中定义的 bean 无法在子上下文中找到/自动装配,因此上下文未启动。设置loader = SpringBootContextLoader.class没有帮助。

示例代码:GitHub

0 投票
1 回答
10896 浏览

java - How to prevent spring boot from auto creating instance of bean 'entityManagerFactory' at startup?

I am working on a Spring boot application that uses Spring JPA with PostgreSQL. I am using @SpringBootTest(classes = <my package>.Application.class) to initialize my unit test for a controller class.

The problem is that this is causing the entityManagerFactory bean (and many other objects related to jpa, datasource, jdbc, etc.) to be created which is not needed for unit tests. Is there a way to prevent Spring from automatically creating these objects till they are actually used the first time?

I spent a lot of time trying to load up only the beans I need for my unit test but ran into many errors. I am relatively new to Spring and I am hoping someone else has run into this before...and can help. I can post code snippets if needed.

Update: I am not sure if I should edit or answer my own question...choosing to edit since I ended up changing my approach to unit tests. I added this to my test config class.

and I mocked out the service and repository classes.

0 投票
0 回答
692 浏览

spring - 用于 Web 应用程序的 Spring Boot 测试切片

我有一个带SpringBootApplication注释的类,它也扩展WebSecurityConfigurerAdapter到提供者网络安全。这个应用程序还有一个 JPA 层,我想单独测试它。

应用程序类大致看起来像

现在我有一个看起来大致像的存储库测试

但是,当我运行它时,我收到一个错误,指出需要连接 ObjectPostProcessor。虽然我可以理解原因,但尝试了解是否有任何解决方法/解决方案以避免必须@MockBeansWebSecurityConfigurerAdapter. 我得到的错误是

0 投票
2 回答
1074 浏览

java - 如何将 src/test/java bean 包含到任何Test.java 使用spring boot方式?

我在 src/test/java 下给出了这两个类

我阅读了文档,但仍有很多问题。当我单击“作为 Junit 测试运行”时,它会出现错误,因为无法自动装配我的 bean“示例”。我怎么说spring boot也要在src/test/java中寻找bean?我的第二个问题是我怎么说使用另一个 application.properties,专门用于测试?

0 投票
2 回答
3576 浏览

spring - WebApplicationContext 在春季启动测试中始终为空

我的测试课看起来像这样

在 setup 方法中,wac 始终为空。从 spring boot 文档中,@SpringBootTest(webEnvironment=WebEnvironment.MOCK)总是创建一个 mock WebapplicaitonContext

所以我希望它在上面的代码中自动装配,这不会发生。

有人可以告诉我如何webapplicationContext在这种情况下创建一个,以便它不像我的情况那样为空吗?

更新

我正在运行 spring boot 测试,从带有 springboot 注释的类中调用它们。

测试(springboottest)和调用类(springboot)应用程序都在同一个spring boot项目下src/main/java

我下面什么都没有src/main/test。我这样做是因为如果来自的类src/main/java想要调用测试类,那么它并不是真正的测试类。

现在,问题是我不能runWith(SpringRunner.class)在 springbootTest 类中使用。如果我这样做是为了得到一个模拟webApplicationContext,它会给我这个错误:

我不知道该怎么做。

0 投票
0 回答
914 浏览

java - DirtiesContext 没有在 Spring 单元测试中清除 ApplicationContext

我有一个名为 SomeBean 的类和两个为不同场景配置存根的测试。我正在使用 Spring Boot。

第二个测试应该在没有异常的情况下通过,因为我没有为抛出异常所做的存根。

DirtiesContext也不能正常工作。如果我删除Test2.java中的注释代码,我可以通过测试。我想通过使用类似于DirtiesContext.

我可能缺少一些基本的东西。有人可以指出我做错了什么。

测试1.java

Test2.java

0 投票
3 回答
937 浏览

maven - Neo4j 的 Spring Boot 集成测试失败

我是弹簧靴的新手。我使用 Spring Boot 1.5.1 GA 和 Neo4j 启动器。我尝试创建我的第一个集成测试,以确定我是否可以将新对象插入到图形数据库中。这是我的测试课:

PersistentTestContext 专门用于测试数据库操作。在这个类中,我设置了嵌入式驱动程序进行测试:

}

不幸的是,当我从我的 STS IDE 运行测试时,在验证测试之前我收到了以下错误消息:

当我创建我的项目时,我使用了 Spring Starter 项目模板。据我记得,除了 Spring Boot 放置的依赖项之外,我没有将任何其他依赖项放入我的 pom.xml 中。我只添加了一些属性,例如 thymeleaf 使用版本 3 而不是 2。您可以在此处查看我的 pom.xml:

当我检查传递依赖项时,我看到 neo4j-ogm-test 间接拉动了码头服务器 9.4.1。知道什么会导致这个问题吗?