使用Robolectric测试可绘制资源

时间:2016-04-13 14:29:22

标签: android unit-testing robolectric bitmapfactory

在单元测试中,我想检查一个可绘制资源(由资源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;
    }
}    

欢迎任何关于在哪里寻找错误的建议。

0 个答案:

没有答案