@Dale
  It seems to me that the Unit / Distributed / etc would be the more stable
purpose, and as importantly, each level is mutually-exclusive with any
other.
  At least under our current categorization tags, the functional area
categories don't form a partition on our test set.  For instance, the
GatewayLegacyAuthenticationRegressionTest is both a WanTest and a
SecurityTest.

On Wed, Jun 27, 2018 at 10:19 AM, Kirk Lund <kl...@apache.org> wrote:

> Don't forget to add "acceptanceTest/"
>
> On Tue, Jun 26, 2018 at 3:36 PM, Jacob Barrett <jbarr...@pivotal.io>
> wrote:
>
> > I'd like to suggest that we refactor our current test source set, which
> > contains both unit, integration and distributed tests, into distinct
> source
> > sets, test, integrationTest, distributedTest. These source sets would
> > replace the use of the primary categories UnitTest, IntegrationTest and
> > DistributedTest.
> >
> > The catalyst for this change is an issue that Gradle's test runner
> doesn't
> > pre-filter categories when launching tests, so if the tests are launched
> in
> > separate JVMs or Docker containers, like :distributeTest task, the cost
> of
> > spinning up those resources is realized only to immediately exit without
> > running any test for all test classes in the module. Switching to
> separate
> > source sets for each category would remove the need to filter on category
> > and only tests in the corresponding source set would get executed in
> their
> > external JVM or Docker container. An example of this issue is
> > geode-junit:distributedTest task, which forks all test classes in
> separate
> > JVMs but never actually runs any tests since there are no DistributedTest
> > tagged tests.
> >
> > The secondary effect is a way too isolate dependencies in each of the
> > source sets. Unit tests in the test set would not have dependencies need
> > for integration tests or distributed test so that if you accidentally
> tried
> > to import classes from those frameworks you would get a compiler failure.
> > Likewise, integration tests would not include distributed test framework
> > dependencies. Any shared test classes like mock, dummies, fakes, etc.
> could
> > be shared in a commonTest source set, but would not contain any tests
> > itself.
> >
> > The proposed structure would look like this:
> >
> > test/ - only contains unit tests.
> > integrationTest/ - only contains integration style tests.
> > distributedTest/ - only includes DUnit based tests.
> > commonTest/ - includes commonly shared classes between each test
> category.
> > Does not contain any classes.
> >
> > Thoughts?
> >
> > -Jake
> >
>

Reply via email to