gpt4 book ai didi

java - 测试 Dropwizard 'Application' 类

转载 作者:行者123 更新时间:2023-12-01 22:40:56 25 4
gpt4 key购买 nike

我希望在不引导整个 Dropwizard 服务器的情况下测试 Dropwizard 'Application' 类。

我本质上只是想确保我正在注册的一个 bundle 已成功注册。

由于各种其他组件未正确设置,到目前为止我遇到的所有路由都会导致 NullPointer 异常。这里有一条容易的路吗?

public class SentimentApplication extends Application<SentimentConfiguration> {

public static void main(final String[] args) throws Exception {
new SentimentApplication().run(args);
}

@Override
public String getName() {
return "Sentiment";
}

@Override
public void initialize(final Bootstrap<SentimentConfiguration> bootstrap) {
bootstrap.setConfigurationSourceProvider(
new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(),
new EnvironmentVariableSubstitutor(false)
)
);
}

@Override
public void run(final SentimentConfiguration configuration,
final Environment environment) {
// TODO: implement application
}

}

最佳答案

您可以注册一个简单的命令,并使用该命令而不是服务器命令调用应用程序的run方法。这样您的应用程序将在不运行服务器的情况下执行。

我想做一些与你想要的类似的事情。 (考虑到 ExampleApp 作为我的代码的主要 Application 类)我想编写一个测试以确保解析配置时没有异常。 (因为 KotlinModule() 应该在应用程序的 initialize 方法中注册到 environment.objectMaooer,否则我们会遇到运行时错误。)我通过类似于以下内容实现了它:

import io.dropwizard.cli.EnvironmentCommand
import io.dropwizard.setup.Bootstrap
import io.dropwizard.setup.Environment
import com.example.config.ExampleConfiguration
import net.sourceforge.argparse4j.inf.Namespace
import org.junit.Test
import kotlin.test.assertEquals
import kotlin.test.assertNotNull

class DummyCommand(app: DummyApp) : EnvironmentCommand<ExampleConfiguration>(app, "dummy", "sample test cmd") {
var parsedConfig: ExampleConfiguration? = null

override fun run(environment: Environment, namespace: Namespace, configuration: ExampleConfiguration) {
parsedConfig = configuration
}
}

class DummyApp : ExampleApp() {
val cmd: DummyCommand by lazy { DummyCommand(this) }

override fun initialize(bootstrap: Bootstrap<ExampleConfiguration>) {
super.initialize(bootstrap)
bootstrap.addCommand(cmd)
}
}

class ExampleAppTest {
@Test
fun `Test ExampleConfiguration is parsed successfully`() {
val app = DummyApp()
app.run("dummy", javaClass.getResource("/example-app-test/test-config.yml").file)
val config = app.cmd.parsedConfig
assertNotNull(config)
assertEquals("foo", config.nginxUsername)
}
}

关于java - 测试 Dropwizard 'Application' 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41088921/

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