【问题标题】:How do I get a bitmap resource with mockito?如何使用 mockito 获取位图资源?
【发布时间】:2017-09-18 01:19:37
【问题描述】:

我的班级需要一个位图,但 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 的结果?
  • 我想我并不是真的想模拟上下文我只是想测试类的方法,我无法在没有位图的情况下实例化类。所以我的问题是如何在不需要 Android 框架调用上下文的情况下获取本地测试的位图?

标签: java android unit-testing mockito


【解决方案1】:

你不能用@Mock注释private Bitmap playerBitmap吗?

我看不到课程的其余部分,但我想您正在使用 Mockito JUnit 跑步者。如果没有,您需要使用它,或者在您的设置方法中调用MockitoAnnotations.initMocks(this)

【讨论】:

  • 是的,只是模拟了位图本身。只是好奇mockito是如何做到的?它是否在其中传递了一个实际的位图文件?
  • 它动态创建Bitmap的子类,默认情况下所有方法都被存根。我想你会发现如果Bitmap 类是final,它就行不通了。
  • @red888 提示:您不应该使用技术,因为您可以。似乎您刚刚开始使用 Mockito 框架,而没有进一步思考这些东西实际上是关于什么的。不要那样做。您应该了解代码包含的每一行以及这些行中的每个字符。盲目地使用框架并写下“@Mock”是没有意义的......当你不知道这在运行时会导致什么时。因此开始做一些研究,例如vogella.com/tutorials/Mockito/article.html
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
  • 2019-03-07
  • 1970-01-01
  • 1970-01-01
  • 2013-02-10
  • 2013-04-18
相关资源
最近更新 更多