如何解决Autowired 字段上的空指针异常
我收到了以下 Java 类,要求我编写一些单元测试。我应该提一下,我是 Java 新手,尤其是 Spring 框架。
@Component
@Slf4j
public class SmsInboundManager {
@Autowired
private ApplicationContext context;
@Autowired
private MessageService messageService;
/* methods
...
*/
}
基本上,我想创建一个这个类的实例,然后在不同的参数上测试方法并做通常的业务。所以我进行了如下操作:
public class SmsInboundManagerTest{
@Autowired
SmsInboundManager manager;
/*tests */
}
但是,我在 manager 上收到了空指针异常
一位同事建议在测试类中使用以下一些注释:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "..." })
但我没有运气。关于如何解决它的任何想法?
解决方法
由于 SmsInboundManagerTest 不是 Spring 管理的实例,您收到 NullPointerException。您可以找到更多详细信息 here。另外我看到您正在使用字段依赖注入。这被认为是不好的做法(您可以查看一些原因 here)。相反,您应该使用方法依赖注入或构造函数依赖注入。您可以找到更多详情here。
为了回答你的问题,在测试类中你应该模拟 MessageService 对象,你不应该注入它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。