gpt4 book ai didi

java - 访问 Android UI Automator 测试的资源

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:59:05 25 4
gpt4 key购买 nike

我正在 Android 上使用 UI Automator 进行一组测试。我让它正常工作,但我当前的测试是使用大量字符串文字进行的。

当我一开始只是试图让事情正常工作时,字符串文字很好,但它们在未来会很糟糕。如果更改了应用程序,则需要更改字符串文字以匹配。此外,愚蠢的是我的测试必须完全重做才能测试其他语言的本地化构建。

应用程序本身将所有字符串存储在资源中。每个字符串都有一个不变的标识符......这是一个例子:

<string name="more_options">More options</string>

应用代码将始终使用名称more_options 来查找字符串资源,而不是将“更多选项” 硬编码到代码中。

所以我想要的是导入所有字符串资源,将它们存储在某种 map 对象中,然后在我的 UI Automator 测试代码中使用类似 m.get("more_options") 的东西而不是像我现在那样使用文字字符串 "More options"

无论我做什么,我都希望它只是构建并推送到设备以运行测试的 JAR 文件的一部分。例如,我不想将 XML 字符串资源文件推送到设备并尝试在测试运行时读取它们。我想在构建 JAR 文件时内置数据。

我查看了构建应用程序生成的文件,more_options 等名称只是设置为整数。这些必须是指向资源存储的索引或指针,但我不确定如何将该存储复制到我的 UI Automator 项目中并将其连接起来;在 Android 应用程序中,您使用 Context 对象来访问资源,而 UI Automator JAR 文件没有 Context

这一定是一个常见问题,人们肯定已经解决了它,但我的 Google 搜索没有发现任何关于人们如何解决这个问题的讨论。

如果我没有得到任何建议,我将编写一个 Python 脚本来导入 XML 文件并编写一个 Java 文件,该文件具有构建我需要的 map 的功能,然后从我的 UI Automator 测试中调用它程式。 (我有一个 Python 脚本,它运行一系列命令行工具来启动 UI Automator 测试,无论如何......我不介意让它做更多的工作。)但我认为应该有一个纯 Java 解决方案为此,可能需要从应用程序的源目录中获取已编译的文件。

最佳答案

您可以获得上下文:

val context = InstrumentationRegistry.getTargetContext()

然后在你的测试中:

context.getString(R.string.more_options)

关于java - 访问 Android UI Automator 测试的资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17713226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com