Так у меня есть простой объект:JUNIT Hamcrest не может найти символ assertThat (java.lang.Long, org.hamcrest.Matcher <java.lang.Long>)
//imports
....
@Entity
@Table(name="ratings")
public class Rating {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
....
}
Тест:
import static org.hamcrest.Matchers.*;
....
@Test
public void shouldCreateARating() throws Exception {
Rating expected = createdRating;
assertThat(existingRating.getId(), is(1L));
}
...
Но когда я пытаюсь скомпилировать, я получаю эту ошибку компиляции:
[ERROR] /c:/limits/src/test/java/hello/RatingsControllerTest.java:[170,33]
c:\limits\src\test\java\hello\RatingsControllerTest.java:170: cannot find symbol
symbol : method assertThat(java.lang.Long,org.hamcrest.Matcher<java.lang.Long>)
location: class hello.RatingsControllerTest
Я проверил и is(T value)
существует, и assertThat(T actual, org.hamcrest.Matcher<T> matcher)
существуют и импортированы ... так что происходит здесь? Как я могу проверить, что значение Long имеет значение, которое я ожидаю, если объединение и assertThat for Long генерирует ошибку компиляции?
Объяснение, почему я тестирую идентификатор get id - это вложенный объект, который я сохраняю в setup(), и его значение getId() появляется как значение null в тесте, хотя я знаю, что я сохраняю он (который спящий режим генерирует идентификатор).
Заставляет меня чувствовать себя идиотом.
Не могли бы вы добавить статический импорт для assertThat в код теста. –