You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在AWS环境中使用外部JSON测试数据时遭遇FileNotFoundException

解决AWS环境下TestNG测试读取外部JSON文件的FileNotFoundException问题

从你提供的日志能看出,测试运行时找不到src/test/resources/LoginPage.json文件,导致抛出文件不存在的异常。这种问题大多和路径配置、资源打包逻辑或者AWS环境的路径特性有关,下面给你几个实用的排查和解决方向:

1. 先确认文件存在性与路径正确性

  • 先检查本地项目里src/test/resources/LoginPage.json是否真的存在,一定要注意文件名的大小写——AWS环境(比如EC2、Lambda)基本基于Linux系统,是严格区分大小写的,而本地如果是Windows系统不区分大小写,很容易因为这点疏忽导致线上找不到文件。
  • 如果你用Maven或Gradle构建项目,要确保src/test/resources是正确的测试资源目录,构建工具会自动把这个目录下的文件打包到测试类路径里。可以先在本地执行mvn test或者gradle test,确认本地能正常运行,先排除本地项目本身的问题。

2. 改用类加载器读取资源(推荐方案)

别再用硬编码的文件系统路径(比如new FileInputStream("src/test/resources/LoginPage.json"))了,AWS环境的运行目录和本地完全不一样,这种相对路径到了线上肯定会失效。改用类加载器从类路径读取文件,能适配所有运行环境:

// 方式1:通过当前测试类的类加载器读取
InputStream inputStream = LoginTest.class.getResourceAsStream("/LoginPage.json");

// 方式2:通过系统类加载器读取
InputStream inputStream = ClassLoader.getSystemResourceAsStream("LoginPage.json");

这种方式会自动从类路径里查找文件,只要文件被正确打包到测试包中,不管在本地还是AWS都能正常读取。

3. 检查AWS环境的资源打包与权限

  • 如果是把项目打包后部署到AWS,建议解压测试包(比如测试JAR文件),确认LoginPage.json是否在resources目录下,避免打包时不小心遗漏了资源文件。
  • 如果是单独把文件上传到AWS服务器(比如EC2实例),要确保文件上传的路径和代码里写的路径完全一致,并且运行测试的用户拥有该文件的读取权限。可以通过SSH连接到EC2,执行ls -l src/test/resources/LoginPage.json查看文件是否存在以及权限设置是否正确。

附相关报错日志:

[TestNG] INVOKING: "test" - testscripts.LoginTest.loginWithValidCredentialsTest()
[Invoker 1915058446] Invoking testscripts.LoginTest.loginWithValidCredentialsTest
2018-01-22 15:09:25 INFO testpages.LoginPage:46 - 点击了跳过按钮
2018-01-22 15:09:27 INFO testpages.LoginPage:50 - 点击了登录按钮
2018-01-22 15:09:27 INFO testpages.LoginPage:96 - 输入用户名和密码
java.io.FileNotFoundException: src/test/resources/LoginPage.json (No such file or directory)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.(FileInputStream.java:138)

内容的提问来源于stack exchange,提问作者Suraj Jogdand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:53:49