无法读取 aws 设备场中的属性文件

2023-12-11


我的 Appium + JUnit 测试在本地工作得很好,但在 aws 上找不到属性文件。我的测试放在下面src/test/java和测试中使用的属性文件src/test/resources/locale。 包含依赖项内容的 Zip:

├── app-0.1-tests.jar
├── app-0.1.jar
└── dependency-jars     
    ├── ...

app-0.1-tests.jar内容:

├── META-INF
│   ├── MANIFEST.MF
│   ├── maven
│      ├── ....
├── com
│      ├── ....
└── locale
       ├── en_EN.properties

不幸的是,当我尝试加载属性文件时,出现 IOException - 文件未在以下位置找到:file:/tmp/scratchcC4yMz.scratch/test-packagefQ2euI/app-0.1-tests.jar!/locale/en_EN.properties

每次遇到同样的问题时,我都尝试通过多种方式加载它们。在当地,一切都很有魅力。代码示例:

File file = new File(ClassName.class.getResource("/locale/en_EN.properties").getPath());
try (InputStream inputStream = new FileInputStream(file.getPath());
InputStreamReader streamReader = new InputStreamReader(inputStream, Charset.forName("UTF-8"))) {
    Properties properties = new Properties();
    properties.load(streamReader);
    return properties;
} catch (IOException e) {
    System.err.println("Properties file not found: " + file.getPath());
}

或者使用类加载器:

ClassLoader classLoader = getClass().getClassLoader();
URL resource = classLoader.getResource("/locale/en_EN.properties");

有人可以建议解决方案如何读取位于资源中的属性文件吗?


这是我所做的并且似乎有效:

/**
 * Rigourous Test :-)
 */
public void testApp()
{
    //taken from https://www.mkyong.com/java/java-properties-file-examples/
    //create properties object
    Properties prop = new Properties();
    InputStream input = null;
    //load in the properties file from src/test/resources 
    try {

        input = Thread.currentThread().getContextClassLoader().getResourceAsStream("myproperties.properties");

        // load a properties file
        prop.load(input);

        // get the property value and print it out
        System.out.println(prop.getProperty("devicefarm"));

    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        if (input != null) {
            try {
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

这是我从设备场的 java 输出:

[TestNG] Running:
  Command line suite

helloWorld

这是我的属性文件的内容:

devicefarm=helloWorld

在我的本地测试中,它似乎也有效:

-------------------------------------------------------
 T E S T S
-------------------------------------------------------
Running com.devicefarm.www.AppTest
helloWorld
Tests run: 1, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.018 sec

Results :

Tests run: 1, Failures: 0, Errors: 0, Skipped: 0

看来,属性文件打包后,我们无法像通过maven在本地那样在java中引用它。如果我们尝试使 test-jar 可执行并运行该 jar,我认为会发生同样的事情。

编辑:有关类加载器和线程加载器之间的区别,请参阅此 SO 帖子。

https://stackoverflow.com/a/22653795/4358385

关于导出 tmp 目录,在此页面上我们可以告诉 device farm 导出我们想要的任何目录

exporting the tmp directory

然后,当测试完成时,我们可以单击客户工件链接并获取该导出的 zip。

enter image description here

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法读取 aws 设备场中的属性文件 的相关文章

随机推荐

  • h1 和 h2 类未显示在 Internet Explorer 中

    我无法获取h1 and h2标签完全显示在 Internet Explorer 中 我查看了 CSS 文件 但仍然不明白为什么它不能在 IE9 上运行 以下是 IE 中未显示的标题的 CSS 代码 person h1 color 47526
  • EXC_BAD_ACCESS 调用块

    更新 我已经使用面板 上传了一个示例项目并在此处崩溃 http w3style co uk d11wtq BlocksCrash tar gz 我知道 选择 按钮没有任何作用 我还没有实现它 更新2 刚刚发现我什至不需要调用任何东西newF
  • pyparsing - 如何使用比较运算符解析字符串?

    所以 我有一个NumericStringParser类 摘自here 定义如下 from future import division from pyparsing import Literal CaselessLiteral Word C
  • 在 C++ 程序中使用多个 .cpp 文件?

    我最近从 Java 转向 C 但现在当我编写应用程序时 我对在主函数中编写所有代码不感兴趣 我希望在主函数中调用另一个函数 但这个另一个函数位于另一个 cpp 文件中 如果你不明白 让我更好地解释一下 我有一个文件 main cpp在它里面
  • Shiny - 使用基于输入的过滤数据填充静态 HTML 表

    我目前正在开发一个 Shiny 应用程序 它显示一个静态 HTML 表格 由于 HTML 代码的大小 该表格源自另一个文件 该表使用空数据表进行初始化 以便呈现空表 上面的HTML表格都是正常的selectizeInput在后台过滤数据表的
  • android imageView:设置拖动和捏缩放参数

    我目前正在为 Android 我的第一个应用程序 开发一个应用程序 它可以让用户查看地铁地图并能够进行缩放和拖动 我目前正在修改 Hello Android 第 3 版中的代码 并让捏缩放和拖动功能正常工作 我使用 Matrix 作为布局比
  • 如何在 Liferay 6 中以编程方式创建结构和模板

    我需要通过 java 代码以编程方式创建结构和模板 我使用了以下代码片段 结构 public void createStructure String userName long userId log info Inside create s
  • 用户“homestead”@“localhost”的访问被拒绝(使用密码:YES)

    我在 Mac OS Yosemite 上使用 Laravel 5 0 当在我的local环境 我跑php artisan migrate我不断得到 用户 homestead localhost 的访问被拒绝 使用密码 YES 配置 这是我的
  • 关闭 PHP 和 MySQL 上的警告和错误

    我收到了预期的通知和警告 并想在我的 PHP 文件中将其关闭 错误是 Warning fsockopen 并且通知内容是 Notice A non well formed numeric value encountered in 我计划对此
  • 为 hibernate 和 @Transactional 配置 spring 数据源

    目前 我正在使用带有 Transactional 注释的 DriverManagerDataSource 来管理事务 但所有事务都非常非常慢 可能是因为数据源每次打开和关闭与数据库的连接 我应该使用什么数据源来加速交易 我在我的应用程序中结
  • InteropBitmap 到 BitmapImage

    我正在尝试转换Bitmap SystemIcons Question to a BitmapImage所以我可以在 WPF Image 控件中使用它 我有以下方法将其转换为BitmapSource 但它返回一个InteropBitmapIm
  • 如何将参数传递给事件触发器wpf中存在的方法

    实际上 我试图在 Xaml 文件的 ViewModel 中存在的方法 UpdateWord object obj 中传递单词文档的名称 这样就可以打开word文档了
  • 即使遵循了最佳实践,仍然不断达到 GitHub 二级速率限制?

    在我的应用程序中 我使用令牌向 GitHub 搜索 API 发出经过身份验证的请求 我每 2 秒发出一次请求 以保持在每分钟 30 个请求的主要速率限制内 因此不是同时进行 并且在进行实际的搜索 API 调用之前 我还会使用 GitHub
  • 确定 PHP 中缩短的 URL 的最终目的地?

    我怎样才能在 PHP 中做到这一点 例如 bit ly f00b4r gt http www google com search q cute kittens 在Java中 解决方案是这样的 您应该发出 HEAD 请求 使用 HttpWeb
  • 第二个重写规则在 htaccess 中不起作用并显示 404 未找到页面

    嗨 我有这样的链接 www example com a letter a 1 html www example com b letter b 1 html a字母和b字母文件夹下还有3个文件 我删除了a letter包含以下 htacces
  • C# - 转换 8 位或 16 位灰度原始像素数据

    我需要能够将 8 位或 16 位灰度像素数据转换为 NET 框架可以支持的文件格式 我拥有的可用数据是宽度 高度 方向 左下角 和像素格式 即 4096 级灰度 12 位分辨率 每个像素封装为 2 个字节 例如每个像素的范围是 0 到 40
  • HTML 输入忽略 flex-basis CSS 属性 [重复]

    这个问题在这里已经有答案了 不知何故 输入无法正确感知弹性基础 这是一个最简单的示例 说明输入如何不服从并跨越其父块之外 请参阅jsfiddle div div
  • 如何覆盖!重要? [复制]

    这个问题在这里已经有答案了 我编写了一些 html 并将一些 css 样式注入到第三方网站中 但 他们的风格与我的风格相混淆由于一些 important声明 我不想这样 也不想在我的风格中使用 important 我可以做什么来防止这种情况
  • 无法备份 docker 卷

    我正在遵循官方 docker 指南here备份 docker 卷 我也知道这个问题但是我仍然遇到错误 运行以下命令 docker run rm volumes from dbstore v pwd backup ny db 1 tar cv
  • 无法读取 aws 设备场中的属性文件

    我的 Appium JUnit 测试在本地工作得很好 但在 aws 上找不到属性文件 我的测试放在下面src test java和测试中使用的属性文件src test resources locale 包含依赖项内容的 Zip app 0