这一个阶段的公司任务是给一家国外公司在国内创业做技术支持,对方说希望使用Java EE技术。我马上想到了江南白衣的SpringSide,我很喜欢这个东西,而且刚刚更新,马上Download下来。以前用过SpringSide最早的版本,现在看看更新了好多,好多东西自己还没听说过,非常值得好好研究一下。
SpringSide好是好,不过一看到bat,没有sh,完蛋,打开win本先看看吧。额额,一切非常顺利,迁移到mac上,却出现问题了,modules/core测试不通过,Struts2UtilsTest类中的renderJson()方法有问题;此方法内的后3个assertEquals出现了问题
引用
{"age":10,"name":"foo"}=>{"name":"foo","age":10}
[{"age":10,"name":"foo"},{"age":10,"name":"foo"}]=>[{"name":"foo","age":10},{"name":"foo","age":10}]
[{"age":10,"name":"foo"},{"age":10,"name":"foo"}]=>[{"name":"foo","age":10},{"name":"foo","age":10}]
前者是期望的Json,后者是实际的Json。
奇了怪了,怎么Win和Mac的结果不一样?
首先我认为这里的测试不适合这样写
assertEquals("[{\"age\":10,\"name\":\"foo\"},{\"age\":10,\"name\":\"foo\"}]",response.getContentAsString());
因为Json除了array元素需要顺序,其他元素不需要顺序。也就是说在[{Object1},{Object2}]当中,Object1和Object2是有循序结构的,而Object1{"age":10,"name":"foo"}内部的:age 和:name则不需要循序结构,但并不包括其中的数组。换言之,
{"age":10,"name":"foo"}.should eq {"name":"foo","age":10}
{"age":10,"name":"foo"}{"age":20,"name":"foo2"}.should eq {"name":"foo","age":10}{"name":"foo2","age":20}
{"age":10,"name":"foo"}{"age":20,"name":"foo2"}.should_not eq {"name":"foo2","age":20}{"name":"foo","age":10}
{"age":10,"name":"foo","arr":["1","2"]}{"age":20,"name":"foo2"}.should_not eq {"name":"foo","age":10,"arr":["2","1"]}{"name":"foo2","age":20}
综上所述,判定Json的相等,用String并不合适。
在SpringSide提供的场景,我认为修改策略有2
1》实现一个判定两个JsonString equal的方法
2》直接由JsonString生成两个Object,由Object的equal方法判定
我采用方法2的方式如下
assertEquals(mapper.readValue("{\"name\":\"foo\",\"age\":10}", Object.class), mapper.readValue(response
.getContentAsString(), Object.class));
分享到:
相关推荐
Eigen3.3.4是Eigen库的一个版本,它是一个开源的C++模板库,主要用于处理线性代数问题,如向量、矩阵运算以及相关的线性方程组求解。这个测试工程是为了验证和理解Eigen3.3.4在实际项目中的应用。 Eigen库的核心...
2. **Windows环境下的Hadoop**:在Windows上运行Hadoop,需要解决路径名长度限制、文件权限问题以及与Linux兼容性问题。"winutils"是Hadoop在Windows上的工具包,包含`hadoop.dll`等关键库文件,它们是Hadoop在...
Apache Hadoop (hadoop-3.3.4.tar.gz)项目为可靠、可扩展的分布式计算开发开源软件。官网下载速度非常缓慢,因此将hadoop-3.3.4 版本放在这里,欢迎大家来下载使用! Hadoop 架构是一个开源的、基于 Java 的编程...
《matplotlib-3.3.4:深度学习可视化的重要工具》 matplotlib是Python编程语言中一个极为重要的数据可视化库,它的存在极大地丰富了Python在数据可视化领域的应用能力。本资源提供的"matplotlib-3.3.4.tar.gz"是...
vue-3.3.4
Eigen 3.3.4 是一个流行的开源C++库,专为数值线性代数而设计,用于高效处理向量和矩阵运算。这个库在计算机科学的多个领域中都有着广泛的应用,包括机器学习、图像处理、物理模拟以及工程计算等。它的主要特点是...
1. 解压文件:首先,你需要从提供的资源包中解压`zookeeper-3.3.4.tar.gz`,在命令行中执行`tar -zxvf zookeeper-3.3.4.tar.gz`完成解压。 2. 配置环境变量:在系统环境变量中添加Zookeeper的路径,例如在`~/....
Bootstrap 3.3.4 是一个广泛使用的前端开发框架,为构建响应式、移动设备优先的网站提供了强大的工具。这个中文文档集包含了该版本的所有关键信息,帮助开发者更有效地理解和应用Bootstrap。 首先,我们来看看...
Eigen库是C++编程语言中一个非常流行的开源矩阵和向量运算库,主要用来处理线性代数问题。它的最新版本是"Eigen3.3.4",这表明该库已经经过了多次优化和更新,提供了高效且稳定的矩阵运算功能。在本文中,我们将深入...
描述简单明了,表明提供的是matplotlib 3.3.4版本的whl文件,这是一种Python的二进制安装包格式,旨在简化库的安装过程,特别是对于那些可能遇到编译问题的平台或环境。 标签部分进一步强调了这个资源与matplotlib...
Bootstrap 3.3.4是Web开发中广泛使用的前端框架,尤其因其强大的响应式布局功能而备受赞誉。这个版本在Bootstrap 3系列中是稳定且成熟的,为开发者提供了丰富的组件和工具,使得创建美观、易用且适应各种设备的网站...
Qt.for.Windows.3.3.4.商业版.qt-win-commercial-3.3.4.exe
ffmpeg3.3.4 Windows 独立运行静态版,包含32位和64位,包含ffmpeg ffplay ffprobe,具体参数如下 ffmpeg 3.3.4 gcc 7.2.0 --enable-nvenc --enable-libmfx --enable-libfdk-aac 0.1.4 --enable-libspeex 1.2 --...
SpringSide3.3.4 安装部署详解 SpringSide3.3.4 安装部署是指在计算机上安装和部署 SpringSide3.3.4 软件的过程。在这个过程中,我们需要使用 Maven 工具来生成项目模板,安装 mini-web 应用程序,并配置相应的...
《VC6.0与Qt3.3.4:经典组合在现代编程中的应用与解析》 Visual C++ 6.0(简称VC6.0)是Microsoft公司开发的一款经典集成开发环境,它在20世纪末至21世纪初广泛应用于Windows平台上的C++应用程序开发。尽管已经过了...
Python 3.3.4是Python编程语言的一个稳定版本,发布于2014年,为用户提供了一系列增强和改进的功能。这个msi安装包是专为Windows操作系统设计的,使得用户能够简单快捷地在Windows环境下安装Python。接下来,我们将...
标题 "ffmpeg3.3.4" 指的是 FFmpeg 的特定版本 3.3.4,这是一个稳定且广泛使用的版本。 描述中的 "ffmpeg-3.3.4-win64-dev.zip" 提示我们这是一个针对 Windows 64 位系统的开发包,包含了开发 FFmpeg 应用程序所需...
这个“bootstrap-3.3.4工具包”包含了Bootstrap 3.3.4版本的所有资源,这是Bootstrap 3系列的一个稳定版本。 Bootstrap 3.3.4的核心特性包括: 1. **响应式布局**:Bootstrap 3.3.4设计的核心是响应式,这意味着...
1. **响应式网格系统**:Bootstrap 3.3.4采用12列的响应式网格布局,允许开发者创建灵活多变的页面结构,适应不同屏幕尺寸的设备,从桌面到平板再到手机。 2. **预定义的CSS类**:提供大量的预定义CSS类,如排版、...
3. 图标:Bootstrap 3.3.4使用Glyphicons图标集,这些图标是矢量图形,可以在不同分辨率下保持清晰。它们位于`fonts`子目录中,包括`.eot`、`.svg`、`.ttf`、`.woff`和`.woff2`等不同格式,以支持各种浏览器。 在...