/** Test method for {@link CriterionParser#parse()}. */
 @Test
 public void testParse() {
   setField(testParser, METRIC_DAO_FIELD, mockMetricDao);
   when(mockMetricDao.findMetricByName(METRIC_NAME)).thenReturn(METRIC_1);
   assertSame(METRIC_1, testParser.parse().getMetric());
   assertEquals(AMOUNT, testParser.parse().getAmount(), 0);
   assertEquals(DAYS * 7, testParser.parse().getDays());
 }
  @Test
  public void settingInaccessibleFieldBypassingProtection() throws Exception {
    WithInaccessibleField target = new WithInaccessibleField();

    setField(target.getClass().getDeclaredField("i"), target, 3, true);

    assertEquals(3, target.i);
  }
  @Test
  public void settingFieldWithoutBypassingProtection() throws Exception {
    WithAccessibleField target = new WithAccessibleField();

    setField(target.getClass().getField("i"), target, 2, false);

    assertEquals(2, target.i);
  }
  @Test
  public void settingInaccessibleFieldWithoutBypassingProtection() throws Exception {
    WithInaccessibleField target = new WithInaccessibleField();

    thrown.expect(ReflectionException.class);
    thrown.expectMessage(IllegalAccessException.class.getName());

    setField(target.getClass().getDeclaredField("i"), target, 4, false);
  }
 /** Test method for {@link CriterionParser#parseMetric()}. */
 @Test
 public void testParseMetric() {
   setField(testParser, METRIC_DAO_FIELD, mockMetricDao);
   when(mockMetricDao.findMetricByName(METRIC_NAME)).thenReturn(METRIC_1);
   assertSame(METRIC_1, testParser.parseMetric());
 }