调试器、@SpringBootTest 和 Gradle

Posted

技术标签:

【中文标题】调试器、@SpringBootTest 和 Gradle【英文标题】:Debugger, @SpringBootTest, and Gradle 【发布时间】:2019-11-29 20:29:19 【问题描述】:

我是 Spring Boot 和 Gradle 的新手,不知道如何暂停 JUnit 测试并使用调试器连接到它们。

我在命令行gradlew build 上调用自动化测试。我想要的是在它到达测试任务并等待调试器连接时暂停执行。

JUnit 测试类的注释如下:

@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("test")
@AutoConfigureMockMvc

我尝试将用于调试的 JVM 参数添加到 gradle.properties 文件中,但我仍然无法将其挂起,更不用说侦听调试器的端口了。我不确定要为您提供什么信息 - 在 cmets 中向我询问文件、代码或设置。

Gradle 5.5 Spring Boot 2.16 Java 11

【问题讨论】:

嗨 ahoffer,为什么不在 IDE 中以调试模式运行测试?你对通过 gradlew build 的终端有什么特殊要求吗? 当我使用 IntelliJ 运行测试时,所有测试都通过了。当我从命令行运行它们时,有六个测试失败了。我不知道为什么从命令行运行时会出现 Tomcat 异常。我想我也许可以调试它并找出原因。 也许这会有所帮助:***.com/questions/22760752/… 【参考方案1】:

@奥米德。谢谢你的链接。解决方法很简单。

更新:不要使用gradlew build。请改用test 任务。

gradlew test --debug-jvm

在 Gradle 5.5.1 文档中: https://docs.gradle.org/current/userguide/java_testing.html#sec:debugging_java_tests

【讨论】:

以上是关于调试器、@SpringBootTest 和 Gradle的主要内容,如果未能解决你的问题,请参考以下文章

Mybatis的mapper使用springbootTest报错Find why ‘xxxMapper‘ could be null

Mybatis的mapper使用springbootTest报错Find why ‘xxxMapper‘ could be null

SpringBootTest - 如何在测试级别断言上下文不加载和更改属性?

使用 SpringBootTest 和 Autowired 注解时 LogCaptor 无法捕获

@SpringBootTest 和 @Sql:脚本执行顺序和上下文初始化

带有 Kotlin、TestContainers 和外部配置的 SpringBootTest