默认编码导致批量测试失败的案例

首先描述一下我们的测试环境,为了保证测试的隔离性,我们在每个测试开始之前会进行清库操作以及初始数据的准备操作,以及其他的环境属性配置,测试完成之后也会进行数据的预期比对操作。所有的数据一开始存放在excel当中。
在这里插入图片描述
实际测试情况如下:
在IDE(idea 或 eclipse)中测试全部测试通过
在Windows环境中通过maven测试 固定比例的测试失败
在Linux环境中 通过maven测试 全部测试通过

后来发现,由于部分的测试需要数据库初始化脚本里面的数据,如下所示:
在这里插入图片描述
这些脚本的名称与测试封装接口相同,在测试之前会自动读取这个脚本并进行数据库操作,注意到这里面涉及到中文字符,正是这些中文字符导致了windows环境中maven测试失败的。

当时查询数据库,发现数据库中对应的数据都是乱码的,然后确定是使用的编码不对。代码如下:

public static String[] loadFileAsStringArray(String resoureLocation, String delimiter) {
	try {
		ResourceLoader resourceLoader = new DefaultResourceLoader();
		Resource resource = resourceLoader.getResource(resoureLocation);
		File file = resource.getFile();
		// 这里读取文件使用的默认编码
		String content = FileUtils.readFileToString(file, Charset.defaultCharset());
		String[] arr = content.split(delimiter);
		List<String> retList = new ArrayList<String>();
		for (String a : arr) {
			if (StringUtils.isNotBlank(a)) {
				retList.add(a.trim());
			}
		}
		return retList.toArray(new String[retList.size()]);
	} catch (Exception e) {
		logger.error(e.getMessage(), e);
		throw new RuntimeException("解析文件失败", e);
	}
}

以上读取文件使用了默认编码,注意此处的默认其实是依赖环境的,与"默认大于约定"里面的默认不一样,在ide里面设置的为utf-8,linux下也是utf-8,但是windows下为gbk。所以才导致了windows下的乱码问题。
修改对应代码如下即可:

String content = FileUtils.readFileToString(file, Charset.forName("utf-8"));

默认不代表确定性,可能依赖于环境,此时就需要格外注意了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在Eclipse中,可以通过以下步骤来设置默认编码格式: 1. 点击 "Window" 菜单,选择 "Preferences"。 2. 在弹出的对话框中,展开 "General" 菜单,然后选择 "Workspace"。 3. 在右侧的选项中,可以设置默认编码格式为 UTF-8。点击 "Apply and Close" 保存并关闭对话框。 此外,还可以设置 JSP 页面的默认编码格式: 1. 点击 "Window" 菜单,选择 "Preferences"。 2. 在弹出的对话框中,展开 "Web" 菜单,然后选择 "JSP Files"。 3. 在右侧的选项中,可以设置默认编码格式为 UTF-8。点击 "Apply and Close" 保存并关闭对话框。 对于 Java EE 项目中的 Tomcat 默认编码格式,可以参考以下步骤: 1. 在打开的 Eclipse 中,点击 "Window" 菜单,选择 "Preferences"。 2. 在弹出的对话框中,展开 "General" 菜单,然后选择 "Content Type"。 3. 在 "Content Types" 列表中,找到 "Java Properties File"(和 "Java Source File")。 4. 可以设置默认编码格式,然后点击 "Update",最后点击 "Apply and Close" 保存并关闭对话框。 通过以上步骤,可以在 Eclipse 中设置默认编码格式。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Eclipse中设置默认编码格式UTF-8(彻底解决乱码)](https://blog.csdn.net/qq_43564914/article/details/107139122)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [Eclipse 设置默认编码格式](https://blog.csdn.net/Q_Sea__/article/details/79733274)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lang20150928

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值