Spring boot spring boot Mockito模拟空异常

Spring boot spring boot Mockito模拟空异常,spring-boot,nullpointerexception,mocking,mockito,junit4,Spring Boot,Nullpointerexception,Mocking,Mockito,Junit4,我想在另一个方法中模拟一个方法,但在我模拟的对象中总是得到null点异常,第40行中的异常 任何想法都会很感激 最上面 @RunWith(Spring4JunitRunner.class) 应该是 @RunWith(MockitoJUnitRunner.class) 它应该是有效的 谢谢你 @RunWith(Spring4JunitRunner.class) 应该是 @RunWith(MockitoJUnitRunner.class) 它应该是有效的 谢谢对不起,我忽略了。请在开始时输入

我想在另一个方法中模拟一个方法,但在我模拟的对象中总是得到null点异常,第40行中的异常

任何想法都会很感激

最上面

@RunWith(Spring4JunitRunner.class)

应该是

@RunWith(MockitoJUnitRunner.class)
它应该是有效的

谢谢你

@RunWith(Spring4JunitRunner.class)

应该是

@RunWith(MockitoJUnitRunner.class)
它应该是有效的


谢谢

对不起,我忽略了。请在开始时输入设置方法

Public void setup()

MockitoAnnotations.initMocks(this);

对不起,我忽略了。请在开始时输入设置方法

Public void setup()

MockitoAnnotations.initMocks(this);

您可能应该在createCustomerInteraction上使用
@Mock
,而不是使用 使用了
@Spy

Mockito.spy(…)
通常在已经存在的对象(通常不是mock)上调用。你在课堂上使用了它

我不确定您是否真的打算在
setUp
方法中覆盖Mock(您使用注释创建的Mock),但我认为这只是您犯的另一个错误。(如果使用正确的注释,则不需要这样做)

编辑:
NPE还有另一种可能性,那就是
createCustomerInteraction
不是空的,而是
事务

您没有为事务声明@Mock,因此如果它没有在其他任何地方初始化,则它可能为null。

而不是在createCustomerInteraction上使用
@Mock
,您可能应该使用它 使用了
@Spy

Mockito.spy(…)
通常在已经存在的对象(通常不是mock)上调用。你在课堂上使用了它

我不确定您是否真的打算在
setUp
方法中覆盖Mock(您使用注释创建的Mock),但我认为这只是您犯的另一个错误。(如果使用正确的注释,则不需要这样做)

编辑:
NPE还有另一种可能性,那就是
createCustomerInteraction
不是空的,而是
事务
。 您没有为事务声明@Mock,因此如果它没有在其他任何地方初始化,则可能为null。

请尝试以下操作:

doReturn(createCustomerInteractionResponse).when(createCustomerInteraction).yourMethod(yourArguments);
试试这个:

doReturn(createCustomerInteractionResponse).when(createCustomerInteraction).yourMethod(yourArguments);

最好以文本形式提供代码,而不是截图。stacktrace也会有帮助。最好以文本形式提供代码,而不是截图。另外,stacktrace也会有帮助。嗨,谢谢你的回复,但我试过MockitoJUnitRunner,仍然是相同的NullPointerException嗨,谢谢你的回复,但是我试过MockitoJUnitRunner,仍然是相同的NullPointerException你应该编辑你以前的答案,而不是发布另一个…嗨,谢谢大家。initMocks(这个)不适合我。最后,我做了一个单元测试,而不是集成测试,使用构造函数注入依赖项,而不是autowire注释。你应该编辑你以前的答案,而不是发布另一个答案……嗨,谢谢大家。initMocks(这个)不适合我。最后,我只是做了一个单元测试,而不是集成测试,使用构造函数注入依赖项,而不是autowire注释。这一个不起作用,如果我监视一个方法a,a中的另一个方法B需要监视,最后在我监视几乎每个方法之后,最后一个方法的变量的值来自.yml配置,为null。无论如何,它现在可以工作了,使用单元测试代替集成测试。这是由糟糕的应用程序结构造成的,其中包括外部jar依赖文件,这使得Junit测试非常困难。如果你几乎每一种方法都进行了间谍活动,那么你可能犯了一些错误,或者还没有理解间谍活动的概念。无论如何,我不会把mockito测试称为集成测试,因为你是在剥离东西而不是集成它们。我也感到困惑,如果这只是普通情况,问题就不会出现在这里。我只是注意到了我忽略的另一件事,这也可能是NPE的原因。您没有为事务声明@Mock。-无论如何,如果你愿意让Mockito再试一次,但它仍然不起作用,那么再问另一个问题。这个问题不起作用,如果我监视一个方法A,A中的另一个方法B需要监视,最后在我监视几乎所有方法之后,最后一个方法有一个变量,其值来自.yml配置,为null。无论如何,它现在可以工作了,使用单元测试代替集成测试。这是由糟糕的应用程序结构造成的,其中包括外部jar依赖文件,这使得Junit测试非常困难。如果你几乎每一种方法都进行了间谍活动,那么你可能犯了一些错误,或者还没有理解间谍活动的概念。无论如何,我不会把mockito测试称为集成测试,因为你是在剥离东西而不是集成它们。我也感到困惑,如果这只是普通情况,问题就不会出现在这里。我只是注意到了我忽略的另一件事,这也可能是NPE的原因。您没有为事务声明@Mock。-无论如何,如果你愿意让莫基托再次尝试,但它仍然不起作用,只需问另一个问题。