JUnit spring不能使用@Autowired注入位于其他项目中的相关bean

时间:2017-12-25 12:26:15

标签: java spring spring-mvc junit

我在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。

问候。

1 个答案:

答案 0 :(得分:0)

您有几种选择 1.您可以使用@InjectMocks模拟那些您不需要的依赖项并注入依赖类,并模拟这些类的方法的行为。 2.您可以在applicationContext.xml中包含所需的所有bean,或者仅包含使用
所需的类 @ContextConfiguration(classes = {abc.class, def.class})