Spring 整合 Junit 测试单元

Spring 整合 JUnit 测试单元

  • Junit 测试单元中,集成了一个 main 方法,该方法会判断当前测试类用哪些方法有 @Test 标注的方法。

  • Junit 不会管我们是否采用第三方框架。所以测试 Spring 框架开发的程序时,不会为我们加载配置和创建 IoC 容器。

  • 所以在测试单元中使用自动装配也不会注入成功。

基于以上原由,需要用 Spring 整合 Junit 测试单元。


步骤一: 导入 Spring 整合 JUnit 相关的 Jar包(或依赖)

  • spring-test-5.x.x.RELEASE.jar
  • junit-4.12.jar
  • 需要注意,spring5 版本要求 JUnit 的版本为 4.12 及以上。

<dependency>
    <groupId>junitgroupId>
    <artifactId>junitartifactId>
    <version>4.12version>
    <scope>testscope>
dependency>

<dependency>
    <groupId>org.springframeworkgroupId>
    <artifactId>spring-testartifactId>
    <version>5.2.8.RELEASEversion>
    <scope>testscope>
dependency>

步骤二: 替换测试单元并指定 Spring 注入方式

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:bean.xml")
//@ContextConfiguration(classes = SpringConfig.class)
public class TestDemo {
}
  • @Runwith 替换 Junit 框架运行器,由 Junit 框架提供。
  • 参数:
    • value ,新运行器的字节码文件,这里的 SpringJUnit4ClassRunner.class 是 Spring 提供的运行器。

  • @ContextConfiguration 用于告诉运行器 Spring IoC 的创建方式(xml 或 注解类),由 Spring 框架提供。
  • 参数:
    • locations ,用于指定 xml 配置文件的位置,加上 classpath: 前缀表示是类路径。
    • classes ,用于指定配置类的字节码文件。

如上配置好以后,就可以使用 @Autowire 注解进行自动注入了。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:bean.xml")
public class TestDemo {

    @Autowired
    UserService us;
    
    @Test
    public void testSave() {
        User u = new User();
        u.setId(2);
        u.setName("Jacks");
        u.setAge(22);
        us.saveUser(u);
    }
}

你可能感兴趣的:(SSM框架,Spring,test,Junit)