今天看了一下Junit测试的,使用了@RunWith和@ContextConfiguration写了下面这段代码,然后 一直报空指针异常。
一开始的代码
@RunWith(SpringJUnit4ClassRunner.class) //使用junit4进行测试
@ContextConfiguration(locations = {"classpath:applicationContext.xml"}) //加载配置文件
public class UesrDaoTest {
@Resource
private UserDao userDao;
@Test
public void test() {
//下面注释代码 手动取 可以起作用
// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// UserDao userDao=(UserDao) applicationContext.getBean("userDao");
List<User> list = userDao.findAll();
list.forEach(user -> {
System.out.println(user.getName()+"我成功啦 ");
});
}
}
UserDao 用@Resource 注解,运行后结果
虽然,上面手动取得代码可以完美运行,但总感觉 这样逼格不太高。
上网上搜索一番,百度无果,后来在stackoverflow看见一个类似的。
修改代码 试一下,完全ok
@RunWith(SpringJUnit4ClassRunner.class) //使用junit4进行测试
@ContextConfiguration(locations = {"classpath:applicationContext.xml"}) //加载配置文件
public class UesrDaoTest {
//注意 这个注解
@Autowired
private UserDao userDao;
@Test
public void test() {
//下面注释代码 可以起作用
// ApplicationContext applicationContext = new ClassPathXmlApplicationContext("applicationContext.xml");
// UserDao userDao=(UserDao) applicationContext.getBean("userDao");
List<User> list = userDao.findAll();
list.forEach(user -> {
System.out.println(user.getName()+"我成功啦 ");
});
}
}
记得使用@RunWith和@ContextConfiguration 时候,字段要使用@Autowired