Solucionado (ver solução)
Solucionado
(ver solução)
17
respostas

[Bug] erro no import

Pessoal, boa tarde!

Por favor, quem pode me ajudar num problema que estou tendo aqui no projeto!

Ao colocar o método "post()" dentro do "perform()", dando "ALT + ENTER", não estou encontrando o import correto. Alguém sabe me dizer se tem alguma atualização do frame, ou, o que posso fazer neste caso! Ao colocar o import manualmente, o IntelliJ vai completando até a opção abaixo:

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.

Conforme está exatamente acima, pós o ponto, me aparece várias opções! Só não me aparece o que preciso! Que é o post! No import, aparecem vários métodos! Menos o que preciso. Alguém pode me dizer o que faço? Pois, estou com o projeto parado.

Dica, quando estiver alguma atualização de algo ou, novo formato de fazer determinada ação, seria interessante no "para saber mais", ter o novo formato com as devidas atualizações.

17 respostas

Olá Fagner, boa tarde!

Pelo que você descreveu, parece que o IntelliJ não está sugerindo o import correto automaticamente. O método post() que você precisa é parte da classe MockMvcRequestBuilders. Para garantir que você está importando a opção correta, você pode tentar adicionar o seguinte import manualmente no seu arquivo de teste:

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;

Certifique-se de que este import está presente no início do seu arquivo de teste. Caso o IntelliJ ainda não reconheça o método, pode ser necessário verificar se a dependência spring-test está corretamente configurada no seu pom.xml ou build.gradle. Aqui está um exemplo de como deve ser a dependência no pom.xml:

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

Após garantir que a dependência está corretamente configurada, tente novamente adicionar o import manualmente e veja se o IntelliJ agora reconhece o método post().

Espero ter ajudado e bons estudos!

Profe, boa tarde! Tudo bem? Então, até esta parte do import, o IntelliJ reconhece:

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.

De pois do último ponto, aparecem vários métodos, mas, o que preciso (o post() ), não está aparecendo. Pra você ter uma ideia, de pois do ponto, aparecem, alguns get(), put(), delete() e outros. Mas, o bendito post(), não aparece. A dependência de teste, está certinho lá no pon.

Dependência de teste no Pon:

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

Manda aqui o seu pom.xml completo e o código da classe de teste completa também.

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.5.0-M1</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>br.com.med.voll.clinica.da.api</groupId>
    <artifactId>vollmed_api_restfu</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>vollmed_api_restfu</name>
    <description>aplicação API da clinica vollmed.</description>
    <url/>
    <licenses>
        <license/>
    </licenses>
    <developers>
        <developer/>
    </developers>
    <scm>
        <connection/>
        <developerConnection/>
        <tag/>
        <url/>
    </scm>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>

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

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-data-jpa</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-validation</artifactId>

        </dependency>

        <dependency>

            <groupId>org.flywaydb</groupId>

            <artifactId>flyway-core</artifactId>

        </dependency>

        <dependency>

            <groupId>org.flywaydb</groupId>

            <artifactId>flyway-mysql</artifactId>

        </dependency>



        <dependency>

            <groupId>com.mysql</groupId>

            <artifactId>mysql-connector-j</artifactId>

            <scope>runtime</scope>

        </dependency>

        <dependency>

            <groupId>org.springframework.boot</groupId>

            <artifactId>spring-boot-starter-security</artifactId>

        </dependency>

        <dependency>

            <groupId>org.springframework.security</groupId>

            <artifactId>spring-security-test</artifactId>

            <scope>test</scope>

        </dependency>

        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>4.5.0</version>
        </dependency>

        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <annotationProcessorPaths>
                        <path>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </path>
                    </annotationProcessorPaths>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </pluginRepository>
    </pluginRepositories>

</project>
teste:

package br.com.med.voll.clinica.da.api.vollmed_api_restfu.controllers;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;


import static org.junit.jupiter.api.Assertions.*;
import static org.springframework.web.servlet.function.RequestPredicates.POST;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;

@AutoConfigureMockMvc
@SpringBootTest
class ConsultaControllerTest {
    @Autowired
    private MockMvc mvc;

    @Test
    @DisplayName("Deveria devolver código HTTP 400 quando as informações estão inválidas")
    void agendarConsultas_cenario1() {
        mvc.perform(post());
    }
}

deixei um ".*" no fim do import só pra o IntelliJ não ficar acusando erro.

Está certinho.

Talvez no seu ele não esteja sugerindo o import porque você está chamando o método post sem parâmetros, mas na verdade ele recebe uma String, e por isso não achou uma opção válida para recomendar o import. Deixe assim e veja se ele sugere o import:

mvc.perform(post("/consultas"));

Profe Rodrigo, posso mandar o link do meu repositório no gitHub? De fato, não estou achando mesmo o import do método post.

pode sim

Boa noite profe Rodrigo! Demorei mandar o link do repositório, pois, não estava conseguindo subir o projeto pro gitHube. Mas, finalmente, segue o link:

https://github.com/FagnerAraujo2025/projeto-api-vollmed

Veja se consegue fazer o clone e rodar o projeto! Pois, estou quase desistindo do curso.

Aqui deu certo, mas primeiro tive que apagar esses imports da classe de teste:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Depois disso, o IntelliJ sugere o import static normalmente:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Depois de fazer o import, vai dar erro no método perform, mas é por conta da exception que precisa ser adicionada no throws do método de teste:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Feito isso, o código compila e o teste executa normalmente:

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Boa! Profe Rodrigo, um último favor pelo menos por enquanto, pode me mandar digitado quais foram os imports que você apagou? Pois, sou deficiente visual, e, não consigo saber o que tem no print da tela. Desculpas mesmo dar mais trabalho aí.

Oi Fagner!

Perdão, vou mandar sim:

import static org.junit.jupiter.api.Assertions.*;
import static org.springframework.web.servlet.function.RequestPredicates.POST;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;

São esses três imports para apagar. Qualquer outra dúivida, fique à vontade para perguntar.

Profe, então acho que vou desistir do curso! Pois, de verdade, não estou conseguindo mesmo achar o método post(). É como lhe falei, acho todos os outros métodos, mas, só o post() não aparece mesmo de pois do ponto. Conforme exemplo abaixo, vou lhe mostrar um método que acho normalmente: import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.delete;

Perceba que, de pois do último ponto, chamei o método delete! E, consigo tranquilo, achar o get, put e, vários outros. Mas, o post, quando digito "pos" de pois do último ponto no import, o IntelliJ nem completa mais com sugestões.

Sério, acho que vou desistir do curso o que me é uma pena, pois, gosto muito dos cursos que você ministra. E, iria ser muito útil pois, trabalho com programação.

O mais provável é que seja algum problema no seu IntelliJ.

O código completo da classe de teste fica assim:

package br.com.med.voll.clinica.da.api.vollmed_api_restfu.controllers;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;

@AutoConfigureMockMvc
@SpringBootTest
class ConsultaControllerTest {

    @Autowired
    private MockMvc mvc;

    @Test
    @DisplayName("Deveria devolver código HTTP 400 quando as informações estão inválidas")
    void agendarConsultas_cenario1() throws Exception {
        mvc.perform(post("/consultas"));
    }
    
}

E você pode continuar a partir desse ponto.

solução!

Profe, boa noite! Olha, até que em fim! Como você disse que poderia ser algo no meu IntelliJ, desinstalei o que estava em uso, e, baixei a última versão que no momento, é: IntelliJ IDEA Community Edition 2025.1.1

Agora sim! Tudo certo no projeto! Mais uma vez, muitíssimo obrigado pelo suporte! Agora, até logo mais as dúvidas futuras kkkkkkkkkkkkkkkkkkk