> >> 2 - Do we want to get stricter about what exactly is considered to be
> >> a unit test (vs an automated test that may or may not be based on the
> >> junit framework)?
> >
> > I actually consider db tests to be unit tests as long as the db is setup and
> cleaned up by the unit test itself.
> 
> Having a real DB as a requirement for low level unit tests does two
> things that I don't like.
> 
> First, it requires the configuration of a database (in our case,
> MySQL) as part of running the test.  That's a build dependency that
> (IMO) shouldn't be needed.
> 
> Second, configuring and using a real database significantly slows down
> the unit test process.  For unit tests to be useful, they have to be
> as fast as possible.  We simply don't have enough unit tests for this
> to be a major problem right now, but as the coverage increases (true
> unit tests, not integration tests) this will get much worse.
> 
> In my ideal world, unit tests are limited in their test scope to only
> cover code within a particular object (inherited or directly
> accessed).  Imported objects should usually be mocked.  We might be
> arguing about nuance of definition here, but I've always tried to keep
> a bright red line between unit and integration tests.  Both matter,
> but they test different things.
> 

Actually, you and I are not that far apart.  I'm thinking mainly in terms of 
testing code that are actually accessing database.  For example, the unit test 
is to ensure a search query returns the results that are intended.  You can't 
really mock those up.  

For code paths that are not testing search queries but are just dependent on 
search results, I agree with you.  Just mock up the DAOs.

--Alex

Reply via email to