V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SZhan
V2EX  ›  Java

请教一下, springboot 单元测试启动报错?

  •  
  •   SZhan · 2023-05-10 11:42:29 +08:00 · 2266 次点击
    这是一个创建于 561 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一直无法在项目中引入单元测试,以前使用其他框架时没遇过这个问题,现在使用的这套框架使用单元测试一直无法调用 bean 中的方法进行测试,报错信息:Caused by: java.lang.ClassCastException: org.springframework.core.env.StandardEnvironment cannot be cast to org.springframework.web.context.support.StandardServletEnvironment ,这个报错没搜到啥解决办法,想麻烦大佬们,是哪里配置错了,还是框架自身不支持的原因么
    https://imgur.com/1ISX7FV
    https://imgur.com/undefined

    PS: 尝试过 @SpringBootTest 注解指定启动类,也还是报这个错,麻烦大佬们帮帮忙,感激不尽!
    26 条回复    2024-09-30 11:20:26 +08:00
    BigR
        1
    BigR  
       2023-05-10 13:41:41 +08:00
    版本冲突了吧
    wolfie
        2
    wolfie  
       2023-05-10 13:53:41 +08:00
    感觉是版本问题 + 1

    去掉 @RunWith ,Test 注解改用 org.junit.jupiter.api.Test 试试?
    SZhan
        3
    SZhan  
    OP
       2023-05-10 14:34:47 +08:00
    感谢两位大佬回复 @lncywlc @wolfie 尝试去掉 @RunWith 改了 test 注解引的包,还是报一样的错误。版本冲突是什么意思呢,junit 版本是 4 的
    SZhan
        4
    SZhan  
    OP
       2023-05-10 14:36:14 +08:00
    wolfie
        5
    wolfie  
       2023-05-10 14:56:15 +08:00
    dependencyManagement 里面用 org.springframework.boot:spring-boot-dependencies:${spring-boot-version}

    或者 手动找 pom 文件
    https://repo1.maven.org/maven2/org/springframework/boot/spring-boot-dependencies/2.6.7/

    以 boot 为基准,统一一下组件版本看看。
    LeegoYih
        6
    LeegoYih  
       2023-05-10 15:00:30 +08:00
    跟 Junit 无关,大概率是其他依赖引入了不同版本的 Spring 导致冲突
    4lieS
        7
    4lieS  
       2023-05-10 16:07:54 +08:00   ❤️ 1
    @SZhan 版本冲突就是比如有两个依赖 A 和 B ,他们自身同时又依赖了 C ,但是 A 依赖的是 C1.0.0 ,B 依赖的是 C2.0.0 。由于项目中最终只能使用一个依赖,这就会导致 A 或 B 其中一个编译或运行时可能会出现问题,最好还是要统一下版本。
    bugmakerxs
        8
    bugmakerxs  
       2023-05-10 16:21:48 +08:00
    mvn dependency:tree 看看依赖项。
    SZhan
        9
    SZhan  
    OP
       2023-05-10 16:54:55 +08:00
    感谢楼上各位老哥的指导,目前思路往依赖项冲突上排查,项目里面太多依赖,打算试试 maven-helper 插件辅助排查下
    BigR
        10
    BigR  
       2023-05-10 17:55:18 +08:00
    @SZhan junit 的版本要和 springboot 的版本对应。同时需要排除一下其它依赖引入的 junit 依赖包。
    Kaiv2
        11
    Kaiv2  
       2023-05-10 17:59:59 +08:00
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = XXXApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
    Kaiv2
        12
    Kaiv2  
       2023-05-10 18:01:50 +08:00
    junit4 注解是这个 org.junit.Test
    MichaelGzy
        13
    MichaelGzy  
       2023-05-11 08:45:45 +08:00
    3.0.5?
    SZhan
        14
    SZhan  
    OP
       2023-05-11 09:41:52 +08:00
    @Kaiv2 我一开始 就是按您这么写的,结果报上面那样的错了。然后才换成了另一个 test 注解
    SZhan
        15
    SZhan  
    OP
       2023-05-11 09:42:16 +08:00
    @MichaelGzy boot 版本么? springboot 是 2.2.5 的
    SZhan
        16
    SZhan  
    OP
       2023-05-11 09:47:35 +08:00

    大佬们,我排了一下 pom 文件,目前跟 junit 有关的冲突就是这些,项目是 springboot 2.2.5 对应的 junit 版本是 4.1.2 junit-jupiter 版本 5.5.2 跟官方一致的应该是
    SZhan
        17
    SZhan  
    OP
       2023-05-11 09:49:38 +08:00
    @SZhan 。。。。发错图片了 不能删除回复的么!!完蛋
    SZhan
        18
    SZhan  
    OP
       2023-05-11 09:50:24 +08:00
    SZhan
        19
    SZhan  
    OP
       2023-05-11 09:59:36 +08:00
    大佬们,看了下有冲突的依赖,跟 junit 相关的就上面图里的一个,这个项目 boot 版本 2.2.5 ,junit 版本是 4.1.2 (后来尝试注掉只保留 junit-jupiter5 也不行) junit-jupiter 版本是 5.5.2 跟官方要求的依赖版本应该是没有冲突。
    这个框架是电信自研的,有问题就不太好解决。。。
    litchinn
        20
    litchinn  
       2023-05-11 10:41:07 +08:00
    电信自研可还行
    我比较倾向 6 楼的说法,可能是由于引用了其他依赖包含不同 spring 版本导致的冲突
    idea 可以点开 maven 拓扑图搜索看看有没有不同版本,pom 文件里 Ctrl+Alt+Shift+U
    loccd
        21
    loccd  
       2023-05-12 10:50:16 +08:00
    你把单元测试类的名字 Test,改成其他名字再试试,之前碰到过
    hosty
        22
    hosty  
       68 天前
    老哥解决了嘛,今天也遇到了,nnd biyi 平台可真是一坨答辩
    SZhan
        23
    SZhan  
    OP
       64 天前
    @hosty 就是他们框架的 bug, 太恶心了。我潜水他们那个交流群很久,才看到他们发出来方案。你把这个文件加到 com.ctsi.ssdc.handle 下就行,它会覆盖到框架里的同名文件。https://drive.google.com/file/d/17z_cgvEfZ8P4B9YGHXw6EuvbyxGdAIYF/view?usp=sharing
    hosty
        24
    hosty  
       59 天前
    @SZhan 感谢老哥
    SZhan
        25
    SZhan  
    OP
       58 天前
    @hosty 保存了哈?我先撤链接了 公司查安全查的严,涉及源码泄露了
    hosty
        26
    hosty  
       52 天前
    @SZhan 保存过了,感谢!
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2630 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 15:33 · PVG 23:33 · LAX 07:33 · JFK 10:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.