This all has to do with JUnit, nothing maven specific.

If you want to write a TestSuite that runs all of the tests you specify, you 
can use a solution like 
http://junit.sourceforge.net/doc/faq/faq.htm#organize_3.  I'm almost positive 
that maven will not pick up a test class unless the name of the class ends in 
"Test".  However, you can specify that maven runs only the TestSuite like 
"maven -Dtestcase=AllTests test:single".


Here's an example of having a TestSetup run only once for all unittests using a 
different method.

// This is not a test class
public class DbSetup extends TestSetup {
  private static Connection _conn;

  public DbSetup(Test suite) { super(suite); }

  public void setUp() throws Exception {
    if (_conn == null) { // will only start database once for all tests
      Class.forName("org.hsqldb.jdbcDriver");
      _conn = DriverManager.getConnection("jdbc:hsqldb:.", "sa", "");
      // LOAD SCHEMA HERE
    }
  }

  public void tearDown() {
    // do nothing, db will shut down when JVM exists or _conn is closed
  }

  public Connection getConnection() { return _conn; }
}

// This is a test class
public class JDBCTest extends TestCase {
  private static DbSetup _db;

  public static Test suite() {
    TestSuite suite = new TestSuite(JDBCTest.class);
    _db = new DbSetup(suite);
    return _db;
  }

  public void testSomething() {
    Connection conn = _db.getConnection();
  }
}


If you go with that solution

-jake



On Wednesday 05 January 2005 04:01 pm, Charles N. Harvey III wrote:
> This is exactly what I was looking for.  I'm still playing with it
> to get it to work out correctly, but it is in the right direction, thanks.
> 
> If I write a TestSuite (AllTests.java), will it run first?  That's one
> thing that I was never sure of.  Do the tests all run individually or
> does the Suite get executed and then it runs the tests?
> 
> Just curious, I just didn't know how that part of the test framework
> of maven worked.
> 
> Thanks again.
> 
> 
> Charlie
> 
> 
> 
> Jake Ewerdt said the following on 1/5/2005 3:09 PM:
> 
> >I set up the HSQL database in the JUnit TestSetup.  This drops and 
> >re-creates the database for each test class that need the database, but the 
> >overhead is quite low, only a few test classes need the database running, 
> >and it ensures left over database artifacts will not have any side-effects 
> >on future tests.  Only starting the database and creating the tables once 
> >for all tests can be easily accomplished by keeping around the static 
> >connection and have all test classes get that connection instead of doing 
> >the setup themselves.
> >
> >The code looks something like this:
> >
> >public class JDBCTest extends TestCase {
> >  private static Connection conn;
> >
> >  public static Test suite() {
> >    TestSuite suite = new TestSuite(JDBCTest.class);
> >
> >    TestSetup wrapper = new TestSetup(suite) {
> >      protected void setUp()
> >        throws Exception {
> >        Class.forName("org.hsqldb.jdbcDriver");
> >        conn = DriverManager.getConnection("jdbc:hsqldb:.", "sa", "");
> >        // LOAD SCHEMA HERE
> >      }
> >      protected void tearDown()
> >        throws Exception {
> >          conn.close();
> >      }
> >    };
> >    return wrapper;
> >  }
> >
> >  public void testSomething() {
> >  }
> >}
> >
> >I use a file-based db by replacing "jdbc:hsqldb:." with something like 
> >"jdbc:hsqldb:tmpdb" only if I need to view the actual tables or data in the 
> >database.
> >
> >-jake
> >
> >
> >On Wednesday 05 January 2005 11:35 am, Charles N. Harvey III wrote:
> >  
> >
> >>Hello.
> >>I have been doing lots of reading about how great it is to use an in-process
> >>DB like Hypersonic for testing.  Thing is, there are not many examples of
> >>how to do this.  What I want to do is start an in-memory DB (not a file DB
> >>because the test is small) when I run my tests, and then run tests.
> >>
> >>So the first thing that has to happen when I run "maven test" is that the
> >>DB has to be created.  Then I have to execute CREATE statements for the
> >>necessary tables.  Then I can proceed with my tests.
> >>
> >>Has anyone done this?  Should I use a file-based DB instead of in memory?
> >>How do I get the maven test suite to "do this one thing first, and only
> >>once"?
> >>
> >>Any help is greatly appreciated.
> >>
> >>
> >>Charlie
> >>
> >>
> >>---------------------------------------------------------------------
> >>To unsubscribe, e-mail: [EMAIL PROTECTED]
> >>For additional commands, e-mail: [EMAIL PROTECTED]
> >>
> >>
> >>    
> >>
> >
> >---------------------------------------------------------------------
> >To unsubscribe, e-mail: [EMAIL PROTECTED]
> >For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
> >
> >  
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to