在单元测试中,我想检查一个可绘制资源(由资源ID给出的png图像)是否具有固定的维度并且是透明的。我的测试类看起来像:
@RunWith(RobolectricTestRunner.class)
@Config(manifest=Config.NONE)
public class PngTest extends AndroidTestCase {
@Test
public void testGetPieceImageResource() {
BitmapFactory.Options options = new BitmapFactory.Options();
options.inScaled = false;
Bitmap bmp =
BitmapFactory.decodeResource(RuntimeEnvironment.application.getResources(),
getImageResource(), options);
assertEquals( bmp.getWidth(), 64 );
assertEquals( bmp.getHeight(), 64 );
}
}
自bmp.getWidth == bmp.getHeight == 100
以来测试失败。似乎无论我做什么,bitmapfactory总是给我一个100x100位图而不管原始位图。drawable myimage.png位于drawable-nodpi文件夹中,但如果它在drawable文件夹中则会出现同样的问题。
对于我尝试过的所有(x,y)组合,Color.alpha(bmp.getPixel(x,y));
似乎也是0(即据我所知是透明的)。所以我得到一个完全透明的100x100位图,这不是原始位图的样子。
此测试旨在测试返回资源ID的方法。基本上我想测试这个方法是否返回正确的id(即相应的png文件是否与预期的维度/透明度匹配)。该方法的实际代码无关紧要,但作为一个例子,它可能看起来像:
public int getImageResource() {
if ( /* some condition */ {
return R.drawable.myimage;
} else {
return R.drawable.anotherimage;
}
}
欢迎任何关于在哪里寻找错误的建议。