如何使用Mockito获取位图资源?

4

我的类需要一个位图,但Mockito的模拟上下文对象似乎无法做到这一点:

    public class PlayerTest {

        @Mock // Mocking the android context class
        Context mMockContext;
        // intantiating object from that mocked class
        Context mContext;

        private Player player;
        private Bitmap playerBitmap;

        private int screenX;
        private int screenY;

        @Before
        public void setupPlayer(){
            playerBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.player);
            player = new Player(mContext, screenX, screenY,playerBitmap);
        }
...

你是想模拟静态的decodeResource方法,还是只是想模拟mContext.getResources的结果? - ThrawnCA
我想我并不是真的在嘲笑上下文,我只是想测试类的方法,而且我不能实例化类而没有位图。所以我的问题实际上是如何在本地测试中获取位图,而不需要Android框架调用上下文? - red888
1个回答

7

你不能只是在 private Bitmap playerBitmap 上加上 @Mock 注解吗?

我看不到整个类的代码,但我猜测你正在使用 Mockito JUnit 运行器。如果不是,你需要使用它或在设置方法中调用 MockitoAnnotations.initMocks(this)


好的,那个有效了,只是模拟了位图本身。我很好奇Mockito是如何做到的?它是否传递了一个实际的位图文件? - red888
2
它动态创建了 Bitmap 的子类,默认情况下所有方法都被存根化。如果 Bitmap 类是 final 的,我认为你会发现它行不通。 - ThrawnCA
2
@red888 提示:你不应该只是因为你“会”而去使用技术。看起来你刚开始使用 Mockito 框架,但并没有思考这个东西实际上是做什么的。不要这么做。你应该理解代码中每一行和每一个字符的含义。盲目地使用框架并写下“@Mock”之类的内容是没有意义的,当你不知道这会在运行时造成什么影响时。因此,开始做一些研究,例如阅读 http://www.vogella.com/tutorials/Mockito/article.html - GhostCat

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接