Comments (1)
The way I did it at a couple of companies that has worked fairly well is extend io.dropwizard.testing.DropwizardTestSupport
so you can override com.alianza.dropwizard.testing.AlzDropwizardTestSupport#newApplication
. The new DropwizardTestSupport
should take your TestModule
and use that and your Dropwizard Application to spin up the server. Here's a couple of snippets:
public class Main extends Application<BasicExampleConfig> {
private final Module appModule;
public Main() {
appModule = new BasicExampleModule();//Guice module used for normal runtime
}
@VisibleForTesting
public Main(Module... overrideModules) {
appModule = Modules.override(new BasicExampleModule()).with(overrideModules);
}
public static void main(String... args) throws Exception {
new Main().run(args);
}
@Override
public String getName() {
return "basic-example";
}
@Override
public void initialize(final Bootstrap<BasicExampleConfig> bootstrap) {
super.initialize(bootstrap);
GuiceBundle<BasicExampleConfig> bundle = GuiceBundle.newBuilder()
.addModule(appModule)
//other GuiceBundle builder options
.build();
bootstrap.addBundle(bundle);
}
//other methods omitted
}
public class YourDropwizardTestSupport<C extends Configuration> extends DropwizardTestSupport {
private final Module externalMocksModule;
public YourDropwizardTestSupport(Class<? extends Application<C>> applicationClass, @Nullable String configPath, Module externalMocksModule) {
super(applicationClass, configPath);
this.externalMocksModule = requireNonNull(externalMocksModule);
}
@Override
public Application<C> newApplication() {
try {
//this is way fancier than you need but it finds the constructor in the Application class that takes a Guice Module and uses that to spin up your server for integratoin tests
return (Application<C>) applicationClass.getConstructor(Module[].class).newInstance(new Object[]{new Module[] {externalMocksModule}});
} catch (Exception e) {
throw propagate(e);
}
}
}
from dropwizard-guice.
Related Issues (20)
- Can not register jersey client in guice
- Binding annotations on providers don't seem to work HOT 1
- AutoConfig should ignore anonymous class HOT 1
- Dropwizard Not Starting Due to HK2 Failure HOT 4
- dropwizrd-guice not working with Dropwizard-core 1.1.0
- LinkageError ... attempted duplicate class definition for name: "org/glassfish/hk2/api/ServiceLocatorState"
- jersey2-guice is defunct HOT 1
- DropWizard 0.9.1 support? HOT 10
- Are there plans to add DropWizard 1.0.0 support? HOT 5
- No License inside Jar file HOT 4
- Getting a warning at startup: "It appears jersey2-guice-spi is either not present or in conflict with some other Jar" HOT 14
- com.google.inject.OutOfScopeException on inject javax.servlet.http.HttpServletRequest HOT 11
- Binding annotations aren't being consistently honored HOT 3
- @BeanParam + @QueryParam don't work with Dropwizard-guice HOT 6
- when i add a filter to jersey , then Jersey error HOT 5
- Compatiblity with Dropwizard 1.0? HOT 27
- AutoConfig not honouring Guice Singleton annotation on resource classes HOT 1
- How exactly HelloWorldConfiguration and Environment get injected in the example HOT 1
- Deprecated API WARNing in v1.0.0.2 HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dropwizard-guice.