Class SpincastTestBase
- All Implemented Interfaces:
BeforeAfterClassMethodsProvider
,CanBeDisabled
,RepeatedClassAfterMethodProvider
,TestFailureListener
- Direct Known Subclasses:
AppBasedTestingBase
,NoAppCustomContextTypesTestingBase
Uses a custom Junit runner,
SpincastJUnitRunner
.
This runner create a single instance of the test class for all of its tests,
instead of a new instance for each test. It also calls a beforeClass()
method before the tests are run and an afterClass()
method after
they are run.
A class extending this will be part of a Guice context
(created using the createInjector
method) and
the required dependencies will be injected into it.
A GuiceTweaker
instance is used to
be able to tweak a Guice context automagically. This for example
allows you to start your actual application, using its main() method.
Note that the Guice tweaker only works when the Guice context is created
using the standard Spincast Bootstrapper
.
Note that you can annotate a test class with:
@FixMethodOrder(MethodSorters.NAME_ASCENDING)if you need its tests to be ran in order (using the alphabetical order of the test methods' names).
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final org.slf4j.Logger
protected SpincastConfig
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
Adds System properties as they are provided by thegetExtraSystemProperties()
method.void
Called after the tests of the class are ran.void
Called after all the loops of the class as specified by theRepeatUntilFailure
orRepeatUntilSuccess
annotations.void
This method will be called after each test.void
Called before the tests of the class are ran.void
This method will be called if an exception occures during theBeforeAfterClassMethodsProvider.beforeClass()
execution.void
This method will be called before each test.protected GuiceTweaker
protected abstract com.google.inject.Injector
The test class must implement this method to create the Guice injector.protected File
Create a temp directory.protected String
Returns a unique path to use to create a temporary test file.protected String
createTestingFilePath
(String relativePath) Returns the absolute path to use, given the relative one, to create a temporary test file.protected void
Deletes the testing writable temp directory.protected Set<com.google.inject.Key<?>>
Extra exact bindings to remvoe before the plugins are applied.Extra System properties to set before the tests are run.protected com.google.inject.Module
If an overriding Module is to be added using the Guice tweaker.protected List<SpincastPlugin>
Extra plugins to be added by the Guice Tweaker.protected GuiceTweaker
Ids of plugins to disable.protected com.google.inject.Injector
Returns the Guice injector.protected SpincastConfig
protected Class<? extends SpincastConfig>
The implementation to use for theSpincastConfig
binding, when running tests.protected File
Returns the directory that can be used to create files and subdirectories during testing.protected boolean
boolean
Should the tests of this class all be disabled?boolean
isTestClassDisabledPreBeforeClass
(Collection<org.junit.runners.model.FrameworkMethod> filteredTests) Should the tests class be disabled?protected void
Resets System properties.void
testFailure
(org.junit.runner.notification.Failure failure) You can override this method to be informed when a test fails.protected void
tweakConfigurations
(GuiceTweaker guiceTweaker) protected void
validateCreatedInjector
(com.google.inject.Injector guice) Validates the created Injector, before the dependencies are injected in the test class.
-
Field Details
-
logger
protected static final org.slf4j.Logger logger -
spincastConfig
-
-
Constructor Details
-
SpincastTestBase
public SpincastTestBase()
-
-
Method Details
-
isTestClassDisabledPreBeforeClass
public boolean isTestClassDisabledPreBeforeClass(Collection<org.junit.runners.model.FrameworkMethod> filteredTests) Description copied from interface:CanBeDisabled
Should the tests class be disabled?Note that this will be run before everything (including
#beforeClass()
): no Guice context is available... But you can look at System properties, for example as a way of finding if the file must be ran or not.Use
CanBeDisabled.isTestClassDisabledPostBeforeClass()
if you need the Guice context in order to perform your logic.- Specified by:
isTestClassDisabledPreBeforeClass
in interfaceCanBeDisabled
- Parameters:
filteredTests
- the tests that are going to be run.
-
isTestClassDisabledPostBeforeClass
public boolean isTestClassDisabledPostBeforeClass()Description copied from interface:CanBeDisabled
Should the tests of this class all be disabled?Note that this will be run after
#beforeClass()
: the Guice context is created and available.If you need to disable the tests because on some environments you are not even able to create the Guice context, use
#isTestClassDisabledPreBeforeClass()
instead.- Specified by:
isTestClassDisabledPostBeforeClass
in interfaceCanBeDisabled
-
beforeClass
public void beforeClass()Description copied from interface:BeforeAfterClassMethodsProvider
Called before the tests of the class are ran.- Specified by:
beforeClass
in interfaceBeforeAfterClassMethodsProvider
-
addExtraSystemProperties
protected void addExtraSystemProperties()Adds System properties as they are provided by thegetExtraSystemProperties()
method. -
getExtraSystemProperties
Extra System properties to set before the tests are run. Those will be automatically reset once the tests are done. -
getExtraExactBindingsToRemoveBeforePlugins
Extra exact bindings to remvoe before the plugins are applied. -
resetSystemProperties
protected void resetSystemProperties()Resets System properties. -
getGuiceTweakerFromThreadLocal
-
validateCreatedInjector
protected void validateCreatedInjector(com.google.inject.Injector guice) Validates the created Injector, before the dependencies are injected in the test class. -
createGuiceTweaker
-
getGuiceTweakerPluginsToDisable
Ids of plugins to disable.Example:
Set
pluginIdsToIgnore = super.getGuiceTweakerPluginsToDisable(); pluginIdsToIgnore.add(XXXXXX); return pluginIdsToIgnore; -
tweakConfigurations
-
isDisableBindCurrentClass
protected boolean isDisableBindCurrentClass() -
getGuiceTweakerExtraPlugins
Extra plugins to be added by the Guice Tweaker. -
getGuiceTweakerExtraOverridingModule
protected com.google.inject.Module getGuiceTweakerExtraOverridingModule()If an overriding Module is to be added using the Guice tweaker.Can be overriden with something like :
return Modules.override(super.getGuiceTweakerExtraOverridingModule()).with(new SpincastGuiceModuleBase() { protected void configure() { // ... } });
-
getTestingConfigImplementationClass
The implementation to use for theSpincastConfig
binding, when running tests. -
beforeTest
public void beforeTest()This method will be called before each test. -
afterTest
public void afterTest()This method will be called after each test. -
afterClass
public void afterClass()Description copied from interface:BeforeAfterClassMethodsProvider
Called after the tests of the class are ran.This will only be called if the beforeClass() method completed successfully, so you can be sure that the instanciation of the class is complete here.
- Specified by:
afterClass
in interfaceBeforeAfterClassMethodsProvider
-
beforeClassException
Description copied from interface:BeforeAfterClassMethodsProvider
This method will be called if an exception occures during theBeforeAfterClassMethodsProvider.beforeClass()
execution. Be careful!! Here, you are pretty much certain that the instanciation of the class was not succesful, so you can't use any of its methods!- Specified by:
beforeClassException
in interfaceBeforeAfterClassMethodsProvider
-
afterClassLoops
public void afterClassLoops()Description copied from interface:RepeatedClassAfterMethodProvider
Called after all the loops of the class as specified by theRepeatUntilFailure
orRepeatUntilSuccess
annotations.This will only be called if the beforeClass() method completed successfully, so you can be sure that the instanciation of the class is complete here.
- Specified by:
afterClassLoops
in interfaceRepeatedClassAfterMethodProvider
-
testFailure
public void testFailure(org.junit.runner.notification.Failure failure) You can override this method to be informed when a test fails.- Specified by:
testFailure
in interfaceTestFailureListener
-
getInjector
protected com.google.inject.Injector getInjector()Returns the Guice injector. -
deleteTestingWritableTempDir
protected void deleteTestingWritableTempDir()Deletes the testing writable temp directory. -
getTestingWritableTempDir
Returns the directory that can be used to create files and subdirectories during testing.This directory will be deleted when the tests are done.
-
getSpincastConfig
-
createTestingFilePath
Returns the absolute path to use, given the relative one, to create a temporary test file.This file will be deleted when the tests are done.
-
createTestingFilePath
Returns a unique path to use to create a temporary test file.This file will be deleted when the tests are done.
-
createTestingDir
Create a temp directory.This directory will be deleted when the tests are done.
-
createInjector
protected abstract com.google.inject.Injector createInjector()The test class must implement this method to create the Guice injector. It can be done by starting a real application (with amain(...)
method) or by creating a custom Injector.
-