1 Reply Latest reply on Jul 31, 2013 8:18 AM by thilaire

    Cleaning deployed webapp between tests

    thilaire

      Hello,

       

      I use Arquillian (which is an awesome project ) to test differents web applications using mostly the tomcat managed container.

       

      I get problems beceause tests of a class are not independents.

      Following principles of good tests, I'd like that my deployed web application never keep traces of previous tests. (http://xunitpatterns.com/Principles%20of%20Test%20Automation.html#Independent%20Test)

       

      For exemple :

       

      @Test
      public void testInsertAndGet() {
          beanService.insert(new Bean("name1"));
          Assertions.assertThat(beanService.getByName("name1")).isEqualsTo(new Bean("name1"));
      }
      
      @Test
      public void testInsertAndListAll() {
          beanService.insert(new Bean("first"));
          beanService.insert(new Bean("second"));
          Assertions.assertThat(beanService.getAll()).containsOnly( // Will fails if testInsertAndGet has been run before
              new Bean("first"),
              new Bean("second"));
      }
      

       

      I already found stuff about cleaning up the database but I'd like to restore the whole application as there could be caches or other non stateless components.

      I'm investigating on two points :

      - Use a custom deployer which undeploy/deploy the archive between every tests

      - Use tomcat manager web services to "reload" the application at the @Before step

       

      Does anybody have a better idea ?

      I'm open to every suggestions or advices which can help!

       

      Thanks