9

我有一个自定义的 android 视图,其中包含我想测试的样式属性。我正在尝试使用 RoboAttributeSet 将这些推送到我的视图的构造函数中,但是对于我的一生来说,我无法找出我需要使用的正确语法来让它们工作。无论我尝试什么,在 robolectric 测试中运行时,视图都不会拾取我正在推动的属性。在设备或模拟器上运行应用程序很好。

有没有关于如何使用这些的例子?有谁知道如何做到这一点?这是我的自定义视图的代码片段以及它如何使用可样式属性。

TypedArray customProperties = aContext.getTheme().obtainStyledAttributes(aAttrs, R.styleable.LoginView, 0, 0);

try {
  userName.setHint(customProperties.getString(R.styleable.LoginView_username_hint));
} finally {
  customProperties.recycle();
}

这是我的 Robolectric/Spock 单元测试的片段......

given:
AttributeSet attributes = new RoboAttributeSet(
        [new Attribute("com.acme:attr/username_hint", "myhint", "com.acme")], Robolectric.application.resources, LoginView)

when:
view = new LoginView(Robolectric.application, attributes)

then:
view.getUsername().getHint() == "myhint"

谢谢乔治
_

4

1 回答 1

7

对于那些使用 RoboElectric 新版本 3 的用户,请从他们的 github 中查看此示例,了解如何使用 ResourceLoader。

https://github.com/robolectric/robolectric/blob/490e5fcb7165bec9ef2ddc1c937af790806bb13d/robolectric/src/test/java/org/robolectric/shadows/ViewStubTest.java#L59

我花了很长时间才找到这样的例子!

编辑:

我只是想更新这个帖子,因为在过去的一年里发生了很多变化。谷歌在某种程度上提供了一种官方文档的方式来进行 Android 测试。你可以找到它

这里:https ://google.github.io/android-testing-support-library/

在这里:https ://github.com/googlesamples/android-testing

于 2015-04-30T04:33:45.193 回答