如何将 Hamcrest 匹配器应用于被测类的属性?

2024-05-11

有没有办法构建一个组合的 Hamcrest 匹配器来测试对象和该对象的属性? - 伪代码:

both(
  instanceof(MultipleFailureException.class)
).and(
  // pseudo code starts
  adapt(
    new Adapter<MultipleFailureException, Iterable<Throwable>()
    {
      public Iterable<Throwable> getAdapter(MultipleFailureException item)
      {
        return item.getFailures();
      }
    }, 
    // pseudo code ends
    everyItem(instanceOf(IllegalArgumentException.class))
  )
)

背景:我有一个 JUnit 测试,它迭代动态对象的集合。每个对象在处理时都应该抛出异常。收集异常情况。测试预计以 MultipleFailureException 结束,其中包含这些抛出的异常的集合:

protected final ExpectedException expectation = ExpectedException.none();
protected final ErrorCollector collector = new ErrorCollector();

@Rule
public RuleChain exceptionRules = RuleChain.outerRule(expectation).around(collector);

@Test
public void testIllegalEnumConstant()
{
  expectation.expect(/* pseudo code from above */);
  for (Object object : ILLEGAL_OBJECTS)
  {
    try
    {
      object.processWithThrow();
    }
    catch (Throwable T)
    {
      collector.addError(T);
    }
  }
}

我想你可能正在寻找有属性 http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/beans/HasProperty.html or 有属性和值 http://hamcrest.org/JavaHamcrest/javadoc/1.3/org/hamcrest/beans/HasPropertyWithValue.html

请参阅此处的示例:https://theholyjava.wordpress.com/2011/10/15/hasproperty-the-hidden-gem-of-hamcrest-and-assertthat/ https://theholyjava.wordpress.com/2011/10/15/hasproperty-the-hidden-gem-of-hamcrest-and-assertthat/

我以前处理过的另一个例子;在这里我们检查是否有Quote method getModels()返回一个集合PhoneModel并且集合中的其中一项具有属性makeId等于 LG_ID 且modelId等于 NEXUS_4_ID。

            assertThat(quote.getModels(),
                            hasItem(Matchers.<PhoneModel> hasProperty("makeId",
                                            equalTo(LG_ID))));
            assertThat(quote.getModels(),
                            hasItem(Matchers.<PhoneModel> hasProperty("modelId",
                                            equalTo(NEXUS_4_ID))));
    }

为此,hamcrest 依赖于您采用JavaBean http://docstore.mik.ua/orelly/java-ent/jnut/ch06_02.htm%20JavaBean惯例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将 Hamcrest 匹配器应用于被测类的属性? 的相关文章

  • 为什么不同类型的空集合相等?

    下面的机制是什么使不同类型相同 import static org testng Assert assertEquals Test public void whyThisIsEqual assertEquals new HashSet lt
  • 用更轻的解决方案替换完整的 ORM(JPA/Hibernate):推荐的加载/保存模式?

    我正在开发一个新的 Java Web 应用程序 并且正在探索保存数据的新方法 对我来说是新方法 我主要有 JPA 和 Hibernate 的经验 但是 除了简单的情况之外 我认为这种完整的 ORM 可能会变得相当复杂 另外 我不太喜欢和他们
  • “包含非 LDH ASCII 字符”异常从何而来?

    我开发了一个应用程序 spring magnolia 它在新年 2018 左右开始为我抛出这个异常 但不为任何其他同事抛出异常 例外是正确的 有一个 在配置的主机名中 因此域名应该是固定的 尽管如此 它之前一直在工作 对于其他人来说它仍然在
  • 无法在 Eclipse IDE 中使用 java 建立与 SQL Server 2008 的数据库连接

    我正在尝试在 Eclipse IDE 中使用 Java 代码连接到 HP Operations Manager 数据库 我能够通过 Microsoft SQL Server Management Studio 2008 成功连接 但通过代码
  • 使用 JaxRS 自定义 JSON 序列化

    在 Web 服务调用中 我想返回具有此 JSON 结构的对象 date 30 06 2014 price val 12 50 curr EUR 我想将此 JSON 代码映射到此 Java 结构 使用乔达时间 http www joda or
  • 颜色逻辑算法

    我们正在构建一个体育应用程序 并希望将团队颜色融入到应用程序的各个部分 现在 每个团队都可以使用几种不同的颜色来表示 我想做的是执行检查以验证两个团队颜色是否在彼此一定的范围内 这样我就不会显示两个相似的颜色 因此 如果团队 1 的主要团队
  • API 调用 datastore_v3.Put() 的请求太大

    我正在使用 google cloud sql 和 appengine 我正进入 状态com google apphosting api ApiProxy RequestTooLargeException The request to API
  • Java 中等效的并行扩展

    我在 Net 开发中使用并行扩展有一些经验 但我正在考虑在 Java 中做一些工作 这些工作将受益于易于使用的并行库 JVM 是否提供任何与并行扩展类似的工具 您应该熟悉java util concurrent http java sun
  • 在 Java 中连接和使用 Cassandra

    我已经阅读了一些关于 Cassandra 是什么以及它可以做什么的教程 但我的问题是如何在 Java 中与 Cassandra 交互 教程会很好 如果可能的话 有人可以告诉我是否应该使用 Thrift 还是 Hector 哪一个更好以及为什
  • 如何使用 Java 和 Selenium WebDriver 在 C 目录中创建文件夹并需要将屏幕截图保存在该目录中?

    目前正在与硒网络驱动程序和代码Java 我有一种情况 我需要在 C 目录中创建一个文件夹 并在该文件夹中创建我通过 selenium Web 驱动程序代码拍摄的屏幕截图 它需要存储在带有时间戳的文件夹中 如果我每天按计划运行脚本 所有屏幕截
  • Java EE:如何获取我的应用程序的 URL?

    在 Java EE 中 如何动态检索应用程序的完整 URL 例如 如果 URL 是 localhost 8080 myapplication 我想要一个可以简单地将其作为字符串或其他形式返回给我的方法 我正在运行 GlassFish 作为应
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • INSERT..RETURNING 在 JOOQ 中不起作用

    我有一个 MariaDB 数据库 我正在尝试在表中插入一行users 它有一个生成的id我想在插入后得到它 我见过this http www jooq org doc 3 8 manual sql building sql statemen
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • Spark 1.3.1 上的 Apache Phoenix(4.3.1 和 4.4.0-HBase-0.98)ClassNotFoundException

    我正在尝试通过 Spark 连接到 Phoenix 并且在通过 JDBC 驱动程序打开连接时不断收到以下异常 为简洁起见 下面是完整的堆栈跟踪 Caused by java lang ClassNotFoundException org a
  • 磁模拟

    假设我在 n m 像素的 2D 表面上有 p 个节点 我希望这些节点相互吸引 使得它们相距越远吸引力就越强 但是 如果两个节点之间的距离 比如 d A B 小于某个阈值 比如 k 那么它们就会开始排斥 谁能让我开始编写一些关于如何随时间更新
  • 无法解析插件 Java Spring

    我正在使用 IntelliJ IDEA 并且我尝试通过 maven 安装依赖项 但它给了我这些错误 Cannot resolve plugin org apache maven plugins maven clean plugin 3 0
  • JRE 系统库 [WebSphere v6.1 JRE](未绑定)

    将项目导入 Eclipse 后 我的构建路径中出现以下错误 JRE System Library WebSphere v6 1 JRE unbound 谁知道怎么修它 右键单击项目 特性 gt Java 构建路径 gt 图书馆 gt JRE
  • 总是使用 Final?

    我读过 将某些东西做成最终的 然后在循环中使用它会带来更好的性能 但这对一切都有好处吗 我有很多地方没有循环 但我将 Final 添加到局部变量中 它会使速度变慢还是仍然很好 还有一些地方我有一个全局变量final 例如android Pa

随机推荐

  • 使用 sed 在文本范围下方插入行

    我有一段文本 其中一些部分由四空格缩进清晰地界定 PERCHANCE he for whom this bell tolls may be so ill as that he knows not it tolls for him and p
  • 使用 Pandas 数据框中的字数统计来删除仅包含一个单词的行

    我有一个包含 2 条记录的数据框 数据 id text 0001 The farmer plants grain 0002 tuna 我想统计一下里面的单词数text该数据框的列并删除只有一个单词的行 我知道如何计算单词数 count da
  • 在 Java 中实现排列算法的技巧

    作为学校项目的一部分 我需要编写一个函数 该函数将接受整数 N 并返回数组 0 1 N 1 的每个排列的二维数组 该声明看起来像 public static int permutations int N 该算法描述于http www usn
  • Apache 重写规则可以使用或不使用尾部斜杠

    我正在尝试重定向一系列静态 URL 并且无论尾部斜杠是否存在 我都希望它能够正常工作 foo bar gt tacos foo bar gt tacos 我已经尝试了以下方法以及各种变体 但我总是只得到尾部斜杠存在的匹配项 RewriteR
  • 在键盘快捷键上插入预定义文本

    我经常插入binding pry当我调试我的 ruby 文件时 当我使用 Vim 时 我希望将其自动化 以避免每次都重新输入 我怎样才能做到呢 我想要映射的确切顺序是 插入新行 Insert binding pry到新创建的行 返回正常模式
  • 在 Visual Studio 2010 中标准化行结尾

    我们有多个开发人员在开发一个应用程序 似乎每当一个特定的人在处理一个文件时 其他人在处理该文件时 他们都会得到 以下文件中的行结尾不一致 你想要 标准化行结尾 Visual Studio 中是否有一些选项可供开发人员更改 这样我们就不会一直
  • 将ForeignCollection 转换为ArrayList - ORMLite、Gson 和 Android

    如果我的解释不太清楚 我深表歉意 但如果需要 我会添加并编辑这个问题以使其清晰 我正在开发一个 Android 应用程序 它通过外部 API 接收数据并使用 ORMLite 在本地存储数据 在本地存储数据并使用 ORMLite 之前 我有一
  • 我可以使用正则表达式匹配粗体文本吗?

    我有一个文本打击 我想匹配所有粗体文本 因此 在不依赖前缀 即序列号 的情况下 我可以使用正则表达式仅匹配粗体字符吗 斯伯丁 K L Buchholz B A Bergman L E Druid H Fris n J 法医学 核试验写在牙齿
  • 保护/取消保护 Word 文档

    有没有办法通过密码以编程方式保护 取消保护Word文档office js 我已经检查了 API 文档 https github com OfficeDev office js docs blob WordJs 1 4 OpenSpec re
  • OutOfRangeError(请参阅上面的回溯):FIFOQueue '_1_batch/fifo_queue' 已关闭并且元素不足(请求 32,当前大小 0)

    我在使用队列中张量流读取图像时遇到问题 请让我知道我犯了什么错误 下面是代码 import tensorflow as tf slim tf contrib slim from tensorflow python framework imp
  • Qt程序部署到多平台,如何?

    我是 Qt 编程新手 我想开发一个程序 我想在 Windows Linux ubuntu 和 Mac 上运行 听说Qt支持多平台应用程序开发 但我的问题是 在我部署或编译后 任何 Qt 库都需要在 Ubuntu 中运行这个应用程序吗 如果您
  • 更改seaborn.clustermap中ytick标签的颜色

    是否可以更改seaborn clustermap中ytick标签的颜色 所以对于Seaborn 鸢尾花示例 http seaborn pydata org generated seaborn clustermap html 可以根据物种设置
  • Google 地图上的自定义路线/路径/道路

    我需要能够使用 V2 或 V3 最好是 3 创建在某种意义上忽略建筑物的路径 我试图创建一个 kml 文件来自己绘制所有路径 然后找到某种方法根据需要打开 关闭它们 例如 用户想要从 A 点前往 B 点 这些点之间有许多建筑物 用户可以实际
  • 如何在多行 Flexbox 布局中指定换行符?

    有没有办法在多行弹性框中进行换行 例如 在每个第三项之后中断这个代码笔 https codepen io asvirskyi pen bdbLNz container background tomato display flex flex
  • 使用FFT算法计算

    给定在平面上的点 1 0 2 0 n 0 上发现的一组 n 个粒子电荷载流子 在 i 0 点发现的粒子电荷记为 Qi 作用在粒子上的力由以下公式给出 C is a Coulomb s constant 给出一个算法来计算 Fi 对于总复杂度
  • 从平面数组创建嵌套对象

    我目前有一个对象数组 我正在尝试将其重塑为嵌套对象ID作为对象键 并将其作为目标ID与parentid 如果不是 0 我尝试了几种方法 但我很挣扎 主要绊脚石for me是超过一两层深度的任何东西 理想情况下 我需要它是动态的 这样它就可以
  • 在 Eigen 中创建重塑函数

    这是 Eigen 中重塑函数的代码 有用 typedef MatrixXd mat typedef VectorXd vec Map
  • 将数据类型设置为 Kind * -> * 这不是函子

    布伦特 约尔吉类型分类百科全书 https www haskell org haskellwiki Typeclassopedia给出以下练习 举一个类型的例子 gt 不能将其制成 的实例Functor 不使用undefined 请告诉我什
  • 在 ApiController 操作中获取当前用户,而不将 userID 作为参数传递

    我们如何在安全的 ApiController 操作中获取当前用户 而不将 userName 或 userId 作为参数传递 我们假设这是可用的 因为我们处于安全操作范围内 处于安全操作意味着用户已经通过身份验证并且请求具有她的不记名令牌 鉴
  • 如何将 Hamcrest 匹配器应用于被测类的属性?

    有没有办法构建一个组合的 Hamcrest 匹配器来测试对象和该对象的属性 伪代码 both instanceof MultipleFailureException class and pseudo code starts adapt ne