我正在尝试编写单元测试以验证是否使用了DIP。我能够使用editText.getTextSize()读取大小值,但我无法读取文本单元(在这种情况下,它确保" dp"用法)。如果某人将文本单位从dp更改为px或任何其他单位,则测试用例失败。
<EditText
android:id="@+id/someId"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="48dp"/>
提前致谢!
答案 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检查。
至于我,它没有多大价值 - 它不会破坏功能,它增加了一致性和支持的复杂性,它增加了运行测试的时间。您也会通过回归测试注意到它,或者在值得的情况下,用户会抱怨它。
一个建议 - 查看样式和主题,不要复制粘贴文本大小和其他视图属性