1
resposta

Está dando erro no teste JUnit

Boa noite professor, o senhor lembra do meu problema com Java 17 e o projeto ser Java 11? Pois então durante o curso o projeto funcionou normalmente, mas quando entrei na Aula "Escrevendo testes automatizados - aula 3" no começo quando você pede para rodar o teste, ele dá erro nessa classe e método abaixo: Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidadeInsira aqui a descrição dessa imagem para ajudar na acessibilidade2025-02-03 19:57:48.822 INFO 2272 --- [ main] o.s.t.c.transaction.TransactionContext : Rolled back transaction for test: [DefaultTestContext@1115ec15 testClass = LocationControllerIntegrationTest, testInstance = br.com.caelum.clines.api.locations.LocationControllerIntegrationTest@1dfd6023, testMethod = listAllLocationsShouldReturnAnEmptyList@LocationControllerIntegrationTest, testException = java.lang.reflect.InaccessibleObjectException: Unable to make private java.util.Collections$EmptyList() accessible: module java.base does not "opens java.util" to unnamed module @29774679, mergedContextConfiguration = [WebMergedContextConfiguration@82ea68c testClass = LocationControllerIntegrationTest, locations = '{}', classes = '{class br.com.caelum.clines.ClinesApiApplication}', contextInitializerClasses = '[]', activeProfiles = '{}', propertySourceLocations = '{}', propertySourceProperties = '{DB_NAME=clines_test, spring.jpa.hibernate.ddlAuto:create-drop, org.springframework.boot.test.context.SpringBootTestContextBootstrapper=true}', contextCustomizers = set[[ImportsContextCustomizer@59e505b2 key = [org.springframework.boot.test.autoconfigure.web.servlet.MockMvcAutoConfiguration, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcWebClientAutoConfiguration, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcWebDriverAutoConfiguration, org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration, org.springframework.boot.autoconfigure.security.servlet.UserDetailsServiceAutoConfiguration, org.springframework.boot.test.autoconfigure.web.servlet.MockMvcSecurityConfiguration, org.springframework.boot.test.autoconfigure.orm.jpa.TestEntityManagerAutoConfiguration]], org.springframework.boot.test.context.filter.ExcludeFilterContextCustomizer@b62d79, org.springframework.boot.test.json.DuplicateJsonObjectContextCustomizerFactory$DuplicateJsonObjectContextCustomizer@1613674b, org.springframework.boot.test.mock.mockito.MockitoContextCustomizer@0, org.springframework.boot.test.web.client.TestRestTemplateContextCustomizer@57af006c, org.springframework.boot.test.autoconfigure.properties.PropertyMappingContextCustomizer@4b3fa0b3, org.springframework.boot.test.autoconfigure.web.servlet.WebDriverContextCustomizerFactory$Customizer@3e84448c], resourceBasePath = 'src/main/webapp', contextLoader = 'org.springframework.boot.test.context.SpringBootContextLoader', parent = [null]], attributes = map['org.springframework.test.context.web.ServletTestExecutionListener.activateListener' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.populatedRequestContextHolder' -> true, 'org.springframework.test.context.web.ServletTestExecutionListener.resetRequestContextHolder' -> true]] 2025-02-03 19:57:48.846 INFO 2272 --- [extShutdownHook] o.s.s.concurrent.ThreadPoolTaskExecutor : Shutting down ExecutorService 'applicationTaskExecutor' 2025-02-03 19:57:48.855 INFO 2272 --- [extShutdownHook] j.LocalContainerEntityManagerFactoryBean : Closing JPA EntityManagerFactory for persistence unit 'default' 2025-02-03 19:57:48.857 INFO 2272 --- [extShutdownHook] .SchemaDropperImpl$DelayedDropActionImpl : HHH000477: Starting delayed evictData of schema as part of SessionFactory shut-down' 2025-02-03 19:57:48.923 INFO 2272 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated... 2025-02-03 19:57:48.936 INFO 2272 --- [extShutdownHook] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.

OBS.: Coloquei a DATABASE "clines_test" no postgrees e não gerou nenhuma tabela. Pode me ajudar com esse problema? Lembrando que o meu OpenJDK é 17 e o projeto é com Java 11

1 resposta

Olá Edgard, bom dia!

O erro java.lang.reflect.InaccessibleObjectException geralmente ocorre quando há tentativas de acessar APIs internas do Java que não estão abertas para módulos não nomeados, algo que se tornou mais restrito em versões mais recentes do Java.

Aqui estão algumas sugestões para resolver o problema:

  1. Adicione opções de abertura de módulo: você pode tentar adicionar as seguintes opções de execução para permitir que o seu código acesse as APIs necessárias:

    --add-opens java.base/java.util=ALL-UNNAMED
    --add-opens java.base/java.lang=ALL-UNNAMED
    
    • Isso pode ser configurado nas opções de execução do seu IDE ou no arquivo de configuração do Maven/Gradle. Ou executando diretamente o comando acima no seu terminal.
  2. Verifique as dependências: certifique-se de que todas as suas dependências estão atualizadas e são compatíveis com o Java 17. Algumas bibliotecas podem precisar ser atualizadas para funcionar corretamente com versões mais recentes do Java.

  3. Configuração do banco de dados: verifique se a configuração do banco de dados está correta e se o Hibernate está configurado para criar as tabelas necessárias.

    • O erro menciona que as relações (tabelas) não existem, o que pode indicar que o Hibernate não está gerando as tabelas automaticamente. Verifique as configurações de ddl-auto no seu arquivo de configuração.

Espero ter ajudado e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.