我在spring项目中工作,我想使用JUnit创建一个单元测试,但我得到空指针异常,这是我的代码:
我在项目(A)中创建测试:
@RunWith( SpringJUnit4ClassRunner.class )
@ContextConfiguration(locations = {"classpath*:**/applicationContext.xml"})
public class EditionArticleTest {
@Autowired
private ArticleService articleService ;
@Test
public void testfindArticleByNum()
throws Exception
{
//this line return null pointer Exception
Article article = articleService.findArticle("AA0045");
}
}
问题是我的服务的实现依赖于位于其他项目(B)中的bean,如下所示:
public class ArticleServiceImpl implements articleService {
//the implementation of this bean exists in an other project
private ArticleFinder articleFinder ;
}
所以我在这一行得到错误:
@Override
public Article findArticle( String numArticle )
{
//iget the null pointer exception in this line because spring can't
//instantiate the beans articleFinder
return articleFinder.findByNumArticle( numArticle );
}
请您有任何解决此问题的建议,并强制spring自动注入位于其他项目中的所有相关bean。
问候。
答案 0 :(得分:0)
您有几种选择
1.您可以使用@InjectMocks
模拟那些您不需要的依赖项并注入依赖类,并模拟这些类的方法的行为。
2.您可以在applicationContext.xml中包含所需的所有bean,或者仅包含使用
所需的类
@ContextConfiguration(classes = {abc.class, def.class})