Springboot 和 Junit5 中 MockServerClient 字段始终为空

问题描述 投票:0回答:1

我正在遵循此官方指南中的“通过 Spring TestExecutionListener @MockServerTest 运行 MockServer”。

在我的 Junit5 测试中,我想实例化一个

MockServerClient
字段。 为了隔离,我仅使用此测试类创建了一个新项目:

import org.example.MockConfig;
import org.junit.jupiter.api.Test;
import org.mockserver.client.MockServerClient;
import org.mockserver.springtest.MockServerTest;
import org.springframework.test.context.ContextConfiguration;

@MockServerTest
//@RunWith(SpringRunner.class) Not needed in JUnit5
@ContextConfiguration(classes = MockConfig.class)
public class MockTest {

    private MockServerClient client;

    @Test
    void name() {
        assert client != null; //it fails.
    }
}

gradle.build
文件:

plugins {
    id 'java'
}

group = 'org.example'
version = '1.0-SNAPSHOT'

repositories {
    mavenCentral()
}

dependencies {
    testImplementation 'org.springframework.boot:spring-boot-starter-test:3.2.1'
    testImplementation platform('org.junit:junit-bom:5.9.1')
    testImplementation 'org.junit.jupiter:junit-jupiter'
    testImplementation 'org.mock-server:mockserver-spring-test-listener-no-dependencies:5.15.0'
}

test {
    useJUnitPlatform()
}

根据文档,它应该可以工作。 我自动连接了该字段,但仍然失败。

我可以使用任何线索或解决方法吗?

更新

为了完整性,以下依赖项已添加到 gradle.build 文件中:

testImplementation 'org.springframework.boot:spring-boot-starter-test:3.2.1'
junit spring-boot-test mockserver
1个回答
0
投票

当使用 JUnit 5(准确地说是 JUnit Jupiter)时,您需要将

@ExtendWith(SpringExtension.class)
添加到您的测试类中,否则在幕后不会考虑
MockServerTestExecutionListener
。使用 JUnit 4,
@RunWith(SpringRunner.class)
成功了。

试试这个:

@MockServerTest
//@RunWith(SpringRunner.class) -> JUnit 4
@ExtendWith(SpringExtension.class) // -> JUnit Jupiter (aka. JUnit 5)
@ContextConfiguration(classes = MockConfig.class)
public class MockTest {

    private MockServerClient client;

    @Test
    void name() {
        assert client != null; //it fails.
    }
}

有关

SpringExtension
的更多理论输入,您可以参考这篇文章

© www.soinside.com 2019 - 2024. All rights reserved.