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
FieldsModifier and TypeFieldDescriptionprotected static final org.slf4j.Loggerprotected SpincastConfig -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected voidAdds System properties as they are provided by thegetExtraSystemProperties()method.voidCalled after the tests of the class are ran.voidCalled after all the loops of the class as specified by theRepeatUntilFailureorRepeatUntilSuccessannotations.voidThis method will be called after each test.voidCalled before the tests of the class are ran.voidThis method will be called if an exception occures during theBeforeAfterClassMethodsProvider.beforeClass()execution.voidThis method will be called before each test.protected GuiceTweakerprotected abstract com.google.inject.InjectorThe test class must implement this method to create the Guice injector.protected FileCreate a temp directory.protected StringReturns a unique path to use to create a temporary test file.protected StringcreateTestingFilePath(String relativePath) Returns the absolute path to use, given the relative one, to create a temporary test file.protected voidDeletes 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.ModuleIf an overriding Module is to be added using the Guice tweaker.protected List<SpincastPlugin>Extra plugins to be added by the Guice Tweaker.protected GuiceTweakerIds of plugins to disable.protected com.google.inject.InjectorReturns the Guice injector.protected SpincastConfigprotected Class<? extends SpincastConfig>The implementation to use for theSpincastConfigbinding, when running tests.protected FileReturns the directory that can be used to create files and subdirectories during testing.protected booleanbooleanShould the tests of this class all be disabled?booleanisTestClassDisabledPreBeforeClass(Collection<org.junit.runners.model.FrameworkMethod> filteredTests) Should the tests class be disabled?protected voidResets System properties.voidtestFailure(org.junit.runner.notification.Failure failure) You can override this method to be informed when a test fails.protected voidtweakConfigurations(GuiceTweaker guiceTweaker) protected voidvalidateCreatedInjector(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:CanBeDisabledShould 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:
isTestClassDisabledPreBeforeClassin interfaceCanBeDisabled- Parameters:
filteredTests- the tests that are going to be run.
-
isTestClassDisabledPostBeforeClass
public boolean isTestClassDisabledPostBeforeClass()Description copied from interface:CanBeDisabledShould 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:
isTestClassDisabledPostBeforeClassin interfaceCanBeDisabled
-
beforeClass
public void beforeClass()Description copied from interface:BeforeAfterClassMethodsProviderCalled before the tests of the class are ran.- Specified by:
beforeClassin 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 theSpincastConfigbinding, 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:BeforeAfterClassMethodsProviderCalled 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:
afterClassin interfaceBeforeAfterClassMethodsProvider
-
beforeClassException
Description copied from interface:BeforeAfterClassMethodsProviderThis 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:
beforeClassExceptionin interfaceBeforeAfterClassMethodsProvider
-
afterClassLoops
public void afterClassLoops()Description copied from interface:RepeatedClassAfterMethodProviderCalled after all the loops of the class as specified by theRepeatUntilFailureorRepeatUntilSuccessannotations.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:
afterClassLoopsin 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:
testFailurein 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.
-