如何断言 Iterable 包含具有特定属性的元素?

2023-12-03

假设我想使用以下签名对方法进行单元测试:

List<MyItem> getMyItems();

Assume MyItem是一个具有许多属性的 Pojo,其中之一是"name",通过访问getName().

我所关心的只是验证List<MyItem>,或任何Iterable,包含两个MyItem实例,其"name"属性具有值"foo" and "bar"。如果任何其他属性不匹配,我并不真正关心此测试的目的。如果名称匹配,则测试成功。

如果可能的话,我希望它是单行的。这是我想做的一些“伪语法”。

assert(listEntriesMatchInAnyOrder(myClass.getMyItems(), property("name"), new String[]{"foo", "bar"});

Hamcrest 适合这种类型的事情吗?如果是这样,我上面的伪语法的 hamcrest 版本到底是什么?


谢谢@Razvan,他为我指明了正确的方向。我能够在一行中得到它,并成功地找到了 Hamcrest 1.3 的导入。

进口:

import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.Matchers.contains;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.beans.HasPropertyWithValue.hasProperty;

代码:

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

如何断言 Iterable 包含具有特定属性的元素? 的相关文章

随机推荐

  • 使用 RTC 源代码管理获取已更改文件的文件名、位置和作者

    我正在尝试访问给定流的已更改文件的文件名 位置和作者 下面的代码是我到目前为止所拥有的 看看api文档 这似乎不可能 这可以使用 java api 或其他方法来实现吗 IChangeSetSearchCriteria c IChangeSe
  • 在 C# 中定义操作系统版本

    我有一个问题 我找不到在编译时检测 Windows 版本的方法 我的目的是创建一个依赖于接口的可执行文件 该接口仅在特定版本的Windows中定义 因此 为了制作可执行的跨 Windows 版本 我希望能够为特定 Windows 版本定义包
  • Python while 循环中的准确睡眠/延迟

    我有一个 while True 循环 它将变量发送到外部函数 然后使用返回的值 该发送 接收过程具有用户可配置的频率 该频率是从外部 ini 配置文件中保存和读取的 我尝试过 time sleep 1 Frequency 但考虑到其他地方使
  • Java 中的作用域规则

    有人可以帮助我理解 Java 中的作用域规则吗 这显然是无效的 int i 0 System out println i fine of course System out println i syntax error i被宣布在 而且在外
  • 访问动态分配数组的越界元素/无 SegFault

    我正在用 C 语言开发一个程序 它使用链表数组 原始哈希表 作为数据类型来表示某些日期信息 该数组有 12 个元素 对应于一年中的月份 每个月都有一个包含数据节点的链表 我开发了使用这种数据类型的模块 并且运行良好 后来我发现我正在访问越界
  • GCM 演示服务器向设备发送消息引发 401 错误

    与许多其他 java 和 android 新手一样 我尝试在 Windows 上运行 gcm 演示服务器和 gcm 演示客户端 使用 eclipse 运行虚拟设备 使用 tomcat 作为网络服务器 我在注册和取消注册设备方面没有任何问题
  • objectAtIndexedSubscript 在 IOS5 中可用吗?

    文档称它在 MacOS 1 08 中可用 那么故事是怎样的呢 iOS5呢 这是一个非常重要的选择器 因为 self 5 实际上会变成 self objectAtIndexedSubscript 5 除非我遗漏了一些东西 在 NSOrdere
  • 如何使用初始值设定项列表构造 std::array 对象? [复制]

    这个问题在这里已经有答案了 可能的重复 如何使用初始化器列表初始化成员数组 您可以使用初始值设定项列表构造 std array std array
  • UIDatePicker 设置最大日期

    我使用此代码来阻止用户超出我设置的限制 在视图中确实加载了 NSDate Date NSDate date DatePickerForDate setMinimumDate Date DatePickerForDate setMaximum
  • JavaScript forEach 回调

    我正在深入研究 Javascript 回调之类的东西 我遇到了 forEach 函数 函数说明了一切 循环遍历列表中的每个对象 当我查看文档我看到以下语法 arr forEach callback thisArg 并且文档中还提到了参数 c
  • I18N 基本设计规范

    我是 RSpec 的新手 正在尝试编写一个简单的测试来显示 Devise 正在工作 我选择了一个随机页面 并想要编写一个测试来显示未登录的用户被重新重定向到 users sign in describe OrgsController do
  • 如何在 Python 中生成动态(参数化)单元测试?

    我有某种测试数据 想为每个项目创建一个单元测试 我的第一个想法是这样做 import unittest l foo a a bar a b lee b b class TestSequence unittest TestCase def t
  • R,选择降雨事件并根据时间序列数据计算降雨事件总数

    这是我试图让代码执行的操作 识别数据集中独特的降雨 事件 我想从赛事之间的 6 小时禁赛期开始 我的攻击计划是创建一个列 其中包含事件的独特 标志 事件标志或 ID 可以是事件的开始时间戳或只是 n 1 最后一个标识符 1 1 1 1 2
  • SpriteKit 缺少线性变换矩阵

    有谁知道如何改造 rotate scale skew 使用变换矩阵的 SpriteKit 节点 在 Spritekit API 中找不到对此的任何支持 正如所提到的雾大师 您可以将 SKEffectNode 与 CIFilter 一起使用
  • QGLWidget 在 Windows 7 中显示为黑色

    我使用 Visual Studio 2010 在 Windows XP Qt 4 7 2 中编写并测试了一些代码 然后在另一台安装了 Windows 7 的计算机上进行了尝试 该程序打开一个 QDialog 并创建一个 QGLWidget
  • 如何在 JavaScript 中获取日期时间?

    如何在 JavaScript 中获取格式为 31 12 2010 03 55 AM 的日期时间 从语义上讲 您可能正在寻找一句话 new Date toLocaleString 它格式化用户区域设置中的日期 如果您确实正在寻找格式化日期的特
  • 更改php中的日期时间格式

    这是格式 d m Y H i s 15 11 2008 7 16 09 我想更改为这种格式 Y m d H i s 2008 11 15 07 16 09 尝试了 strtotime 函数 但它将 m 视为 d 将 d 视为 m 帮助 ph
  • VBA For循环不退出

    我正在循环遍历表的行并在不满足某些条件时删除行 由于某种原因 我的 for 循环即使完成也不会退出 我究竟做错了什么 lastr Range a2 End xlDown Row For r 2 To lastr If Cells r 1 V
  • 如何在 Windows 上强制 printf 输出 [-]inf 或 [-]infinity?

    C99标准说 表示无穷大的双参数被转换为以下之一 styles inf 或 infinity 实现的样式是 实现定义的 第 278 页第 7 19 6 1 节 不幸的是在 Windows 上 printf f n 1 0f 0 0f 产生
  • 如何断言 Iterable 包含具有特定属性的元素?

    假设我想使用以下签名对方法进行单元测试 List