Spring Boot junit5 测试在本地工作(Windows)但不在 Jenkins(Linux)中
Posted
技术标签:
【中文标题】Spring Boot junit5 测试在本地工作(Windows)但不在 Jenkins(Linux)中【英文标题】:Spring Boot junit5 tests working locally (Windows) but not in Jenkins (Linux) 【发布时间】:2021-03-14 09:44:45 【问题描述】:我将在这里回答我自己的问题,以防它对其他人有用...
在更新到 Spring Boot 2.4.0(从 2.3.4)和 JUnit5(从 JUnit4)之后,我的单元测试在 Jenkins 上开始失败。奇怪的是他们在本地工作。
这是在 Jenkins 的错误日志中:
Neither @ContextConfiguration nor @ContextHierarchy found for test class [my.PackageName.controller.ControllerTest], using SpringBootContextLoader
为什么测试停止在 Jenkins 上运行,但在本地很好?
我在 SO 上找到了类似的问题/答案,但不是我的具体问题...(如果答案已经存在,请致歉)
【问题讨论】:
【参考方案1】:我花了太长时间才发现它,但关键是:
Neither @ContextConfiguration nor @ContextHierarchy found for test class [my.**PackageName**.controller.ControllerTest], using SpringBootContextLoader
PackageName
是驼峰式的。出于某种原因,很久以前,当我创建我的测试类时,我将它们放入包中:
package my.PackageName.controller;
解决方法是将其更改为:
package my.packagename.controller;
因为 Linux 文件系统区分大小写,而 Windows 则不。而且对依赖项的更新似乎改变了包在某处解析的方式。
【讨论】:
以上是关于Spring Boot junit5 测试在本地工作(Windows)但不在 Jenkins(Linux)中的主要内容,如果未能解决你的问题,请参考以下文章
使用 Spring Boot 和 JUnit5 在 Intellij 中终止所有测试
使用 JUnit5+Spring Security 测试 Spring Boot 控制器
如何在 Junit5 / spring boot 中命令执行控制器测试类?
Spring Boot 集成 JUnit5,更优雅单元测试!