@Test(expected = ExecutionException.class)
  public void avoidsNullPointerIfNullPassed() throws Exception {
    FieldBinder unit = new FieldBinder(TestClass.class.getDeclaredField("uCantTouchThis"));

    TestClass target = new TestClass();

    unit.bind(target, null);
  }
  @Test(expected = ExecutionException.class)
  public void executionExceptionThrownIfFieldCantBeAccessed() throws Exception {
    FieldBinder unit = new FieldBinder(TestClass.class.getDeclaredField("uCantTouchThis"));

    TestClass target = new TestClass();

    unit.bind(target, 4);
  }
  @Test(expected = ExecutionException.class)
  public void executionExceptionThrownIfWrongTypePassed() throws Exception {
    FieldBinder unit = new FieldBinder(TestClass.class.getDeclaredField("anInt"));

    TestClass target = new TestClass();

    unit.bind(target, 4f);
  }
  @Test
  public void staticFieldsCanBeSet() throws Exception {
    FieldBinder unit = new FieldBinder(TestClass.class.getDeclaredField("statics"));

    TestClass target = new TestClass();

    unit.bind(target, 4);

    assertThat(target.statics, is(4));
  }
  @Test
  public void privateFieldsCanBeSet() throws Exception {
    FieldBinder unit = new FieldBinder(TestClass.class.getDeclaredField("privateDancer"));

    TestClass target = new TestClass();

    unit.bind(target, 4);

    assertThat(target.privateDancer, is(4));
  }
  @Test
  public void valueIsSetOnField() throws Exception {
    FieldBinder unit = new FieldBinder(TestClass.class.getField("anInt"));

    TestClass target = new TestClass();

    unit.bind(target, 4);

    assertThat(target.anInt, is(4));
  }