У меня странная проблема с Easymock 3.0 и JUnit 4.8.2.
Проблема возникает только при выполнении тестов из Maven, а не из Eclipse.
Это модульный тест (очень простой):
...
protected ValueExtractorRetriever mockedRetriever;
...
@Before
public void before() {
mockedRetriever = createStrictMock(ValueExtractorRetriever.class);
}
@After
public void after() {
reset(mockedRetriever);
}
@Test
public void testNullValueExtractor() {
expect(mockedRetriever.retrieve("PROP")).andReturn(null).once();
replay(mockedRetriever);
ValueExtractor retriever = mockedRetriever.retrieve("PROP");
assertNull(retriever);
assertTrue(true);
}
И я получаю:
java.lang.IllegalStateException: ожидается 1 совпадений, 2 записано.
Странно то, что я даже не использую сопоставление аргументов. И это единственный метод теста! и что еще хуже, он работает от Eclipse и не работает от Maven!
Я нашел несколько ссылок, которые не дали мне ответа:
Если я изменю модульный тест и добавлю еще один метод (который использует сопоставление аргументов):
@Test
public void testIsBeforeDateOk() {
expect(mockedRetriever.retrieve((String)anyObject())).andReturn(new PofExtractor()).anyTimes();
replay(this.mockedRetriever);
FilterBuilder fb = new FilterBuilder();
assertNotNull(fb);
CriteriaFilter cf = new CriteriaFilter();
assertNotNull(cf);
cf.getValues().add("2010-12-29T14:45:23");
cf.setType(CriteriaType.DATE);
cf.setClause(Clause.IS_BEFORE_THE_DATE);
CriteriaQueryClause clause = CriteriaQueryClause.fromValue(cf.getClause());
assertNotNull(clause);
assertEquals(CriteriaQueryClause.IS_BEFORE_THE_DATE, clause);
clause.buildFilter(fb, cf, mockedRetriever);
assertNotNull(fb);
Filter[] filters = fb.getFilters();
assertNotNull(filters);
assertEquals(filters.length, 1);
verify(mockedRetriever);
logger.info("OK");
}
этот последний метод проходит тест, но не другой. Как это возможно!?!?!
С уважением,
Нико
Дополнительные ссылки:
"bartling.blogspot.com/2009/11/using-argument-matchers-in-easymock-and.html"
"www.springone2gx.com/blog/scott_leberknight/2008/09/the_n_matchers_expected_m_recorded_problem_in_easymock"
"stackoverflow.com/questions/4605997/3-matchers-expected-4-recorded"