Class DAOTestExtension

  • All Implemented Interfaces:
    DropwizardExtension, org.junit.jupiter.api.extension.AfterAllCallback, org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.Extension

    public class DAOTestExtension
    extends Object
    implements DropwizardExtension, org.junit.jupiter.api.extension.BeforeAllCallback, org.junit.jupiter.api.extension.AfterAllCallback
    An extension for testing DAOs and Hibernate entities. It allows to quickly test the database access code without starting the Dropwizard infrastructure.

    Example:

    
        public DAOTestExtension daoTestExtension = DAOTestExtension.newBuilder()
              .addEntityClass(Person.class)
              .build();
    
        private PersonDAO personDAO;
    
       @BeforeEach
        public void setUp() throws Exception {
            personDAO = new PersonDAO(daoTestRule.getSessionFactory());
        }
    
       @Test
        public void createPerson() {
            Person wizard = daoTestExtension.inTransaction(() -> personDAO.create(new Person("Merlin", "The chief wizard")));
            assertThat(wizard.getId()).isGreaterThan(0);
            assertThat(wizard.getFullName()).isEqualTo("Merlin");
            assertThat(wizard.getJobTitle()).isEqualTo("The chief wizard");
        }
     

    • Method Detail

      • beforeAll

        public void beforeAll​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)
                       throws Exception
        Specified by:
        beforeAll in interface org.junit.jupiter.api.extension.BeforeAllCallback
        Throws:
        Exception
      • afterAll

        public void afterAll​(org.junit.jupiter.api.extension.ExtensionContext extensionContext)
        Specified by:
        afterAll in interface org.junit.jupiter.api.extension.AfterAllCallback
      • getSessionFactory

        public org.hibernate.SessionFactory getSessionFactory()
        Returns the current active session factory for injecting to DAOs.
        Returns:
        SessionFactory with an open session.
      • inTransaction

        public <T> T inTransaction​(Callable<T> call)
        Performs a call in a transaction
        Type Parameters:
        T - the type of the returned result
        Parameters:
        call - the call
        Returns:
        the result of the call
      • inTransaction

        public void inTransaction​(Runnable action)
        Performs an action in a transaction
        Parameters:
        action - the action