gpt4 book ai didi

java - Dropwizard 集成测试与 TestResource

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

有谁知道如何添加测试资源(即仅用于测试目的而不添加到应用程序的 run() 方法中的资源)?

这是一个例子:

public class MyTest {   
@ClassRule
public static final DropwizardAppRule<TestConfiguration> RULE =
new DropwizardAppRule<TestConfiguration>(MyApp.class, "my-app-config.yaml");


@BeforeClass
public static void setUpBeforeClass() throws Exception
{
MyTest.RULE.getEnvironment().jersey().register(new JustForTestingResource());
}


@Test
public final void testTestResource()
{
Client client = new Client();

ClientResponse response = client.resource(
String.format("http://localhost:%d/rest/v1/test", RULE.getLocalPort()))
.get(ClientResponse.class);

assertThat(response.getStatus(), is(200));
}
}

public class JustForTestingRessource {


@GET
@Path("test")
@Produces(MediaType.APPLICATION_JSON)
public Response getInTestResource()
{
return Response.status(Status.OK).type(MediaType.TEXT_PLAIN).entity("get @Path(\"test\") is ok").build();
}
}

我的问题是添加的资​​源没有添加,我得到资源未找到 404 错误响应。似乎我在资源发布后注册新资源,启动后 Dropwizard 内部没有刷新。

我不想扩展我的应用程序类,也不想将测试代码插入到我的实际应用程序代码中。有谁知道如何在不在应用程序的 run() 方法中注册测试资源的情况下注册测试资源?

这可行,但需要一个新类:

public class TestService extends MyService{


@Override
public void run(
TestConfigurationconfiguration,
Environment environment) throws ClassNotFoundException
{
environment.jersey().register(new JustForTestingRessource());
super.run(configuration,environment);
}

}

调用已知的 JUnit:

@ClassRule
public static DropwizardAppRule<TestConfiguration> RULE =
new DropwizardAppRule<TestConfiguration>(TestService.class, "my-app-config.yaml");

最佳答案

编辑:删除以前的答案,因为它没有按照您想要的方式解决您的问题。

我深入研究了环境启动代码,并意识到注册 Controller 没有使其可用的原因是因为 jetty 已经启动。如果您停止 jetty ,注册您的 Controller 并重新启动 jetty ,您的资源将可用,您可以在测试中使用它。

@BeforeClass
public static void setUpBeforeClass() throws Exception
{
MyTest.RULE.environment.applicationContext.stop()
MyTest.RULE.environment.jersey().register(new JustForTestingResource())
MyTest.RULE.environment.applicationContext.start()
}

关于java - Dropwizard 集成测试与 TestResource,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26381170/

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