SpringJUnit4ClassRunner 和 SpringRunner 有啥区别

Posted

技术标签:

【中文标题】SpringJUnit4ClassRunner 和 SpringRunner 有啥区别【英文标题】:What is the difference between SpringJUnit4ClassRunner and SpringRunnerSpringJUnit4ClassRunner 和 SpringRunner 有什么区别 【发布时间】:2018-05-06 21:21:46 【问题描述】:

每当我看到一篇与 Spring 测试相关的博文时,我都会看到这些类中的任何一个,但不明白真正的区别:

@RunWith(SpringRunner.class)
@RunWith(SpringJUnit4ClassRunner.class)

【问题讨论】:

【参考方案1】:

@RunWith(SpringRunner.class) 告诉 JUnit 使用 Spring 的测试支持运行。 SpringRunnerSpringJUnit4ClassRunner 的新名称,只是看起来更容易一些。

SpringRunner 仅适用于 spring-test 4.3。

SpringRunner 类扩展 SpringJUnit4ClassRunner

Source code 中的SpringRunner

package org.springframework.test.context.junit4;

import org.junit.runners.model.InitializationError;

public final class SpringRunner extends SpringJUnit4ClassRunner 

    public SpringRunner(Class<?> clazz) throws InitializationError 
        super(clazz);
    


【讨论】:

这增加了更多信息以了解SpringRunnerSpringJUnit4ClassRunner之间的详细关系。【参考方案2】:

没有区别,来自javadoc:

SpringRunner 是 SpringJUnit4ClassRunner 的别名。

参考:https://docs.spring.io/spring/docs/4.3.0.RC2_to_4.3.0.RELEASE/Spring%20Framework%204.3.0.RELEASE/org/springframework/test/context/junit4/SpringRunner.html

【讨论】:

以上是关于SpringJUnit4ClassRunner 和 SpringRunner 有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

Springboot单元测试:SpringRunner 和 SpringJUnit4ClassRunner使用

带有@RunWith(SpringJUnit4ClassRunner.class) 的配置文件

TestNG 是不是有像 SpringJUnit4ClassRunner 这样的跑步者

@RunWith(SpringRunner.class)和@RunWith(SpringJUnit4ClassRunner.class)的区别

@RunWith(SpringRunner.class)和@RunWith(SpringJUnit4ClassRunner.class)的区别

@RunWith(SpringJUnit4ClassRunner.class)报错