【问题标题】:Mockito with transactional annotated method带有事务注释方法的 Mockito
【发布时间】:2018-11-28 11:48:04
【问题描述】:

我们有一个带有事务注释方法的类

public class MyHandler extends BaseHandler {

    @Transactional
    public void annotatedMethod(String parameter) throws Exception {
    }

一旦我们尝试使用 mockito 及其注释进行测试

@InjectMocks
private Controller controller;

@Mock
private MyHandler myHandler;

执行以下行时出现空指针异常

Mockito.doCallRealMethod().when(myHandler).annotatedMethod(Matchers.any());

我们尝试使用与Transactional annotation avoids services being mocked 相同的解决方案,但没有成功。

我们是 mockito 的新手,我们不知道如何解决这个问题。 有什么线索吗?

非常感谢, 埃琳娜

【问题讨论】:

  • 嗨 Elena,MyHandler 是正在测试的班级吗?如果是这样,那么嘲笑它可能不起作用。 @Transactional 注释不会影响Mockito 的行为,如所述使用。如果没有一些错误输出,很难确切地知道问题的根本原因是什么。我的猜测是,您委托的 real 方法 依赖于 MyHandler 中的其他方法,并在模拟调用它们时从它们那里得到一个空值。如果不设置替代项,mockito 对象上的所有函数都会返回 null、false、0 等。
  • 你好阿什利,我已经解决了这个问题,它与注释无关。这是 Mockito 返回 null。感谢您的帮助

标签: annotations mockito transactional


【解决方案1】:

您可以尝试这种方式来模拟数据。我有类似的 NullPointerException,这种方式对我有帮助。

@InjectMocks
private Controller controller;

@Mock
private MyHandler myHandler;

@Test
void testingMethod() {
    when(myHandler.annotatedMethod(Mockito.any())).thenReturn("something");
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-09
    • 2011-12-24
    • 2011-03-20
    • 1970-01-01
    • 2017-12-25
    • 1970-01-01
    相关资源
    最近更新 更多