assertThat - hamcrest - 检查列表是否已排序

2024-04-09

好吧,我认为这将是一个简短的问题。我有一个按日期排序的 ArrayList,当然我看到它有效,但我也想为它编写一个测试。

我想检查列表中的下一个值(日期)是否低于前一个值。我可以使用一些来做到这一点fors 并添加临时列表,但我想知道是否有更简单的解决方案。我在腿托文档中读到有类似的内容contains(hamcrest 包含)迭代对象(列表、地图等),但我仍然不知道下一步该做什么。


[第一个选项]:你可以编写自己的 Matcher。类似于(免责声明:这只是示例代码,未经测试,可能并不完美):

@Test
  public void theArrayIsInDescendingOrder() throws Exception
  {
    List<Integer> orderedList = new ArrayList<Integer>();
    orderedList.add(10);
    orderedList.add(5);
    orderedList.add(1);
    assertThat(orderedList, isInDescendingOrdering());
  }

  private Matcher<? super List<Integer>> isInDescendingOrdering()
  {
    return new TypeSafeMatcher<List<Integer>>()
    {
      @Override
      public void describeTo (Description description)
      {
        description.appendText("describe the error has you like more");
      }

      @Override
      protected boolean matchesSafely (List<Integer> item)
      {
        for(int i = 0 ; i < item.size() -1; i++) {
          if(item.get(i) <= item.get(i+1)) return false;
        }
        return true;
      }
    };
  }

这个例子是与Integer但你可以这样做Date很容易。

[第二个选项],基于参考contains在OP的问题中:您可以创建第二个列表,对原始列表进行排序,而不是使用assertThat(origin, contains(ordered))。这样,可以更准确地描述最终的错误,因为如果某个元素不符合预期的顺序,则会被指出。例如,这段代码

@Test
  public void testName() throws Exception
  {
    List<Integer> actual = new ArrayList<Integer>();
    actual.add(1);
    actual.add(5);
    actual.add(3);
    List<Integer> expected = new ArrayList<Integer>(actual);
    Collections.sort(expected);
    assertThat(actual, contains(expected.toArray()));
  }

将生成描述

java.lang.AssertionError: 
Expected: iterable containing [<1>, <3>, <5>]
     but: item 1: was <5>
    at org.hamcrest.MatcherAssert.assertThat(MatcherAssert.java:20)
    at org.junit.Assert.assertThat(Assert.java:865)
    at org.junit.Assert.assertThat(Assert.java:832)
    ...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

assertThat - hamcrest - 检查列表是否已排序 的相关文章

  • 存根方法时出现 InvalidUseOfMatchersException

    我有这个 TestNG 测试方法代码 InjectMocks private FilmeService filmeService new FilmeServiceImpl Mock private FilmeDAO filmeDao Bef
  • 如何将 javax.persistence.Column 定义为 Unsigned TINYINT?

    我正在基于 MySQL 数据库中的现有表创建 Java 持久性实体 Bean 使用 NetBeans IDE 8 0 1 我在这个表中遇到了一个字段 其类型为 无符号 TINYINT 3 我发现可以执行以下操作将列的类型定义为 unsign
  • 如何在 Firebase 远程配置中从 JSON 获取值

    我是 Android 应用开发和 Firebase 的新手 我想知道如何获取存储在 Firebase 远程配置中的 JSONArray 文件中的值 String 和 Int 我使用 Firebase Remote Config 的最终目标是
  • 打印星号的 ASCII 菱形

    我的程序打印出这样的钻石 但只有当参数或菱形的每一面为4 例如如果我输入6 底部三角形的间距是错误的 我一直在试图找出答案 当参数改变时 底部的三角形不会改变 只有顶部的三角形会改变 它只适用于输入4 public static void
  • 通往楼梯顶部的可能路径

    这是一个非常经典的问题 我听说谷歌在他们的面试中使用过这个问题 问题 制定一个递归方法 打印从楼梯底部到楼梯顶部的所有可能的独特路径 有 n 个楼梯 您一次只能走 1 步或 2 步 示例输出 如果它是一个有 3 级楼梯的楼梯 1 1 1 2
  • 在 Wildfly 中与 war 部署共享 util jar 文件

    假设我有一个名为 util jar 的 jar 文件 该 jar 文件主要包含 JPA 实体和一些 util 类 无 EJB 如何使这个 jar 可用于 Wildfly 中部署的所有 war 无需将 jar 放置在 war 的 WEB IN
  • 如何在代理后面安装 Eclipse Neon

    对于 Neon Eclipse 附带了一个安装程序 我在安装程序中找不到任何配置菜单 我的java版本是 java version java version 1 8 0 72 Java TM SE Runtime Environment b
  • Spring Security SAML2 使用 G Suite 作为 Idp

    我正在尝试使用 Spring Security 5 3 3 RELEASE 来处理 Spring Boot 应用程序中的 SAML2 身份验证 Spring Boot 应用程序将成为 SP G Suite 将成为 IDP 在我的 Maven
  • ConcurrentHashMap 内部是如何工作的?

    我正在阅读有关 Java 并发性的 Oracle 官方文档 我想知道Collection由返回 public static
  • 使用 Guice 优化注册表

    你好 今天思考了一种优化 有一些疑问 语境 我正在使用 Guice 2 进行 Java 开发 在我的网络应用程序中 我有一个转换器注册表 可以即时转换为某种类型 转换器描述如下 public class StringToBoolean im
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 如何在 Spring 属性中进行算术运算?

  • GWT 2.3 开发模式 - 托管模式 JSP 编译似乎不使用 java 1.5 兼容性

    无法编译 JSP 类 生成的 servlet 错误 DefaultMessage 上次更新 0 日期 中 0 时间 HH mm ss z 语法 错误 注释仅在源级别为 1 5 时可用 在尝试以开发模式在 Web 浏览器中打开我的 gwt 模
  • Java实现累加器类,提供Collector

    A Collector具有三种通用类型 public interface Collector
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • QuerySyntaxException:无法找到类

    我正在使用 hql 生成 JunctionManagementListDto 类的实际 Java 对象 但我最终在控制台上出现以下异常 org hibernate hql internal ast QuerySyntaxException
  • 使用布尔值进行冒泡排序以确定数组是否已排序

    我有以下用于冒泡排序的代码 但它根本不排序 如果我删除布尔值那么它工作正常 我知道 由于我的 a 0 小于所有其他元素 因此没有执行交换 任何人都可以帮助我解决这个问题 package com sample public class Bub
  • Java中HashMap和ArrayList的区别?

    在爪哇 ArrayList and HashMap被用作集合 但我不明白我们应该在哪些情况下使用ArrayList以及使用时间HashMap 他们两者之间的主要区别是什么 您具体询问的是 ArrayList 和 HashMap 但我认为要完
  • org.apache.commons.net.io.CopyStreamException:复制时捕获 IOException

    我正在尝试使用以下方法中的代码将在我的服务器中创建的一些文件复制到 FTP 但奇怪的是我随机地低于错误 我无法弄清楚发生了什么 Exception org apache commons net io CopyStreamException
  • 在java中使用多个bufferedImage

    我正在 java 小程序中制作游戏 并且正在尝试优化我的代码以减少闪烁 我已经实现了双缓冲 因此我尝试使用另一个 BufferedImage 来存储不改变的游戏背景元素的图片 这是我的代码的相关部分 public class QuizApp

随机推荐

  • 异步 POST 请求 - R,使用 RCurl?

    我正在尝试从 R 向 REST API 发出异步请求 下面的 curl 命令说明了我需要传递给 api 的参数 我给你们提供了 linux curl 命令 希望这能让你们明白 curl v X POST https app example
  • 如何腌制或存储 Jupyter (IPython) 笔记本会话以供以后使用

    假设我正在 Jupyter Ipython 笔记本中进行更大的数据分析 并完成大量耗时的计算 然后 由于某种原因 我必须关闭jupyter本地服务器I 但我想稍后再返回进行分析 而不必再次进行所有耗时的计算 我喜欢喜欢做的是pickle或者
  • Grails 3 和 Spring @RequestMapping

    在 Grails 3 中 我尝试使用 spring security oauth 它通过 RequestMapping 提供了一些端点 我可以在 mbean 中看到路径已配置 但任何请求总是会命中 grails 并返回 404 这些请求似乎
  • 如何序列化 Jackson 的 JsonNode 对象?

    我正在用 memcached 替换内部缓存系统 但 memcached 客户端无法缓存JsonNode对象 因为它们没有实现Serializable 有什么方法可以实现序列化JsonNode目的 杰克逊提供吗Serializable相当于这
  • python中,按日期字段排序,字段有时可能为null

    我很难想出一个巧妙的方法来处理这种情况 我有从数据库读取回来的数据 我想按会计日期排序 然而 accoutingdate 有时可能为空 我目前正在做以下事情 results sorted results key operator itemg
  • Rails - 禁用选择中的选项(根据条件)

    我已经选择 f select category id categories html options gt class gt select box disabled gt true if category id 18 上面的代码显然返回一个
  • Highcharts 反转折线图在最小值处部分隐藏

    当使用具有最小值和最大值的反向折线图时 线条在最小值处部分隐藏 问题在于绘图画布恰好在最小值线处结束 当一条粗线只有一部分可见时 位于最小值线上方的部分将被隐藏 你可以看一个例子here http jsfiddle net DruGa 2
  • 等待进程组时 waitpid() 无子进程错误

    编写我自己的玩具外壳 并在尝试实现作业控制时遇到了障碍 我正在使用 setpgid 在子进程和父进程中设置子进程组 我的等待电话是 pid waitpid pid status 0 然而 waitpid 返回 1 并且 perror 说 没
  • 从 unicode 字符串中去除特殊字符和标点符号

    我正在尝试从 unicode 字符串中删除标点符号 该字符串可能包含非 ASCII 字母 我尝试使用regex module import regex text u lt ik gt regex sub ur p P text 然而 我注意
  • Julia DataFrames 中的高效自定义排序?

    有没有一种快速的方法来指定自定义订单sort sort 在 Julia 数据框架上 julia gt using DataFrames julia gt srand 1 julia gt df DataFrame x rand 10 y r
  • WS02 ESB 中的 HL7 传输安全吗?

    我的小组正在评估 HL7 代理并遇到了 WS02 ESB 我已经成功配置了一个看起来运行良好的 HL7 代理 现在我的任务是使用 SSL 特别是 TLS 保护监听点 这似乎是 ESB 应该能够处理的事情 它可以执行 HTTPS 安全 Web
  • EditText android:提示不会在焦点上消失

    我使用的是 Android 4 我正在尝试向我的编辑文本小部件添加提示 我尝试将提示添加到布局中 如下所示
  • Bootstrap 4 - 垂直居中列表项

    我有一个使用 Bootstrap 4 beta 的网页 在此页面中 我有一个内联列表 我希望每个列表项的内容垂直居中 以便项目对齐 如图所示Bootply https www bootply com od2qnkLIkQ 它们目前偏离中心
  • Heroku:错误 R10(启动超时)-> Web 进程无法在启动后 60 秒内绑定到 $PORT - Python

    我正在尝试托管一个使用张量流到heroku的瓶子应用程序 应用程序启动 我得到了 服务器在端口上运行 以及 但应用程序未打开 大约一分钟后 它显示以下跟踪 打开跟踪表明服务器运行成功 2018 08 25T19 46 55 651043 0
  • Symfony 内存问题

    我在 symfony 和 cpu 内存泄漏方面遇到了困难 我是 symfony 的新手 我不知道我是否弄乱了任何技巧或技术来克服这个问题 我在 vps 上托管我当前的 symfony 项目 它几乎每隔一小时就会停止一次 我也想知道这些问题的
  • 如何在jquery中将html2canvas图像保存到系统文件夹中

    我有一个 id form1 的表单 在这个表单中我有一个图表 现在我使用 html2canvas 来获取此 form1 的图像 这是我的代码
  • 带有图标相对路径的 Windows 快捷方式

    有没有办法设置Windows快捷方式中图标的相对路径 对于目标位置 它工作正常 windir system32 cmd exe c cd CD start fileToExecute bat 我读到 win 快捷方式可以自动从 exe 文件
  • Android JavaCV 困境,创建 IplImage 时在“draw”方法中抛出 NoClassDefFoundError

    我正在使用 JavaCV 库和针对 Android 的预构建 OpenCV 库 我认为我已经以正确的方式设置了 Eclipse 因为我已经包含了 javacv jar 和 javacpp jar 两个 jar 另外 java cv andr
  • 如何将项目添加到SqlDataSource数据绑定列表

    我很懒 我正在使用 SQLDataSource 来填充我的下拉列表 数据绑定对象的 Databind 事件在 Page PreRender 之前调用 因此我在 PreRender 事件处理程序中执行类似的操作 private void In
  • assertThat - hamcrest - 检查列表是否已排序

    好吧 我认为这将是一个简短的问题 我有一个按日期排序的 ArrayList 当然我看到它有效 但我也想为它编写一个测试 我想检查列表中的下一个值 日期 是否低于前一个值 我可以使用一些来做到这一点fors 并添加临时列表 但我想知道是否有更