Validating Dimension Binding Type Safety in ButterKnife
This test suite validates the dimension binding functionality in Butterknife, specifically focusing on type validation for the @BindDimen annotation. It ensures proper error handling when incorrect data types are used for dimension bindings.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
jakewharton/butterknife
butterknife-integration-test/src/androidTestReflect/java/com/example/butterknife/functional/BindDimenFailureTest.java
package com.example.butterknife.functional;
import android.view.View;
import butterknife.BindDimen;
import butterknife.ButterKnife;
import org.junit.Test;
import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.fail;
public final class BindDimenFailureTest {
private final View tree = ViewTree.create(1);
static class Target {
@BindDimen(1) String actual;
}
@Test public void typeMustBeIntOrFloat() {
Target target = new Target();
try {
ButterKnife.bind(target, tree);
fail();
} catch (IllegalStateException e) {
assertThat(e).hasMessageThat()
.isEqualTo("@BindDimen field type must be 'int' or 'float'. "
+ "(com.example.butterknife.functional.BindDimenFailureTest$Target.actual)");
}
}
}