Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
RE: [stellation-res] Work merging Unit tests

OK, so I'm a bonehead. There's a method Suite.addTestSuite(Class), which
gets the test suite for a class, and adds it to the current suite. So
the right way to do it is to use that, rather than the dumb hack I
suggested.

	-Mark



On Tue, 2002-12-31 at 20:28, Mark C. Chu-Carroll wrote:
> On Mon, 2002-12-30 at 07:09, DeSmet_Ringo@xxxxxxx wrote:
> > Mark,
> > 
> > > What I'd like to do is propose adding a new master test runner, which
> > > will run all of the suites in the unittest project. To do this, we
> > > would add a method "static void addTests(TestSuite suite)" to each
> > > of the unit tests; and the current "suite" method in each of the
> > > current test suites would be replaced with boilerplate:
> > > 
> > > 	public static TestSuite suite() {
> > > 	   TestSuite result = new TestSuite();
> > > 	   addTests(result);
> > > 	   return result;
> > >         }
> > > 
> > > Then, in the master unit test class, when you add a suite, 
> > > you just add
> > > one line to its "suite" method, to call the "addTests" method of
> > > your new test suite class.
> > 
> > So in the end, you have two methods in each test class, the suite method and
> > the addTests method, right?
> > 
> > For quite some time now, I have the habit of only writing a suite method and
> > adding sub-suites to it in there:
> > 
> > public static Test suite() {
> > 	TestSuite suite = new TestSuite(ThisClass.class);
> > 	suite.setName("A descriptive name, something better than the
> > classname");
> > 
> > 	suite.addTest(SubSuiteClass.suite());
> > 	// Add other subsuites here.
> > }
> > 
> > You only have one method per class where to look. Giving a Class object to
> > the TestSuite constructor will let it detect all test methods through
> > reflection. Using the suite method in both master and sub suites gives you
> > the opportunity to run any suite you like. E.g. if you use the Eclipse JUnit
> > test runner on a sub suite, it will build the sub suite using the suite
> > method, not through the addTests method.
> > 
> > Setting a more readable name is always nice in test runners like the Swing
> > GUI test runner and the Eclipse JUnit test runner. You will see nice
> > categories with a clean name...
> 
> OK. I agree that being able to name suites is useful. I do make heavy
> use of the individual test names, and there's a lot of value there.
> 
> But what I'd really like is an easy-to-use way to run multiple suites
> together, as a comprehensive test. And there's a compromise there: you
> do lose the ability to name suites; you do lose the ability to
> automatically generate the suite using introspection; you have to write
> your own suite methods that work by manually adding tests. 
> 
> I'm far from an expert on JUnit, so there's a fairly good chance that
> there's a better way of doing what I want without making these
> compromises. Do you know a better way of using JUnit to merge the suites
> together into one comprehensive suite, while still retaining the ability
> to run them individuality?
> 
> 	-Mark
> 
> -- 
> Mark Craig Chu-Carroll,  IBM T.J. Watson Research Center  
> *** The Stellation project: Advanced SCM for Collaboration
> ***		http://www.eclipse.org/stellation
> *** Work Email: mcc@xxxxxxxxxxxxxx  ------- Personal Email: markcc@xxxxxxxxxxx
> 
> 
> _______________________________________________
> stellation-res mailing list
> stellation-res@xxxxxxxxxxxxxxx
> http://dev.eclipse.org/mailman/listinfo/stellation-res
-- 
Mark Craig Chu-Carroll,  IBM T.J. Watson Research Center  
*** The Stellation project: Advanced SCM for Collaboration
***		http://www.eclipse.org/stellation
*** Work Email: mcc@xxxxxxxxxxxxxx  ------- Personal Email: markcc@xxxxxxxxxxx




Back to the top