如何在Java中确定视图的像素单位(px、dp等)?

如何在Java中确定视图的像素单位(px、dp等)?,java,android,unit-testing,android-studio,robolectric,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" androi

我试图编写一个单元测试来验证是否使用了DIP。我可以用editText.getTextSize()读取大小值,但我无法读取文本单位(在本例中是为了确保使用“dp”)。如果有人将文本单位从dp更改为px或任何其他单位,测试用例应该失败

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


提前谢谢

首先,不要在
dp
中设置文本大小。他们应该始终使用
sp
,以便有视力问题的人可以根据需要扩大其使用范围


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

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

lintOptions {
        warningsAsErrors true
        abortOnError true // Fail early.
}
@Gabe的答案有一个很好的观点,那就是你可以通过Android框架测试副作用。如果您确实希望保护特定元素的大小是具有特殊尺寸的特殊值,那么为
xml
本身添加test/lint检查

对我来说,它没有多大价值——它不会破坏功能,它通过一致性和支持增加了复杂性,它增加了运行测试的时间。你也会在回归测试中注意到它,或者,值得一提的是,用户会抱怨它

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