Validating @BindDimen Type Constraints in ButterKnife
This test suite validates the dimension binding functionality in ButterKnife’s annotation processing system. It focuses on type validation for the @BindDimen annotation, ensuring proper data type constraints are enforced during compile-time.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
jakewharton/butterknife
butterknife-runtime/src/test/java/butterknife/BindDimenTest.java
package butterknife;
import butterknife.compiler.ButterKnifeProcessor;
import com.google.testing.compile.JavaFileObjects;
import javax.tools.JavaFileObject;
import org.junit.Test;
import static com.google.common.truth.Truth.assertAbout;
import static com.google.testing.compile.JavaSourceSubjectFactory.javaSource;
public final class BindDimenTest {
@Test public void typeMustBeIntOrFloat() {
JavaFileObject source = JavaFileObjects.forSourceString("test.Test", ""
+ "package test;\n"
+ "import butterknife.BindDimen;\n"
+ "public class Test {\n"
+ " @BindDimen(1) String one;\n"
+ "}"
);
assertAbout(javaSource()).that(source)
.processedWith(new ButterKnifeProcessor())
.failsToCompile()
.withErrorContaining("@BindDimen field type must be 'int' or 'float'. (test.Test.one)")
.in(source).onLine(4);
}
}