1

我尝试使用 Robotium 从 R.string 获取 Android 设置

String loginButton = solo.getString(test_project_package.R.string.login_button);

string.xml 文件包含(位于测试项目中):

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="login_button">Sign In to App.</string>
</resources>

问题在于返回值。而不是“登录应用程序”。, Java 返回"res/layout/bottom.xml"。它似乎是应用程序源代码的路径。即在同一个工作区中)。

我试着不使用独奏:

Resources resources = getInstrumentation().getTargetContext().getResources();
String loginButton = res.getString(test_project_package.R.string.login_button);

同样的问题。

怎么了?为什么 Java 返回不正确的值?

4

2 回答 2

1

部分解决了这个问题:)

在测试项目中添加以下导入:

import project_package.R;

之后可以使用源代码中的设置。Java 返回正确的参数。

solo.clickOnButton(solo.getString(R.string.add_account_button));

但!如果你想从测试项目中获取参数并像这样设置导入:

import project_package.test.R;

或者只是没有 import Java 将返回错误的参数。不知道为什么

我在使用 Android 测试框架、Robotium、Monkey 和 Robolectric 的文章 Android 测试中找到了这个技巧

于 2013-01-16T06:55:51.133 回答
0

我认为solo.getString()不是从 String.xml 获取字符串,而是获取与当前活动中的视图关联的字符串。

要从 String.xml 获取字符串,请使用以下命令:

solo.getContext().getString( resId );

在你的情况下 -

solo.getContext().getString( R.string.login_button );

应该可以正常工作。

于 2013-10-22T11:23:35.827 回答