Back to Repositories

Testing Bitmap ImageView Target Implementation in Glide Library

The BitmapImageViewTargetTest suite validates the functionality of bitmap image handling in Android ImageView targets within the Glide library. It ensures proper bitmap resource setting and drawable management for image loading operations.

Test Coverage Overview

This test suite focuses on verifying the core bitmap handling functionality in Glide’s ImageView targets.

Key areas covered include:
  • Bitmap resource setting in ImageView components
  • Drawable conversion and management
  • ImageView target initialization and configuration

Implementation Analysis

The testing approach utilizes Robolectric for Android environment simulation, enabling isolated unit testing of ImageView behaviors. The implementation employs JUnit annotations and assertions to validate bitmap handling, with specific focus on drawable conversion and resource management patterns.

Technical patterns include:
  • Robolectric test runner configuration
  • SDK version specification
  • Bitmap creation and verification

Technical Details

Testing tools and configuration:
  • JUnit 4 testing framework
  • Robolectric for Android environment simulation
  • ApplicationProvider for context management
  • Custom SDK configuration (ROBOLECTRIC_SDK)
  • Bitmap.Config.RGB_565 for image creation

Best Practices Demonstrated

The test suite exemplifies clean testing practices through proper test isolation and setup.

Notable practices include:
  • Clear test method naming conventions
  • Proper test setup using @Before annotation
  • Specific assertion checking for bitmap equality
  • Efficient resource management

bumptech/glide

library/test/src/test/java/com/bumptech/glide/request/target/BitmapImageViewTargetTest.java

            
package com.bumptech.glide.request.target;

import static com.bumptech.glide.RobolectricConstants.ROBOLECTRIC_SDK;
import static org.junit.Assert.assertEquals;

import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.widget.ImageView;
import androidx.test.core.app.ApplicationProvider;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;

@RunWith(RobolectricTestRunner.class)
@Config(sdk = ROBOLECTRIC_SDK)
public class BitmapImageViewTargetTest {

  private ImageView view;
  private BitmapImageViewTarget target;

  @Before
  public void setUp() {
    view = new ImageView(ApplicationProvider.getApplicationContext());
    target = new BitmapImageViewTarget(view);
  }

  @Test
  public void testSetsBitmapOnViewInSetResource() {
    Bitmap bitmap = Bitmap.createBitmap(100, 75, Bitmap.Config.RGB_565);
    target.setResource(bitmap);
    assertEquals(bitmap, ((BitmapDrawable) view.getDrawable()).getBitmap());
  }
}