这几日学习Spring,在整合JUnit4的时候出现bug,经过几天终于解决掉了。
遇到bug时,解决过程中难免心烦意乱,心灰意冷,做什么都没信心,进而否定自己。可愈是压抑,解决后的喜悦也愈是深刻。
下面记录一下遇到的问题及解决办法:
异常反馈代码(部分)如下:
java.lang.ExceptionInInitializerError
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
import javax.annotation.Resource;
import org.junit.runner.RunWith;
import org.junit.Test;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.itheima.demo1.UserService;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class Demo2 {
@Resource(name="userService")
private UserService UserService;
@Test
public void run1(){
UserService.sayHell();
}
}
整个编译过程是没有任何报错的。对run1()进行JUnit Test后如图:
因为自己是按照黑马的教学视频进行学习,整个过程包括jar包严格一致,所以根本不知道问题在哪。这是jar包截图:
jar包对应的都是4.2.4,而且视频中也未出现问题,所以真的是捉急。(其实此时我已经能确定是test包出现了问题)怀疑是不是JDK不匹配的问题,所以把自己的JDK从1.6换到了1.8,但是问题依旧,此时排除了JDK版本原因,安心解决test.jar包问题。
在下图单击右键,选择Copy Trace
然后粘贴到记事本中,发现问题
把问题具体定位到SpringJUnit4ClassRunner ,而这个问题与包import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;相关,此时就已经完全可以定位到test.jar包上。
需要提升test.jar包版本
下面是操作:
然后打开计算机,进行粘贴,打开文件位置
下载一个更高级别的junit.jar,替换下图中的junit.jar
楼主用的是junit-4.12.jar,然后粘贴进去替换掉junit.jar
此时需要注意,替换进去的jar包应该和原jar包同名,不然程序依旧无法运行。
至此问题就已经全部解决掉。至于如何发现要把名字改为同名,可以继续往下看:
工程上右击–>Properties–>Java Build Path–>Libraries
missing即找不到,它是按照名字进行查找,所以把jar包名字换成原名。
以上就是解决问题全过程,大牛勿笑。