当前位置: 首页 > 知识库问答 >
问题:

通过InjectMocks Spy注入物体

居焱
2023-03-14
@Mock Logger logger;
@InjectMocks
TestedClass tested;

Mockito lib允许用@injectmock注入对象吗?我见过@Spy注释的例子,但当我试图使用它时,总是得到NullPointerException。我知道我总是可以直接使用reflect,但想法是避免这样的代码。

共有1个答案

倪风史
2023-03-14

嗯。如果没有答案,我只好自己回答了。

要通过@InjectMock注释来推动活动对象,可以使用@Spy注释:

@Spy
Logger logger = LoggerFactory.getLogger("");
@InjectMocks
TestedClass tested = new TestedClass();

唯一的问题是@spy不能处理final(和其他一些东西)类,在我的案例中我碰到了这一点。

 类似资料:
  • 我是Spring Security的新手。我看过很多关于如何通过外部属性文件的注释注入值的文章。我尝试了很多方法,但最终都是用java。lang.IllegalArgumentException:无法解析占位符“val.id”异常。 你能给我一些提示如何处理这个例外吗? 我的java类如下所示: 我的属性文件名为val.properties,位于WEB-INF下,其内容为val.id=xyz 我将

  • 在我的类中,在测试下,我有一些私有服务字段和一个java类型的私有字段。 和注释极大地创建了模拟和注入服务字段。但是,如何为字段创建模拟,因为Mockito不允许为类创建模拟? 我看到的一个选择是使用接口而不是字段类型,但这需要更改类的代码,我不喜欢这种想法。 更新:类定义如下 由于某些原因,我们没有使用Spring集成测试功能,也不想在不同类型的注入(例如ctor注入)中返工

  • 我在整个代码中有一堆常量,用于系统的各种可调整属性。我正在将它们全部移动到一个中央文件中。我目前的解决方案是有一个静态加载文件并公开各种getter方法,如下所示: 唯一的问题是,对于我从这个文件中获得的每个常量,我都有一些样板: 我不认为我想使用Spring或类似的东西,因为那看起来更像是boilerplae。我希望使用自定义注释来解决这个问题。我找到了这个教程,但是我真的不能弄清楚如何从注释处

  • 我不确定DI应该如何与服务类一起工作。基本上,这两个服务类具有相同的接口,我希望能够避免nessesary if的,如果我可以将正确的一个注入到控制器中。一个例子将非常感谢。 抱歉,伙计们,我不太清楚。我还需要弄清楚的是,哪一个服务类需要注入到控制器中,而不需要在那一点上指定具体的实现。所以,我希望有一种方法可以执行某种if语句,并检查应该插入服务的哪个实现。

  • 如何使用注释填充值映射,而不在applicationContext中定义任何内容。xml或任何其他xml文件。 我使用的是SpringBoot,它没有任何XML文件,也不需要任何XML文件,所以请不要告诉我用XML等声明任何属性读取器bean。 此外,这是一个属性注入问题-请不要建议使用数据库存储数据-这不是一个答案,对于我的情况也不可能。 此外,我也不能使用YAML(由于部署/操作需求)。 我已

  • 问题内容: 我试图通过注释将整个JSF托管Bean注入另一个托管Bean非常相似,但是我正在注入Bean,而不是Servlet)。这就是我在做什么: 不起作用(JSF 2.0 / Mojarra 2.0.3): 有没有可能或者我需要通过编程方式进行注射? 问题答案: 您需要添加setter和getter 当将解析并注入依赖项时,它将使用setters注入,因此适当的setters / getter