Получена ошибка [Xlint: cantFindType], когда мое приложение запускается через @RunWith (SpringJUnit4ClassRunner.class) - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь запустить тест junit для своего DeviceRepository (JPA), я запускаю тестовый случай junit через @RunWith (SpringJUnit4ClassRunner.class) и @SpringBootTest (classes = xxxx.class), и когда приложение запускается, ошибки типа «[Xlint: cantFindType] [AppClassLoader @ xxxx] не могут определить реализованные интерфейсы отсутствующего типа xxxx», отображаемые в консоли. Эти ошибки не приведут к сбою при запуске приложения, но сделают сканирование репозитория Spring Data за 41625 мс, медленно Как в аду. Такая ситуация случается только в тесте джунтов. Странно то, что обе проблемы не отображаются, когда я запускаю свое приложение напрямую. Эти проблемы появляются после того, как я добавил в свой проект зависимость Spring-boot-data-starter-jpa. Приведенное ниже сообщение об ошибке является лишь его частью, они все одинаковые, но отсутствуют разные классы. Информация о стеке здесь

Проблема сканирования хранилища данных Spring: [main] .s.d.r.c.RepositoryConfigurationDelegate: Завершено сканирование хранилища данных Spring за 41625 мс. Найдено 1 репозиторий интерфейсов.

Мой класс репозитория устройств:

@Repository
public interface DeviceRepository extends JpaRepository<Device, 
Integer> {
    @Query("select d from Device d where device_id = ?1")
    public Device findDevice(String device_id);

    @Query("update Device set create_time = ?2 where device_id = ? 
    1")
    public Device findDevice(String device_id, long create_time);
}

Мой класс TestCase:

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = DubboCallerApplication.class)
public class JpaTest{
    @Autowired
    DeviceRepository deviceRepository;

@Test
public void test(){
    Device device = 
    deviceRepository.findDevice("xxxxxx");
    System.out.println(device);
}
}

Мой класс SpringApplication:

@SpringBootApplication
//@EnableDubboConfiguration
public class DubboCallerApplication {
    public static void main(String[] args) {
        SpringApplication app = new 
        SpringApplication(DubboCallerApplication.class);
        app.setBannerMode(Banner.Mode.OFF);
        app.run(args);
}
}

Мой pom.xml:

<properties>
    <project.build.sourceEncoding>UTF- 
     8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF- 
    8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <aspectj.version>1.8.10</aspectj.version>
    <allure.results.directory>
           ${project.build.directory}/allure-results
    </allure.results.directory>
    <my.target.suite></my.target.suite>
</properties>

<dependencies>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
</dependencies>
...