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

在非Spring项目中运行Spring云契约测试

皮弘博
2023-03-14

我已经在一个Spring Boot项目中创建了一个Spring云契约存根(spring-server)。希望调用此存根的客户机不是Spring项目,也不可能是Spring项目。如果我在客户端中运行以下命令:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureStubRunner(ids = {"uk.co.hadoopathome:spring-server:+:stubs:8093"},
        stubsMode = StubRunnerProperties.StubsMode.LOCAL)
public class ContractTest {
    @Test
    public void testContractEndpoint() {
        try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
            HttpGet httpGet = new HttpGet("http://localhost:8093/ac01");
            CloseableHttpResponse response = httpclient.execute(httpGet);
            String entity = EntityUtils.toString(response.getEntity());
            assertEquals("ac01returned", entity);
            response.close();
        } catch (IOException ignored) {
        }
    }
}

然后我得到一个错误

java.lang.IllegalStateException: Unable to find a @SpringBootConfiguration, you need to use @ContextConfiguration or @SpringBootTest(classes=...) with your test

显然,我没有@springbootconfiguration,因为这不是一个Spring Boot项目。

这里有什么变通办法?

共有1个答案

黄流觞
2023-03-14

只需使用Junit规则,就不必设置上下文

public class JUnitTest {

    @Rule public StubRunnerRule rule = new StubRunnerRule()
            .downloadStub("com.example","beer-api-producer")
            .withPort(6543)
            .workOffline(true);

    @Test
    public void should_work() {
        String response = new RestTemplate().getForObject("http://localhost:6543/status", String.class);

        BDDAssertions.then(response).isEqualTo("ok");
    }
 类似资料:
  • 使用方法创建新资源时,将新资源的位置添加到响应中,作为标头。 如何创建一个spring云契约YML来验证响应是否包含头,并将有效的作为其值? 我试过下面的YAML,但它不工作。 生成测试代码 生成的代码不包含任何头验证。

  • 我正在查看spring docs和spring github,我可以看到一些通过json消息和kafka主题进行通信的异步kafka消息传递(生产者和消费者)的非常基本的示例,但似乎没有更多的示例用于更像生产的设置,其中消息不是json而是avro消息,而Schema Registry(例如Confluent)也在图片中。我对此感到非常惊讶,因为当基于事件的微服务通过生成/使用avro消息进行通信

  • 在 中测试代码依赖项。格雷德尔, 当我以的形式运行应用程序时,我得到了一个错误: 为什么在IDE中运行项目时使用测试依赖项?或者我错过了什么? 任何帮助都非常感谢:) 注: 1-如果我使用或gradle boot run在IDE之外运行它,它运行得很好 2-我尝试过刷新gradle项目、清洁项目等。 3-使用STS版本

  • 我正在尝试为Java项目学习eclipse。我使用初始化器(https://start.Spring.io/)使用Spring Web的依赖项设置Spring Boot。我试图在eclipse中构建我的项目,并得到以下错误 有什么想法吗?

  • 我有以下spring cloud合同: 为了从服务器生成动态响应,我在响应处调用get响应。例如,原因可能是来自数据库的自动生成的id。从get响应ForFindTeamRletByFilters()生成的字符串是一个有效的JSON,不幸的是,它被忽略,并且在测试运行时返回始终为true。 当我用如下静态响应替换execute方法时,我注意到了这一点: 在这种情况下,响应被正确验证,如果不匹配,则

  • 我的maven项目结构: 我的问题是,我只需要运行父模块,它自动实例化子模块(tomcat服务器)。spring boot多模块项目有可能吗? 注意:我使用的是STS。父模块打包是pom,子模块打包是jar文件。 我的父pom文件 我的问题是如何使用Tomcat运行父项目?如果我运行父项目,子模块是否自动运行? 提前感谢!!!