Я пытаюсь создать тест репозитория с аннотацией Spring @DataJpaTest
. Даже с простым демонстрационным проектом я получаю IllegalArgumentException: Unknown entity
. Я что-то пропустил?
Я использую пример Baeldung для тестирования с помощью Spring. Существует простой @DataJpaTest
, и я применил его к своему коду. При выполнении теста я получил исключение IllegalArgumentException: Unknown entity
, что сам репозиторий не может быть найден. Поэтому я создал демонстрационный проект с минимально необходимыми классами и все еще получил эту ошибку.
класс сущности:
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class DemoEntity {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Long id;
private String name;
// getter and setter
}
класс хранилища:
@Repository
public interface DemoRepository extends JpaRepository<DemoEntity, Long> {
Optional<DemoEntity> findByName(String name);
}
и тестовый класс:
@RunWith(SpringRunner.class)
@DataJpaTest
public class DemoRepositoryTest {
@Autowired
private TestEntityManager entityManager;
@Autowired
private DemoRepository repository;
@Test
public void test() {
DemoEntity demo = new DemoEntity() {{
setName("Tim");
}};
entityManager.persistAndFlush(demo);
Optional<DemoEntity> result = repository.findByName("Tim");
assertThat(result.isPresent()).isTrue();
}
}
Результат теста: исключение:
java.lang.IllegalArgumentException: Unknown entity: com.example.demo.repositories.DemoRepositoryTest$1
at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:804)
at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:785)
at org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager.persist(TestEntityManager.java:93)
at org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManager.persistAndFlush(TestEntityManager.java:131)
at com.example.demo.repositories.DemoRepositoryTest.test(DemoRepositoryTest.java:31)
Я использую Spring Boot Starter 2.1.1 и Java 10.