如何确定Java中View的像素单位(px,dp等)?

时间:2016-07-13 21:49:17

标签: java android unit-testing android-studio robolectric

我正在尝试编写单元测试以验证是否使用了DIP。我能够使用editText.getTextSize()读取大小值,但我无法读取文本单元(在这种情况下,它确保" dp"用法)。如果某人将文本单位从dp更改为px或任何其他单位,则测试用例失败。

<EditText
    android:id="@+id/someId"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="48dp"/>

提前致谢!

2 个答案:

答案 0 :(得分:3)

首先,永远不要在dp中执行textSize。他们应该始终使用sp,因此有视力问题的人可以根据需要进行扩展。

其次,为什么要为此编写单元测试?你在测试什么?如果你把一个给定的大小放在它实际使用的xml中?不要,这是谷歌在测试框架时要测试的工作。编写一个单元测试就可以完全浪费时间,因为它永远不会破坏。您是否测试某个元素是否具有特定大小?然后测试一下,你不会测试它是否在dp vs px中指定。

答案 1 :(得分:1)

已经有lint检查您没有使用dp作为文字大小的尺寸。它会产生警告,因此不会破坏构建。但你可以严格要求失败:

lintOptions {
        warningsAsErrors true
        abortOnError true // Fail early.
}

@ Gabe的答案很好,你可以通过Android框架测试副作用。如果您真的想要保护特定元素的大小是特殊值的特殊值,那么为xml本身添加test / lint检查。

至于我,它没有多大价值 - 它不会破坏功能,它增加了一致性和支持的复杂性,它增加了运行测试的时间。您也会通过回归测试注意到它,或者在值得的情况下,用户会抱怨它。

一个建议 - 查看样式和主题,不要复制粘贴文本大小和其他视图属性