gpt4 book ai didi

java - JUnit spring无法使用@Autowired注入(inject)位于其他项目中的相关bean

转载 作者:太空宇宙 更新时间:2023-11-04 10:49:54 27 4
gpt4 key购买 nike

我正在 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自动注入(inject)位于其他项目中的所有相关bean。

问候。

最佳答案

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

关于java - JUnit spring无法使用@Autowired注入(inject)位于其他项目中的相关bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47968602/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com