Daniel John Debrunner wrote:

The current approach has very little magic, one decorator for client and
probably one decorator for DB2 client. I strongly agree that tests
should not be overly influenced by the suite setup.
I think this is a sound principle to keep in mind as work progresses on this new testsuite. It might not be possible to avoid suite influence totally, but hopefully it is kept at a level where it is not regarded as a problem with the testsuite.

This is an interesting idea, some thoughts jump out at me:

- A single test would potentially run in many configurations:
    embedded, client, db2 client, encryption DES, encryption AES, ...
If the number of configurations grows large, it might pay off to carefully review wether something should be a configuration of its own or rather be tested through a set of more specialized tests. When the master files are gone and we have a new assertion-based testsuite, the tests should only fail on things they are specifically looking for, possibly making them less suited for testing of a large number of configurations? I guess it will be a tradeoff, having many configurations or more tests.

- The large number of decorators required per test could factor into
large memory use for an entire suite, not sure of the overhead of each
TestSetup.

- Embedded tests would be running with the network server booted by
default, not sure of the impact of this, starting the network server for
each individual TestCase would slow an entire suite down too much
Are you thinking of the impact of the network server running in the same vm as junit?

- It does make running a single TestCase in all configurations easy

- The potential requirement to modify all tests when a new
configuration is added into the run, e.g. if I add a configuration that
only works in 10% of the tests (that's my itch) then I have to modify
the other 90% of tests to disable it from running. Assuming the default
as you say is to run each test in all possible configurations, I assume
this would be enforced in the base test class. Maybe that's the case
today with the current approach where a test is ideally self describing.
I guess that the default set of configurations that a TestCase supports could be something smaller than the set of all possible configurations. The default runtime configuration would be to run all tests in all possible configurations, but a TestCase with default settings would override this with its smaller (default) set. You would then have to fix your 10% tests by adding the new configuration to their supported set, instead of removing it from the other 90%. Still, that is work, but I would hope we don't end up with a jungle of configurations that anyhow would be a pain to maintain.

I do believe, though, that it makes sense that a TestCase itself maintains the information about what configurations/frameworks it supports or requires, and not suite classes located somewhere else.

- Maybe there are some configurations that are best handled at the leaf
level, e.g. embedded and client, but others are best handled at a suite
level, e.g. db2 client, encryption. So a mix of the two approaches would
be good.
Yes, that may very well be. As I've mentioned above I also think it should be considered if all configurations are really needed or wether it can be tested as well or better with new tests instead.

I'm going to continue my current setup approach because it's not opposed
to what you approach, the majority of the work will be getting tests
converted to JUnit and running in client & db2 client mode. Ie. most of
the work overlaps anyway.
Yes, that is true. The work you are doing now is making it a lot easier to imagine how things may fit together with a testsuite written and run only with junit, and to have opinions on that.

Vemund

Reply via email to