模拟程序JoinPoint 签名

2024-01-11

我正在尝试模拟 ProceedingJoinPoint 类,但在模拟方法时遇到困难。

这是调用模拟类的代码:

...
// ProceedingJoinPoint joinPoint

Object targetObject = joinPoint.getTarget();
try {

  MethodSignature signature = (MethodSignature) joinPoint.getSignature();
  Method method = signature.getMethod();

  ...
  ...

这是迄今为止我模拟的课堂尝试......

accountService = new AccountService();
ProceedingJoinPoint joinPoint = mock(ProceedingJoinPoint.class);
when(joinPoint.getTarget()).thenReturn(accountService);

我现在不知道如何模拟签名来获取什么方法?

when(joinPoint.getSignature()).thenReturn(SomeSignature); //???

有任何想法吗?


好吧,你可以嘲笑MethodSignature类,但我想你想进一步模拟它以返回Method类实例。好吧,自从Method是最终的,它不能被扩展,因此不能被嘲笑。您应该能够在测试类中创建一个虚假方法来表示您的“模拟”方法。我通常这样做:

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.reflect.MethodSignature;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.junit.MockitoJUnitRunner;

import java.lang.reflect.Method;

import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

@RunWith(MockitoJUnitRunner.class)
public class MyTest {
    AccountService accountService;

    @Test
    public void testMyMethod() {
        accountService = new AccountService();

        ProceedingJoinPoint joinPoint = mock(ProceedingJoinPoint.class);
        MethodSignature signature = mock(MethodSignature.class);

        when(joinPoint.getTarget()).thenReturn(accountService);
        when(joinPoint.getSignature()).thenReturn(signature);
        when(signature.getMethod()).thenReturn(myMethod());
        //work with 'someMethod'...
    }

    public Method myMethod() {
        return getClass().getDeclaredMethod("someMethod");
    }

    public void someMethod() {
        //customize me to have these:
        //1. The parameters you want for your test
        //2. The return type you want for your test
        //3. The annotations you want for your test
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

模拟程序JoinPoint 签名 的相关文章

  • 在命令行java中突出显示文本[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一项任务是重新创建 unix cal 程序 除了一部分之外 相当简单 今天 它突出显示了该数字 我不知道该怎么做 关于如何在 Ja
  • 在 Java 中从 SOAPMessage 获取原始 XML

    我已经在 J AX WS 中设置了 SOAP WebServiceProvider 但我无法弄清楚如何从 SOAPMessage 或任何 Node 对象获取原始 XML 下面是我现在获得的代码示例 以及我试图获取 XML 的位置 WebSe
  • java中的单链表和双向链表?

    在java中 哪个集合接口可以有效地实现单链表和双向链表 请问代码示例吗 毫不奇怪 实现双向链表的正确接口是 LinkedList 看Java文档 http docs oracle com javase 8 docs api java ut
  • 需要正则表达式帮助

    我正在尝试替换两次或多次出现的 br like br br br 标签与两个一起 br br 具有以下模式 Pattern brTagPattern Pattern compile lt s br s s gt s 2 Pattern CA
  • Android volley使用RequestFuture.get()时出现超时异常

    在我的片段中 我尝试使用 TMDB 的开放电影数据库来获取有关 正在播放 电影的详细信息 如果我使用 RequestFuture get time TimeUnit 方法来执行此齐射请求 我总是会收到超时错误 如果我在 Safari 中手动
  • 将现有 eclipse 项目导出到 war 文件时出现“模块名称无效”

    我正在尝试将现有 Eclipse 项目导出到 war 文件 但无论我在 WAR Export 对话框页面中输入什么 系统总是返回 模块名称无效 我不知道如何解决这个问题 谢谢您的帮助 我有同样的问题 我修复了它 请按照以下步骤操作 您可以创
  • 如何使用 swagger-codegen-plugin (maven) 生成客户端代码?

    我需要使用 swagger codegen plugin for maven 在 eclipse 中生成服务器存根代码 你能帮忙怎么做吗 以及需要什么配置 在 pom xml 中 我找到了这个答案 您只需要像下面这样更改 pom xml 即
  • 是否有最新的 Facebook Java SDK? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 好像没找到最近更新的 如果没有 是否有一个好的 Java 库来执行与 Facebook 的 API 交
  • 从 Android 访问云存储

    我一直无法找到任何有关如何从 Android 应用程序使用云存储的具体文档 我确实遇到过这个客户端库 https cloud google com storage docs reference libraries然而 Google Clou
  • 合并两个地图的最佳实践是什么

    如何将新地图添加到现有地图 地图具有相同的类型Map
  • 如何在 Bean Validation 1.0 中构造 ConstraintViolationException?

    我对 javax validation API 感到困惑 我正在编写一个简单的测试来理解它 Sample sample new Sample Set
  • 多线程——更快的方法?

    我有一堂有吸气剂的课程getInt 和一个二传手setInt 在某个领域 比如说领域 Integer Int 一个类的一个对象 比如说SomeClass The setInt 这里是同步的 getInt isn t 我正在更新的值Int来自
  • 配置jmxremote时无法正常停止tomcat

    我添加了一个jmxremotecatalina bat中的配置 set JAVA OPTS Dcom sun management jmxremote port 9004 Dcom sun management jmxremote ssl
  • 在循环中按名称访问变量

    我正在开发一个 Android 项目 并且有很多可绘制对象 这些绘图的名称都类似于icon 0 png icon 1 png icon 100 png 我想将这些可绘制对象的所有资源 ID 添加到整数 ArrayList 中 对于那些不了解
  • Java 中处理异步响应的设计模式

    我读过类似问答的答案 如何在 JAVA 中创建异步 HTTP 请求 https stackoverflow com questions 3142915 how do you create an asynchronous http reque
  • CXF:通过 SOAP 发送对象时如何排除某些属性?

    我使用 Apache CXF 2 4 2 当我将数据库中的某个对象返回给用户时 我想排除一些属性 例如密码 我怎样才能做到这一点无需创建临时的班级 有这方面的注释吗 根据 tomasz nurkiewicz 评论我应该使用 XmlTrans
  • 如何清理 Runtime.exec() 中使用的用户输入?

    我需要通过命令行调用自定义脚本 这些脚本需要很少的参数并在 Linux 机器上调用 当前版本容易出现各种shell注入 如何清理用户给出的参数 参数包括登录名和路径 Unix 或 Windows 路径 用户应该能够输入任何可能的路径 该路径
  • 你能快速告诉我这个伪代码是否有意义吗?

    我相信我的代码现在是万无一失的 我现在将写出伪代码 但我确实有一个问题 为什么 DRJava 要求我返回 if 语句之外的内容 正如你所看到的 我为 ex 写了 return 1 只是因为它问了 但是它永远不会返回该值 谁可以给我解释一下这
  • 使用 AmazonSNSClient 发送短信时的授权

    aws 官方文档如何发送短信 http docs aws amazon com sns latest dg sms publish to phone html使用 java 中的 aws SDK 非常简单 但是 当发送如底部示例所示的消息时
  • 将数组值导出到 csv 文件 java

    我只需要帮助将数组元素导出到 csv 文件 我不知道我的代码有什么问题 任何帮助将不胜感激 谢谢 for int index 0 index lt cols length index FileWriter fw new FileWriter

随机推荐

  • 聚合物服务和服务人员

    我正在尝试开始调试我的聚合物应用程序 我通过复制我的想法手工制作了它PolymerCLI Polymer init does 我不确定正在加载服务人员的是什么 开发的默认选项只做了一个console info 打电话说它已被禁用以进行开发
  • 在 R 中查找给定数据的“行方式”“众数”[重复]

    这个问题在这里已经有答案了 Unlike rowMeans and rowMedians 这给了我们计算出来的数字 mode x 给出数据的存储模式 我的问题 对于以下数据框 我如何计算row wise Mode Data Item A B
  • 如何在 OS X 上监视文件更改?

    我希望收到有关写入给定文件的通知 无需轮询 无需从文件中读取 也无需监视父目录并查看文件修改时间戳 我怎么做 我找不到一个简单的例子 所以我贡献我的想法以供将来参考 interface FileWatch property assign d
  • Delphi 中的 DataModule (dm) 是什么?

    在您的项目中使用 DataModule 的目的是什么 与普通的类或模块相比 它有什么特殊的属性吗 它通常用于什么约定 数据模块是一种非可视 表单 容器 可以包含非可视组件 通常是数据库组件 尽管可以添加任何组件 例如对话框和Indy htt
  • 数组初始化C

    这个初始化的意义是什么 char arr 10 0 我熟悉char arr 10 0 它将所有元素设置为零 并且char arr 10 1 2 它将前两个元素设置为 1 和 2 ascii 其余元素设置为 0 我对上面的格式不熟悉 快速测试
  • 将元组转换为 proplist

    如何从 MongoDB 转换元组 id lt lt vasya gt gt password lt lt 12ghd gt gt age undefined 到支柱列表 id lt lt vasya gt gt password lt lt
  • 为什么当我运行此测试时,这个 sinon 间谍没有被调用?

    我有一个骨干模型 class DateTimeSelector extends Backbone Model initialize gt bind change date updateDatetime bind change time up
  • 在 ASP.NET 中下载文件而不弹出窗口

    我正在使用代码下载文件 btnDownloadTemplate Attributes Add onClick window open StudyReport WordReportTemplate doc OpenTemplate resiz
  • 使用 selenium 在 Chrome 中“未知错误:无法读取 null 的属性‘scrollleft’”

    在 Chrome 中 当我单击按钮时 出现 未知错误 cannot read property scrollleft of null 他们是该页面中的 1 个输入字段 我可以输入值 因为只有按钮单击不起作用 此点击在 Firefox 中运行
  • 使用从 Azure AD 和 ADAL 获取的令牌访问本地 SharePoint

    The Goal 使用 OAuth 从基于 Apache Cordova 的移动应用程序通过 REST 请求访问本地 SharePoint 数据 到目前为止我已经尝试过的 1 Azure 移动服务 混合连接 AAD ADAL 与博文类似代表
  • Qt 中的测试用例在哪里?

    我已经阅读了 Qtestlib 手册和教程 并逐步了解了开发测试的过程 如果我是对的 Qt 已经开发了一些测试用例来测试其功能 谁能告诉我Qt源代码树中这些代码在哪里 如果我必须修改它们 测试用例 我可以这样做吗 提前致谢 尼夫 单元测试不
  • 使用 Hilt 注入 CoroutineWorker:无法实例化woker

    有人问过同样的问题 但它们对我不起作用 一开始我使用的是最新版本的工作管理器 即 2 7 alpha 3 但我降级了 因为它只兼容 android 12 预览版 sdk 错误仍然存 在 它无法实例化工作人员 因为这些依赖项包含在工作人员的构
  • 将 label 标签包裹在表单项周围还是使用 HTML 中的“for”属性更好?

    我知道您可以同时使用两者 但是使用其中一个比使用另一个更好吗 如果是这样 为什么 for 属性的示例
  • 如何使用 msdeploy 并定位特定站点?

    使用 msdeploy 和 msdeploy axd 处理程序时 任何部署到远程服务器的尝试都会遇到 401 未经授权的错误 并且服务器会记录日志 IISWMSVC AUTHORIZATION SERVER NOT ALLOWED 仅允许
  • Python:导入与函数同名的模块

    背景知识 第一次问SE问题 我对 Python 还很陌生 一般来说编程经验也不是很多 我四处搜寻 但没有找到这个问题的答案 非常感谢您的帮助 我的问题是 如何导入与函数同名的模块 具体来说 我正在使用 Python 符号数学库 sympy
  • 如何将 Pydantic BaseModels 列表转换为 Pandas Dataframe

    我似乎找不到任何内置方法可以简单地将 Pydantic BaseModels 列表转换为 Pandas Dataframe from pydantic import BaseModel import pandas as pd class S
  • futures::executor::block_on 和 block_in_place 之间是否存在性能差异

    我在同步方法内调用异步代码 此方法是特征的一部分 我无法异步实现它 所以我使用block on等待异步调用完成 将从异步代码调用同步方法 所以应用程序是在 tokio main 当某些事件发生 端点命中 时 它会调用同步方法 同步方法将调用
  • 如何向 jquery.datatables 列添加类?

    我为 jquery datatables 创建了一个大表 这对我来说非常有用 但我需要为每个 td 元素相对于其列设置一个类名 例如我想要一列 包括 th 和所有 td 有一个class volume 有这样的问题 我使用此代码来初始化该类
  • Xcode 6 - Main.storyboard 仅显示为源代码,缺少 Interface Builder

    不知何故 我的 Xcode 设置变得混乱 因为它只会将我的 Main storyboard 文件显示为 XML 代码 我被告知可以通过从 打开方式 菜单中选择界面生成器来解决此问题 但菜单下没有任何内容 唯一的 选择 是灰显的 我已经清除了
  • 模拟程序JoinPoint 签名

    我正在尝试模拟 ProceedingJoinPoint 类 但在模拟方法时遇到困难 这是调用模拟类的代码 ProceedingJoinPoint joinPoint Object targetObject joinPoint getTarg