2012/11/10 Sudha Ponnaganti <sudha.ponnaga...@citrix.com>:
> Can any tests that require external components be added to the functional 
> regressions that are enabled now? This way you can keep unit and functional 
> tests clearly separated.

+1

IMHO, An automation test separate and should be considered.

For example and tendency

Unit testing:
 - It runs when built
 - It does not use an external component
 - Low layer, fast

Functional testing:
 - It does not run when built
 - It uses an external component
 - High layer, maybe slow

>
> -----Original Message-----
> From: Alex Huang [mailto:alex.hu...@citrix.com]
> Sent: Friday, November 09, 2012 12:24 PM
> To: cloudstack-dev@incubator.apache.org
> Subject: RE: Unit tests
>
>
>
>> -----Original Message-----
>> From: Alex Huang [mailto:alex.hu...@citrix.com]
>> Sent: Friday, November 09, 2012 12:19 PM
>> To: cloudstack-dev@incubator.apache.org
>> Subject: RE: Unit tests
>>
>> > >> 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.
>
> And as for it being slow, perhaps we can split unit tests into two levels.  
> One level is for testing access to db and one level is for actual business 
> logic.
>
> --Alex



-- 
Satoshi Kobayashi <satosh...@stratosphere.co.jp>

Reply via email to