Spring和Junit4组合进行Spring测试报错踩坑

在Spring项目中,不要简单地用Juint测试啦,Spring结合Junit可以更好的对Spring项目进行测试

package chapter2;


import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * @ClassName CDPlayerTest
 * @Description TODO
 * @Author 王海峰
 * @Date 2019/6/9 14:25
 * @Version 1.0
 */
@ContextConfiguration(classes = CDPlayerConfig.class)
//告诉该类需要在CDPlayerConfig中加载配置
@RunWith(SpringJUnit4ClassRunner.class)
public class CDPlayerTest {
    @Autowired
    private CompactDisc compactDisc;
    @Test
   public void cdShouldNotBeNull() {
        compactDisc.play();
    }
}

具体的用法本文不赘述,主要讲在应用的过程中踩到的坑。

坑1

如果想要结合Junit和Spring进行测试,必须保证Junit的版本在4.12以及4.12之上

坑2

你以为只要保证了Junit的版本正确就结束了嘛?没有的,在Junit4.11及以上的版本中,Jar包中不再包含hamcrest啦,如果应用Junit和Spring进行测试,会报错,错误如下:java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
因此解决办法是应该单独引入hamcrest的jar包,但是hamcrest的jar包版本不能随意,比如引入2.1版本的jar包就无效,还是报错,正确的版本是1.3,至于为什么我也不知道。

终极解决办法

因此想要在Spring中应用Juint测试,最终的方法就是在项目中引入Junit 4.12以上版本的Junit jar包,同时引入hamcrest 1.3版本的jar包
Junit-4.12+hamcrest-all-1.3

image.png

你可能感兴趣的:(Spring和Junit4组合进行Spring测试报错踩坑)