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

Hamcrest JDK7迁移

杨飞飙
2023-03-14

您好,我尝试将项目从Java6迁移到Java7(JDK1.7.0Ø21)。在一次测试中,我注意到失败。

更新:我调试了这个问题。我要找一个打字机。findExpectedType。

public Class<?> findExpectedType(Class<?> fromClass) {
for (Class<?> c = fromClass; c != Object.class; c = c.getSuperclass()) {
    for (Method method : c.getDeclaredMethods()) {
        if (canObtainExpectedTypeFrom(method)) {
            return expectedTypeFrom(method);
        }
    }
}
throw new Error("Cannot determine correct type for " + methodName + "() method.");

}

JDK6和JDK7之间的顺序与c.getDeclaredMethods()中的顺序不同。我在两个版本上都进行了动态检查,这两种方法都将通过条件,因此,重要的是哪种方法将是列表中的第一个。

更新的问题是:hamcrest方法是否应该检查更多的内容,或者扩展CustomTypeSafeMatcher的类是否编写得很糟糕?

MyMatchedObjectMatcher有两种MatchesSafey方法:

@Override
protected boolean matchesSafely(MyMatchedObject actualObject) {(...)}

protected boolean matchesSafely(List<MyMatchedObject> actualObjectList) {(...)}

我发现的最近的报告问题是:https://github.com/hamcrest/JavaHamcrest/issues/30。但是由于内部java方法的意外行为,我认为它可能不是Hamcrest问题...

使用Hamcrest 1.3

共有1个答案

楚浩然
2023-03-14

我公司的学院解决了这个问题。

汉克雷斯特的惯例是有一种匹配方法。但是它可以写得更好,例如。检查方法是否有重写注释。

我的解决方案是删除第二种方法(也可以重命名)。在JDK6上,它靠运气工作;)。

PS:谢谢你乔的刺激。

 类似资料:
  • 应使用版本控制工具记录 schema.rb (或 structure.sql )的变化。 应使用 rake db:scheme:load 而不是 rake db:migrate 来初始化空数据库。 应在迁移文件中设置默认值,而不是在应用层面设置。 # 差——在应用中设置默认值 def amount self[:amount] or 0 end 虽然许多 Rails 开发者建议在 Rails 中

  • RSS 首先,安装 hexo-migrator-rss 插件。 $ npm install hexo-migrator-rss --save 插件安装完成后,执行下列命令,从 RSS 迁移所有文章。source 可以是文件路径或网址。 $ hexo migrate rss <source> Jekyll 把 _posts 文件夹内的所有文件复制到 source/_posts 文件夹,并在 _con

  • Angular 是使用 TypeScript 构建的,并且支持向 Angular 提供元信息的装饰器。 TypeScript 的装饰器会让语法感觉更加“自然”,尽管有可能使用 Angular 没有的功能。

  • 迁移cache分页 仓库地址: cache 安装 composer require illuminate/cache 暂时实现 redis方式 还需安装 composer require illuminate/redis composer require predis/predis //个人比较喜欢predis 启动predis function frameInitialized() {

  • 把项目中使用的老包和类切换为新包 操作步骤: 菜单栏: Refactor —> Migrate...

  • 就像你使用Git / SVN来管理源代码的更改一样,你可以使用迁移来跟踪数据库的更改. 通过迁移,你可以将现有的数据库转移到另一个状态,反之亦然:这些状态转换将保存在迁移文件中,它们描述了如何进入新状态以及如何还原更改以恢复旧状态. 你将需要Sequelize CLI. CLI支持迁移和项目引导. 命令行界面 安装命令行界面 让我们从安装CLI开始,你可以在 这里 找到说明. 最推荐的方式是这样安

  • 迁移是一种结构化与有组织的方式来更改数据库的方便方法。你可以手动编辑 SQL 的片段,然后告知其他开发人员他们需要运行这些片段。你还得保持追踪他们的变化,追踪那些下次部署时那些需要运行但是会与生产设备冲突的变化。 数据库表的 迁移 追踪那些已经运行的迁移信息,你需要做的就是更新你的应用文件并执行 $this->migrate->current() 来计算出哪个迁移信息是需要被运行的。迁移信息的当前

  • 迁移是一种非常方便的途径来组织和管理你的数据库变更,当你编写了一小段 SQL 对数据库做了修改之后,你就需要告诉其他的开发者他们也需要运行这段 SQL , 而且当你将应用程序部署到生产环境时,你还需要记得对数据库已经做了哪些修改, 需要执行哪些 SQL 。 在 CodeIgniter 中,migration 表记录了当前已经执行了哪些迁移,所以 你需要做的就是,修改你的应用程序文件然后调用 $th