gpt4 book ai didi

java - 用于集成测试的嵌入式 Java HTTPS 服务器

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:05 24 4
gpt4 key购买 nike

我正在为通过 HTTPS 连接到外部 API 的 Mule ESB 应用程序编写集成测试。我想模拟外部 API 并在 Maven 构建期间运行端到端集成测试。我的问题是关于设置嵌入式 HTTPS 服务器。我试过使用 Jersey,但它只提供 HTTP。我在看这个例子

https://github.com/jersey/jersey/tree/master/examples/https-clientserver-grizzly

我想知道是否仍然涉及一些手动步骤,或者它是否可以在每次启动构建时自动设置所有内容。

有什么建议或想法吗?

编辑。我的最终目标是在可通过 HTTPS 访问的嵌入式服务器中部署 JAX-RS 服务。这不需要客户端 key /证书配置。

编辑 2. 现在我的问题涉及证书。集成测试的目的是模拟外部组件并验证我的应用程序是否正常工作。现在,如果我设置一个嵌入式 HTTPS 服务器并使用 cmd 行构建的证书,我需要在客户端中添加 SSL 配置(正如@Ryan Hoegg 指出的那样)。这不是我理想中想要的:是否有一种解决方案可以让它工作不必修改我的客户端应用程序代码?这应该是一个超越 Mule 的一般 Java 问题。

最佳答案

我使用 confluex-mock-http为了这。在引擎盖下它使用 Jetty,但它会为您完成所有配置。创建 MockHttpsServer 会立即启动 HTTPS 服务器:

public static final int PORT = 1443;
private MockHttpsServer mockServer;

@Before
public void initHttps() {
mockServer = new MockHttpsServer(PORT);
mockServer.respondTo(get("a-service/resource")).withBody(expectedResponse);
}

您可以设置您的 Mule 应用程序以信任模拟服务器使用的证书。 JKS 格式的信任库在类路径上可用,您可以像这样将它提供给您的 HTTPS 连接器:

<https:connector name="someHttpsConnector">
<https:tls-server path="confluex-mock.truststore" storePassword="confluex" />
</https:connector>

我认为一些旧版本的 mule 使用这种方法有问题,因为我需要使用变通方法 here .

编辑:只有在使用 Spring profile 运行测试时,您才能为 HTTPS 连接器包含此配置。 :

<spring:beans profile="test">
<mule>
<!-- connector configuration goes here -->
</mule>
</spring:beans>

确保配置文件在测试运行时确实处于 Activity 状态的一种方法是简单地将其设置在 @BeforeClass 方法中:

@BeforeClass
public void initEnvironment() {
System.setProperty("spring.profiles.active", "test");
}

关于java - 用于集成测试的嵌入式 Java HTTPS 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27169947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com