Class SpincastTestBase

java.lang.Object
org.spincast.testing.core.SpincastTestBase
All Implemented Interfaces:
org.spincast.testing.junitrunner.BeforeAfterClassMethodsProvider, org.spincast.testing.junitrunner.CanBeDisabled, org.spincast.testing.junitrunner.RepeatedClassAfterMethodProvider, org.spincast.testing.junitrunner.TestFailureListener
Direct Known Subclasses:
AppBasedTestingBase

public abstract class SpincastTestBase extends Object implements org.spincast.testing.junitrunner.BeforeAfterClassMethodsProvider, org.spincast.testing.junitrunner.TestFailureListener, org.spincast.testing.junitrunner.RepeatedClassAfterMethodProvider, org.spincast.testing.junitrunner.CanBeDisabled
Base class for Spincast test classes.

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 Details

    • logger

      protected static final org.slf4j.Logger logger
    • spincastConfig

      @Inject protected org.spincast.core.config.SpincastConfig spincastConfig
  • Constructor Details

    • SpincastTestBase

      public SpincastTestBase()
  • Method Details

    • isTestClassDisabledPreBeforeClass

      public boolean isTestClassDisabledPreBeforeClass(Collection<org.junit.runners.model.FrameworkMethod> filteredTests)
      Specified by:
      isTestClassDisabledPreBeforeClass in interface org.spincast.testing.junitrunner.CanBeDisabled
    • isTestClassDisabledPostBeforeClass

      public boolean isTestClassDisabledPostBeforeClass()
      Specified by:
      isTestClassDisabledPostBeforeClass in interface org.spincast.testing.junitrunner.CanBeDisabled
    • beforeClass

      public void beforeClass()
      Specified by:
      beforeClass in interface org.spincast.testing.junitrunner.BeforeAfterClassMethodsProvider
    • addExtraSystemProperties

      protected void addExtraSystemProperties()
      Adds System properties as they are provided by the getExtraSystemProperties() method.
    • getExtraSystemProperties

      protected Map<String,String> getExtraSystemProperties()
      Extra System properties to set before the tests are run. Those will be automatically reset once the tests are done.
    • getExtraExactBindingsToRemoveBeforePlugins

      protected Set<com.google.inject.Key<?>> getExtraExactBindingsToRemoveBeforePlugins()
      Extra exact bindings to remvoe before the plugins are applied.
    • resetSystemProperties

      protected void resetSystemProperties()
      Resets System properties.
    • getGuiceTweakerFromThreadLocal

      protected org.spincast.core.guice.GuiceTweaker getGuiceTweakerFromThreadLocal()
    • validateCreatedInjector

      protected void validateCreatedInjector(com.google.inject.Injector guice)
      Validates the created Injector, before the dependencies are injected in the test class.
    • createGuiceTweaker

      protected org.spincast.core.guice.GuiceTweaker createGuiceTweaker()
    • getGuiceTweakerPluginsToDisable

      protected Set<String> getGuiceTweakerPluginsToDisable()
      Ids of plugins to disable.

      Example:

       Set pluginIdsToIgnore = super.getGuiceTweakerPluginsToDisable();
       pluginIdsToIgnore.add(XXXXXX);
       return pluginIdsToIgnore;
       
    • tweakConfigurations

      protected void tweakConfigurations(org.spincast.core.guice.GuiceTweaker guiceTweaker)
    • isDisableBindCurrentClass

      protected boolean isDisableBindCurrentClass()
    • getGuiceTweakerExtraPlugins

      protected List<org.spincast.core.guice.SpincastPlugin> 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

      protected Class<? extends org.spincast.core.config.SpincastConfig> getTestingConfigImplementationClass()
      The implementation to use for the SpincastConfig 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()
      Specified by:
      afterClass in interface org.spincast.testing.junitrunner.BeforeAfterClassMethodsProvider
    • beforeClassException

      public void beforeClassException(Throwable ex)
      Specified by:
      beforeClassException in interface org.spincast.testing.junitrunner.BeforeAfterClassMethodsProvider
    • afterClassLoops

      public void afterClassLoops()
      Specified by:
      afterClassLoops in interface org.spincast.testing.junitrunner.RepeatedClassAfterMethodProvider
    • 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 interface org.spincast.testing.junitrunner.TestFailureListener
    • getInjector

      protected com.google.inject.Injector getInjector()
      Returns the Guice injector.
    • deleteTestingWritableTempDir

      protected void deleteTestingWritableTempDir()
      Deletes the testing writable temp directory.
    • getTestingWritableTempDir

      protected File 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

      protected org.spincast.core.config.SpincastConfig getSpincastConfig()
    • createTestingFilePath

      protected String createTestingFilePath(String relativePath)
      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

      protected String createTestingFilePath()
      Returns a unique path to use to create a temporary test file.

      This file will be deleted when the tests are done.

    • createTestingDir

      protected File 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 a main(...) method) or by creating a custom Injector.