|
|
|
|
|
Sponsored Link •
|
|
Advertisement
|
A fixture consists of objects and anything else needed to perform a test.
In general, all test methods in a Suite will
share the same fixture. Fixtures will be composed of objects,
stored in private instance variables of the Suite. You can create
fixtures in either of two ways, either via the constructor of your Suite
subclass or via Suite's setupFixture method.
Suite.executeTestMethods calls setupFixture before
invoking each test method, and calls cleanupFixture after
each test method completes. Similar to JUnit's setup and
teardown, these methods can be used to create a fresh fixture
before each test method, and destroy it afterwards.
The setupFixture and cleanupFixture methods are useful
when your test methods destroy or change the fixture. Unlike JUnit, Testkit's
Suite.executeTestMethods invokes all test methods on the same Suite instance.
(JUnit generally creates a different TestCase instance for each test method.) If any of
your test methods destroy its fixture such that the fixture can't be used
by sibling test methods invoked later on the same Suite object, you should
use setupFixture to create the fixture.
In setupFixture, you create the necessary objects and perform any other
tasks to ready the fixture, such as opening a file or socket. In cleanupFixture, you
can release the objects to the whims of the garbage collector and perform
any other necessary cleanup, such as closing the file or socket.
If you are certain your test methods won't destroy the fixture, and you don't need to perform
any fixture cleanup, you can simply initialize the private variables that represent your fixture in
a constructor of your Suite subclass. This is the approach I took in class
LocalesSuite. I used the constructor to create the fixture objects, which I
stored in private instance variables. I then made sure my test methods used, but did
not destroy or change, the fixture objects. For the LocalesSuite fixture,
I created five Locales objects and three HashSets, as shown
in this code snippet from LocalesSuite:
package com.artima.serviceuitest;
import com.artima.testkit.Suite;
import net.jini.lookup.ui.attribute.Locales;
import java.util.HashSet;
public class LocalesSuite extends Suite {
private Locales one;
private Locales two;
private Locales three;
private Locales four;
private Locales five;
private HashSet setOne;
private HashSet setTwo;
private HashSet setThree;
public LocalesSuite() {
// one and two are equal and empty
one = new Locales(new HashSet());
two = new Locales(new HashSet());
setOne = new HashSet();
setOne.add(Locale.ENGLISH);
// three has one locale in it
three = new Locales(setOne);
setTwo = new HashSet();
setTwo.add(Locale.ENGLISH);
setTwo.add(Locale.UK);
// four has two locales in it
four = new Locales(setTwo);
setThree = (HashSet) setOne.clone();
setThree.add(Locale.UK);
// five has same two locales in it as four
five = new Locales(setThree);
}
|
Sponsored Links
|