Тест репозитория при весенней загрузке приводит к исключению Неизвестная сущность - PullRequest
0 голосов
/ 26 февраля 2019
  • com.mohendra.user

    • сервер
      • Application.class // Основной класс
    • package2

    • package3

      • домен
        • Campaigns.class
        • SmsDomainPackage.class
      • хранилище
        • CampaignRepository.class

Theвыше моя структура папок, я пытаюсь протестировать CampaignRepository с использованием Spring dataJpaTest, я написал следующий тест

@ComponentScan(basePackages = "com.mohendra.user")
@EntityScan(basePackageClasses = SmsDomainPackage.class)
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Application.class)
@DataJpaTest
@RestClientTest
public class CampaignRepositoryTest {

    @Autowired
    private TestEntityManager entityManager;

    @Autowired
    private CampaignRepository repository;

    @Before
    public void setUp() throws Exception {
    }

    @Test
    public void findByCode() {
        Campaigns campaigns = new Campaigns();
        campaigns.setName("Name");
        campaigns.setCode("HELP123");
        campaigns.setStartDate(new Date());
        campaigns.setEndDate(new Date());
        this.entityManager.persist(campaigns);

        Campaigns campaigns1 = repository.findByCode("HELP123");
        System.out.println();
    }
}

Тест дает исключение

java.lang.IllegalArgumentException: неизвестный объект: com.mohendra.user.package3.domain.Campaigns

Я также использовал @ComponentScan, как вы можете видеть, и я также использовал @EntityScan для проверки объектов из пакетов, но оба они не работают.Я не могу изменить структуру папок, чтобы она стала стандартной, так как это не мой проект.Есть ли решение для этого?

1 Ответ

0 голосов
/ 26 февраля 2019

Класс Application должен находиться в корневом пакете.Таким образом, вам не понадобится @CompontenScan или @EntityScan, потому что Spring Boot сканирует все, что находится ниже вашего корневого пакета

. Поэтому я рекомендую поместить Application.class в пакет com.mohendra.user

.решить, какой тестовый срез вы хотите.У вас есть три:

@SpringBootTest(classes = Application.class)
@DataJpaTest
@RestClientTest

Но я предполагаю, что вы хотите только @DataJpaTest

...