SZhan
V2EX  ›  Java

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

  •  
  •   SZhan · May 10, 2023 · 5805 views
    This topic created in 1273 days ago, the information mentioned may be changed or developed.
    一直无法在项目中引入单元测试,以前使用其他框架时没遇过这个问题,现在使用的这套框架使用单元测试一直无法调用 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 replies  •  2024-09-30 11:20:26 +08:00
    BigR
    BigR
    May 10, 2023
    1
    版本冲突了吧
    wolfie
    wolfie
    May 10, 2023
    2
    感觉是版本问题 + 1

    去掉 @RunWith ,Test 注解改用 org.junit.jupiter.api.Test 试试?
    SZhan
    SZhan
    OP
    May 10, 2023
    3
    感谢两位大佬回复 @lncywlc @wolfie 尝试去掉 @RunWith 改了 test 注解引的包,还是报一样的错误。版本冲突是什么意思呢,junit 版本是 4 的
    SZhan
    SZhan
    OP
    May 10, 2023
    4
    wolfie
    wolfie
    May 10, 2023
    5
    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
    LeegoYih
    May 10, 2023
    6
    跟 Junit 无关,大概率是其他依赖引入了不同版本的 Spring 导致冲突
    4lieS
    4lieS
    May 10, 2023❤️1
    7
    @SZhan 版本冲突就是比如有两个依赖 A 和 B ,他们自身同时又依赖了 C ,但是 A 依赖的是 C1.0.0 ,B 依赖的是 C2.0.0 。由于项目中最终只能使用一个依赖,这就会导致 A 或 B 其中一个编译或运行时可能会出现问题,最好还是要统一下版本。
    bugmakerxs
    bugmakerxs
    May 10, 2023
    8
    mvn dependency:tree 看看依赖项。
    SZhan
    SZhan
    OP
    May 10, 2023
    9
    感谢楼上各位老哥的指导,目前思路往依赖项冲突上排查,项目里面太多依赖,打算试试 maven-helper 插件辅助排查下
    BigR
    BigR
    May 10, 2023
    10
    @SZhan junit 的版本要和 springboot 的版本对应。同时需要排除一下其它依赖引入的 junit 依赖包。
    Kaiv2
    Kaiv2
    May 10, 2023
    11
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = XXXApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
    Kaiv2
    Kaiv2
    May 10, 2023
    12
    junit4 注解是这个 org.junit.Test
    MichaelGzy
    MichaelGzy
    May 11, 2023
    13
    3.0.5?
    SZhan
    SZhan
    OP
    May 11, 2023
    14
    @Kaiv2 我一开始 就是按您这么写的,结果报上面那样的错了。然后才换成了另一个 test 注解
    SZhan
    SZhan
    OP
    May 11, 2023
    15
    @MichaelGzy boot 版本么? springboot 是 2.2.5 的
    SZhan
    SZhan
    OP
    May 11, 2023
    16

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