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

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

  •  
  •   SZhan · 323 天前 · 1897 次点击
    这是一个创建于 323 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一直无法在项目中引入单元测试,以前使用其他框架时没遇过这个问题,现在使用的这套框架使用单元测试一直无法调用 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 注解指定启动类,也还是报这个错,麻烦大佬们帮帮忙,感激不尽!
    21 条回复    2023-05-12 10:50:16 +08:00
    BigR
        1
    BigR  
       323 天前
    版本冲突了吧
    wolfie
        2
    wolfie  
       323 天前
    感觉是版本问题 + 1

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

    大佬们,我排了一下 pom 文件,目前跟 junit 有关的冲突就是这些,项目是 springboot 2.2.5 对应的 junit 版本是 4.1.2 junit-jupiter 版本 5.5.2 跟官方一致的应该是
    SZhan
        17
    SZhan  
    OP
       322 天前
    @SZhan 。。。。发错图片了 不能删除回复的么!!完蛋
    SZhan
        18
    SZhan  
    OP
       322 天前
    SZhan
        19
    SZhan  
    OP
       322 天前
    大佬们,看了下有冲突的依赖,跟 junit 相关的就上面图里的一个,这个项目 boot 版本 2.2.5 ,junit 版本是 4.1.2 (后来尝试注掉只保留 junit-jupiter5 也不行) junit-jupiter 版本是 5.5.2 跟官方要求的依赖版本应该是没有冲突。
    这个框架是电信自研的,有问题就不太好解决。。。
    litchinn
        20
    litchinn  
       322 天前
    电信自研可还行
    我比较倾向 6 楼的说法,可能是由于引用了其他依赖包含不同 spring 版本导致的冲突
    idea 可以点开 maven 拓扑图搜索看看有没有不同版本,pom 文件里 Ctrl+Alt+Shift+U
    loccd
        21
    loccd  
       321 天前
    你把单元测试类的名字 Test,改成其他名字再试试,之前碰到过
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3233 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 14:20 · PVG 22:20 · LAX 07:20 · JFK 10:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.