当前位置: 首页 > 知识库问答 >
问题:

注入带有Spring启动的 MockMvc 时出错

上官高逸
2023-03-14

我尝试使用mockmvc,但它总是显示错误:

原因:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有可用的“org.springframework.test.web.servlet.MockMvc”类型的合格bean:预计至少有1个bean符合自动装配候选资格。依赖注释:{@org.springframework.beans.factory.annotation.Autowired(必需=true)}

我的班级:

@AutoConfigureMockMvc
@ExtendWith(SpringExtension.class)
@TestPropertySource(locations = "classpath:application-cliente.properties")
public class ClienteRepositoryTest {

    @Autowired
    private MockMvc mockMvc;

    @MockBean
    private ClienteService clienteService;

    @Test
    public void simpleMockTest() throws Exception {
        var clienteMock = new Cliente("Jessica Pereira");
        Mockito.doReturn(Optional.of(clienteMock)).when(clienteService).buscar(2L);
        this.mockMvc.perform(MockMvcRequestBuilders.get("/api/clientes/pf/{id}", 1L))
                .andExpect(MockMvcResultMatchers.status().isOk());
    }
}

还有我的格拉德尔

plugins {
    id 'org.springframework.boot' version '2.1.3.RELEASE'
    id 'java'
}

apply plugin: 'io.spring.dependency-management'

group = 'com.rjdesenvolvimento'
version = '0.0.1'
sourceCompatibility = '11'

configurations {
    compileOnly {
        extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
    maven { url 'https://repo.spring.io/milestone' }
}

ext {
    set('springCloudVersion', 'Greenwich.SR1')
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-starter-oauth2'
    implementation 'org.springframework.cloud:spring-cloud-starter-security'
    compileOnly 'org.projectlombok:lombok'
    compile('org.glassfish.jaxb:jaxb-runtime:2.3.1')
    runtimeOnly 'org.springframework.boot:spring-boot-devtools'
    runtimeOnly 'org.postgresql:postgresql'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'junit', module: 'junit'
    } '
    testRuntime 'org.junit.jupiter:junit-jupiter-api'
    testRuntime 'org.junit.jupiter:junit-jupiter-engine'
    testRuntime 'com.h2database:h2'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

test {
    useJUnitPlatform()
}

共有2个答案

鲜于喜
2023-03-14

添加此@AutoConfigreMockMvc以启用和配置MockMvc的自动配置

郑晨
2023-03-14

@AutoConfigureMockMvc应与@SpringBootTest一起使用,或者您可以使用@WebMvcTest,只为有限的控制器加载Spring MVC基础结构。

通常,@WebMvcTest仅限于单个控制器,并与@MockBean结合使用,为所需的协作者提供模拟实现。

@WebMvcTest还自动配置 MockMvc。Mock MVC 提供了一种强大的方法来快速测试 MVC 控制器,而无需启动完整的 HTTP 服务器。

您还可以在non-@WebMvcTest(例如@SpringBootTest)中自动配置MockMvc,方法是使用@AutoConfigreMockMvc对其进行注释。

参考

 类似资料:
  • 我正在测试Spring Kafka的示例代码。它适用于连接,但不适用于连接。 我已通过成功运行控制台使用者来验证密钥和证书对 kafka 代理有效: 但是我不能使用Spring Boot(2.0.1.RELEASE)和Spring Kafka,使用相同的密钥和证书发送消息。 应用程序.属性 有人成功用SSL配置Spring Boot 2.0 Spring Kafka吗?

  • 以下是关于Spring Boot中集成测试的教程:http://www.baeldung.com/spring-boot-testing 但是当我尝试注入MockMvc时,我总是得到: 创建在类路径资源[org/springframework/boot/test/autoconfigure/web/servlet/MockMvcAutoConfiguration.class]中定义的名为“mock

  • 我正在使用Spring boot测试(通过JUnit4和Spring MockMvc)REST服务适配器。适配器只需将向其发出的请求传递给另一个REST服务(使用自定义的RestTemplate),并将附加数据附加到响应中。 我想运行测试来执行控制器集成测试,但想用模拟覆盖控制器中的,以允许我预定义第三方REST响应并防止它在每次测试中被击中。我已经能够通过实例化一个并将其传递给要测试的控制器,该

  • 我有以下控制器: 重启控制器。爪哇 我已经使用mockMvc对web层进行了测试,用户服务bean按照标准进行了模拟: 重启控制器监控测试。爪哇 test正在返回404而不是200状态,并且没有返回正文中的错误消息,这暗指404不是“真正的”404(它没有返回,因为正确的响应正在返回,它返回是因为其他原因)。我还认为其他404状态中的一些可能会在相同的上下文中返回。

  • 我们刚刚开始一个新项目,正在研究Spring启动来启动我们的开发。Spring启动看起来很强大,但是有些魔法正在发生,我们还不明白。 我已经克隆了spring boot示例并运行了Jersey示例。到现在为止,一直都还不错。 然后我将其转换为Groovy/Gradle。 构建脚本的相关部分如下所示 运行gradle bootRun时,应用程序无法启动 例外是 为了解决这个ClassNotFound

  • Spring Boot有一个方便的特性,如果您配置maven插件,它会将init.d starup脚本嵌入到可执行jar中:http://docs.Spring.io/spring-boot/docs/current/reference/html/deployment-install.html#deployment-install 因此,我正在使用上述方法在CentOS6.6中“安装”一个Spri