Thanks Eddie, it sounds great. It will be nice to have a standard junit test container for all of the system controls.
- Chad On 6/21/05, James Song <[EMAIL PROTECTED]> wrote: > > > According to > http://incubator.apache.org/beehive/controls/controlsProgramming.html, > there are four possible ways for user to instantiate controls: > > 1. declarative instantiation without property reset(@Control); > 2. declarative instantiation with property reset(@Control with > @Property); > 3. programmatic instantiation without property reset; > 4. programmatic instantiation with property reset; > Is ControlTestCase going to cover them all? > > Furthermore, controls could also raise events, which could be captured > by @EventHandler. How could this be addressed? > > -James > > > -----Original Message----- > From: Eddie ONeil [mailto:[EMAIL PROTECTED] > Sent: Tuesday, June 21, 2005 1:31 PM > To: Beehive Developers > Subject: junit test container > > All-- > > I've written a small, standalone JUnit test container that can be > used for out-of-container testing of Controls. This is a pretty > simple set of classes that are described below. > > When a test class runs, a new control container context is created > and control fields declared with @Control are instantiated, the test > code executes, and both the context and controls are removed. I think > this should be sufficient to replace the custom control test > containers defined in both the JDBC and web service controls. > > Non-goals of this test container include: > > - facilitate in-container testing as part of EJBs / Servlets / JSPs / > ServletFilters / etc. Frameworks like Cactus are good at this sort of > thing, and Beehive should ensure that the facilities to ensure > controls in a test case work there. > - define a new annotation-based model for writing test classes / test > methods. JUnit 4.0 and TestNG are already defining these annotations > / semantics. > > The classes involved are: > > - ControlTestCase -- abstract base class used to setup the control > container context and initialize fields marked with @Control. Also > has convenience methods for creating controls programmatically. > - ControlTestUtils -- static helper methods that can be used in a test > environment when a test case needs to extend a different base class. > These would be called in user code from the setUp / tearDown methods. > - ControlTestContainerContext -- simple ControlContainerContext > implementation that allows a test author to wire-up contextual > services, etc > > and a sample test is pasted at the bottom of the mail: > > I'm considering putting this in the tree under: > > trunk/controls/src/junit-testing/... > > and producing a JAR called "beehive-controls-junit-testing.jar" that > can be used from the samples / applications / etc and is included in > the Beehive distribution. > > It's definitely time that we started making this sort of testing > easier. :) > > Thoughts / comments? > > Eddie > > ::::: sample test > public class ContainmentTest > extends ControlTestCase { > > @Control > private Hello _declarativeHello; > > public void testDeclarativeInstantiation() { > System.out.println(_declarativeHello.hello()); > } > > public void testContainment() { > Hello hello = > (Hello)instantiateControl("pkg.containment.HelloBean"); > System.out.println(hello.hello()); > } > } > >