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

spring-boot - @SpringBootTest 不会自动装配 JavaMailSender 并引发错误

我在这里做错了什么?我的理解是 Spring 应该按照其自动装配 EventRepository 的方式自动装配 JavaMailSender。有什么指导吗?

application.properties 和 application-test.properties


我的实现类:如果我运行我的应用程序,这很好用

我的集成测试类:能够自动装配 EventRepository 但不能使用 JavaMailSender。

错误:

0 投票
1 回答
1159 浏览

spring-mvc - SpringBoot1.4-Unable to find@SpringBootConfiguration,use @ContextConfiguration/ @SpringBootTest(class) in test error when I run IntegrationTest

我在 SpringBoot 1.4 中的控制器测试之一上面临集成测试问题。下面的片段将清楚地展示项目结构:

类 ExchangeControllerIT :

下面的抽象类:

AbstractSpringIT 类:

我是 SpringBoot 和测试新手,帮我找出原因和可能的解决方案

StackTrace 用于上述错误:

0 投票
4 回答
14063 浏览

spring - 如何以编程方式为任何环境设置活动配置文件?

我想为任何环境设置活动配置文件主机依赖,并且找不到与环境无关的挂钩。

以下工厂将在构建应用程序上下文之前设置活动配置文件。

/META-INF/spring.factories

MyApplicationContextInitializer.java

如果此示例由 JUnit 在模拟环境中执行...

*测试.java

...将记录以下内容。

但配置文件myHost未激活,默认配置文件将在 JUnit 的上下文中使用!

使用 VM 参数作为 Java 应用程序和 JUnit 的测试有效......

我使用 war 打包的 spring-boot-starter-web 应用程序,并以编程方式设置配置文件并在任何环境中使用

  • Java 应用程序
  • JUnit
  • 小服务容器

如何以编程方式为任何环境设置配置文件?

我不想使用 VM 参数或环境变量,因为配置文件应由当前主机名设置。

0 投票
1 回答
564 浏览

spring-boot - SpringBoot 测试 ContextConfiguration 没有横幅

我正在编写一个集成测试框架,在我的父测试类中,我有以下内容:

这给了我很大的灵活性,但是,我注意到我的自定义banner.txt文件不再被打印出来,我的 application.properties 文件(它设置spring.output.ansi.enabled=ALWAYS和一些 maven 过滤的应用程序变量)也不会被读取。

除了一些真正的 leet figlet 生成的 ascii 艺术之外,它还打印了很多关于 JVM 和各种系统和环境属性的方便调试信息,所以我对远程环境(la Jenkins 和 Bamboo 或任何人的任意笔记本电脑)有了一个非常好的想法) 他们继续跑。

有没有办法让这个行为除了@ContextConfiguration(loader = AnnotationConfigContextLoader.class)

0 投票
1 回答
739 浏览

unit-testing - 使用 spring-boot-starter-test 和 cassandra 进行单元测试

我的 Spring Boot Web 应用程序通过 Datastax 客户端使用 Cassandra DB,连接发生如下:

当我运行单元测试时,spring boot 应用程序会尝试加载 CassandraManager Bean 并连接到不适合单元测试的 Cassandra DB,因为我不需要它。我收到以下错误:[localhost/127.0.0.1:9042] Cannot connect)

有没有办法避免加载这个 Cassandra Manager Bean 来运行我的 UT,因为它们不需要连接到数据库?这样做是个好习惯吗?

0 投票
3 回答
5696 浏览

spring-boot - @JdbcTest 检测类注解 @SpringBootApplication

我已经尝试过@JdbcTest以下项目结构。

DemoRepository.java(测试目标)

DemoRepositoryTests.java(测试类)

Application.java(类注解@SpringBootApplication

我表演过DemoRepositoryTests。然后出现以下错误。

重现项目是

是这种行为的规范吗?

前置条件

  • Spring Boot 1.5.2.RELEASE
0 投票
2 回答
21734 浏览

java - SpringApplicationConfiguration 无法在 Spring Boot 测试中解决

我使用 Spring Initializr 生成了一个 Spring Boot Web 应用程序,使用嵌入式 Tomcat + Thymeleaf 模板引擎,并将其打包为可执行 JAR 文件。

使用的技术:

Spring Boot 1.4.2.RELEASE、Spring 4.3.4.RELEASE、Thymeleaf 2.1.5.RELEASE、Tomcat 嵌入 8.5.6、Maven 3、Java 8。

现在我想使用类实现一个测试SpringApplicationConfiguration,所以我导入了

但即使我已经多次更新项目,我也会收到此错误

我还尝试通过右键单击 Eclipse 中的 pom.xml 和 'Maven Add Dependency' 添加依赖项,

mvn clean dependency:tree 依赖是存在的,但是做mvn clean compilemvn dependency:purge-local-repository 我得到了package org.springframework.test.annotation does not exist

0 投票
0 回答
71 浏览

spring-boot - 自动配置的测试作为集成测试

我有一个想自动测试的 Spring Boot 应用程序。

我已经编写了一个类似here@DataJpaTest的单元测试,它运行良好,但是由于必须启动 spring,它大大减慢了构建过程。

我想使用 Maven 故障安全插件将这些测试作为集成测试运行,但我可以弄清楚如何做到这一点。如果我重命名测试以使它们匹配*IT.java,故障安全会尝试运行它们,但是 spring 没有启动,并且我得到java.lang.NoClassDefFoundError注入的存储库的错误。

将 Spring Boot 测试作为集成测试运行的最佳方法是什么?

3 月 18 日更新: 依赖于 spring-boot-starter-test:

以及以下插件配置:

集成测试使用正确执行mvn failsafe:integration-test。但是,我希望在我这样做时运行测试mvn install,所以我将插件配置更新为:

现在,当我使用 运行测试时,spring 框架没有启动mvn verify,所以我得到java.lang.NoClassDefFoundError了我试图注入和测试的 JpaRepository。

0 投票
1 回答
918 浏览

java - How do I know if Mock in Spring boot is being used or not?

I am testing a service class which uses a Dao layer under it.

In the above program when I write @MockBean, the test throws a NullPointerException, but when I write @Mock the test executes successfully. I think the appDao being called is the actual one defined in appService and accessing the database. This is because the time taken by the test is around 200ms and usual test cases for other applications is 60ms-100ms. But I am not sure because other cases where DAO really access data takes 400ms to 500ms.

How do I know mock is actually working and when appService calls the appDao method from inside it is actually the mock. Is there any programmatical way to verify this.

P.S. If @Mock works in this scenario what is @MockBean is useful for in spring boot.

0 投票
1 回答
2642 浏览

spring - 你能让 Spring Boot JUnit 测试使用相同的服务器吗?

我有一些 Spring Boot JUnit 测试需要较长时间的服务器启动(我正在 JPA 中加载一个复杂的域)。我已将它们放入测试套件中,但每次测试都会启动一个新服务器。

是否可以将它们设置为服务器只启动一次并且每个测试都加载到它上面并运行,就好像服务器是由测试本身启动的一样?