单元测试service注解注入,会空指针异常但是用getBean方式则可以获取到service
因为注解是spring容器解析的,注解能够生效的话是需要spring容器启动的,就是web项目启动环境下使用的。
在junit里面测试,要想让Spring容器管理bean完成自动注入的话,可以使用Spring的junit测试工具注解。代码如下:
import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import org.springframework.test.context.transaction.TransactionConfiguration; import javax.annotation.Resource; import junit.framework.TestCase; import com.sinopec.carlife.model.Region; import com.sinopec.carlife.service.api.RegionService; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations ={"classpath:spring/spring.xml"}) @Transactional public class RegionServiceTest extends TestCase { @Resource(name="regionService") private RegionService regionService; @Test public void testFindRegions() { try { List<Region> regions = regionService.findRegions(); System.out.println(regions.size()); } catch (Exception e) { e.printStackTrace(); } } }
这样就能使用spring自动为junit单元测试自动注入依赖了。