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

anyString()或anyInt()或anyLong()方法不能正确地存根方法

印嘉泽
2023-03-14

当Iam在Mockito中使用anyString()或anyInt()或anyLong()方法时,stubbing不起作用。如果我使用anyObject(),它工作得很好。例如,如果我们有使用此签名的方法:

List<Service> getAllPurchasedServices(
      boolean isAgreement, String billingAccountId) throws ApiException

嘲笑:

when(serviceRestAPI.getAllPurchasedServices(anyBoolean(), anyString())).thenReturn(services);

当在测试的方法内部调用此模拟时,它将抛出NullPointerException。但是如果我们为anyObject()更改它,一切都很好。有人知道为什么anyString()会导致NullPointerException吗?

StackTrace:

java.lang.NullPointerException在com.clickatell.mc2.utils.userutils.istouchUser(userutils.java:16)在com.clickatell.mc2.component.service.impl.invitationNotificationServiceImpl.SendKafKaUserMessage(invitationNotificationServiceImpl.java:79)在com.clickatell.mc2.component.Service.impl.InvitationNotificationServiceImplest.TestSendNotificationServiceImplest.java:87).invoke(nativeMethodAccessorImpl.java:62)在sun.reflect.delegatingMethodAccessorImpl.invoke(delegatingMethodAccessorImpl.java:43)在java.lang.reflect.Method.invoke(Method.java:498)在org.junit.runners.model.frameworkMethod$1.runreflectiveCall(FrameworkMethod.java:59)在在org.junit.internal.runners.statements.runbefores.evaluate(runbefores.java:17)在org.junit.runners.parentrunner$3在org.junit.runners.blockJunner.java:26)在org.junit.runners.parentrunner$1在org.junit.runners.blockJunner.java:306在org.junit.runners.blockJunit.runners.blockJunit.runners.parentrunner$1.runners.parentrunner$4.run(parentrunner.java:331)在org.junit.runners.parentrunner$1.schedule(parentrunner.java:79)在org.junit.runners.parentrunner.runchildren(parentrunner.java:329)在org.junit.runners.parentrunner.runchildren(parentrunner.java:329)在org.junit.runners.parentrunner.access$100(junit45在org.mockito.runners.mockitojunitrunner.run(junit45andhigherrunnerimpl.java:37)在org.gradle.api.internal.tasks.junit.junitrunner.run(mockitojunitrunner.java:62)在org.gradle.api.internal.tasks.junit.junittestClassExecutor.runtestClassExecutor.runtestClassExecutor.runtestClassExecutor.java:110)在java:38)在org.gradle.api.internal.tasks.junit.abstractJunitTestClassProcessor.processStestClass(AbstractJunitTestClassProcessor.java:62)在org.gradle.api.internal.tasks.testing.suiteTestClassProcessor.processStestClass(SuiteTestClassProcessor.java:51)在sun.reflect.nativeMethodAccessor.java:51)在reflect.Method.invoke(Method.javA:498)在org.gradle.internal.dispatch.reflectiondispatch.dispatch.dispath.reflectiondispatch.dispath(reflectiondispatch.java:36)在org.gradle.internal.dispatch.reflectiondispatch.dispatch.dispath(reflectiondispatch.dispath(reflectiondispatch.java:24)在在sun.reflect.nativeMethodAccessorImpl.invoke0(原生方法)在sun.reflect.nativeMethodAccessorImpl.invoke(nativeMethodAccessorImpl.java:62)在sun.reflect.delegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)在java.lang.reflect.methodAccessorImpl.invoke(Method.java:498)在dispatch.java:24)在org.gradle.internal.remote.internal.hub.messageHubbakedObjectConnection$dispatchWrapper.dispatch(MessageHubbakedObjectConnection.java:182)在org.gradle.internal.remote.remote.mernal.messageHubbakedObjectConnection$dispatchWrapper.dispatch(MessageHubbakedObjectConnection.java:164)在在org.gradle.internal.concurrent.managedexecutorimpl$1.run(managedexecutorimpl.java:48)在java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1149)在java.util.concurrent.threadpoolexecutor$worker.run(threadpoolexecutor.java:624)在org.gradle.internal.concurrent.threadfactoryimpl

共有1个答案

百里诚
2023-03-14

当使用anyString()或anyLong()时,mockito将认为null值不符合String或Long;这样你的存根就不能用了。您可以使用any(),也可以确保参数不为空。

 类似资料:
  • 我正在尝试为生产中的顶点类实现一个简单的更改。我有正确的类和正确的测试类。测试类在沙盒中成功运行,没有错误,但显然错误来自Salesforce中的TestHelper默认测试类。当尝试在生产中部署时,它会抛出错误“方法不存在或签名不正确:TestHelper类型中的空createUser(Id、String、String、Date、Intger)” 我尝试过将其引用的方法更改为public sta

  • 使用Android Studio中的rename函数将目录重命名为后,收到以下错误消息: Androidmanifest xml不存在或根标记不正确 有什么办法能让这个成功吗? 当我复制目录并将其重命名为时,错误就消失了,我可以构建应用程序了。

  • 我从头开始创建了一个AS项目,一切都很好。然后出现了一个弹出窗口,(如果我没记错的话)说的是:“”。我按了“是”,项目/模块发生了一些变化,然后我得到了上面的错误 在我的案例中,问题与无关。它与/配置有关,特别是一个文件。我意识到看了这篇信息丰富的帖子。

  • 因此,作为家庭作业,我的任务是编写包含5种静态方法的代码。其中两人要求提供以下内容: “编写一个以整数X为参数的方法,如果X为偶数,则返回true;如果X为奇数,则返回false。” 和 “编写一个以正整数N为参数的方法,如果N是素数,则返回true,否则返回false。假设N 我不清楚我是否需要打印出正确或错误的方法。在我将println添加到方法调用之前,它们显然没有打印。所以我想我有两个问题

  • 问题内容: 此语法在JavaScript中可能意味着什么(可能是ES6): const {} =变量名; 我目前正在尝试掌握React。在很多示例中,我都遇到了这种语法。例如: 问题答案: 首先,这与React无关。它是ECMAScript 6(如果您愿意的话,也可以是JavaScript 2015)的一部分。 您在此处看到的称为“ 分解任务”: 在学习React时,您可能会遇到类似的情况: 在这