xUnitには、setUp()関数とtearDown()関数が用意されています。
setUp()関数とtearDown()関数は、それぞれテストケース毎に呼び出され、
setUp()関数はテストケースが実行される前に、tearDown()関数はテストケースが実行された後に呼び出されます。
また、テストケース毎ではなくて、すべてのテストケースが実行される前に1度だけ呼び出されるsetUpPage()関数と、 すべてのテストケースが実行された後に1度だけ実行されるtearDown()関数も用意されています。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="application/xml; charset=UTF-8"/>
<meta http-equiv="Content-Script-Type" content="text/javascript"/>
<title>setUpTearDown.html</title>
<script type="text/javascript" src="./jsunit/app/jsUnitCore.js"></script>
<script type="text/javascript">
//<![CDATA[
function setUpPage() {
info('setUpPage()');
setUpPageStatus = "complete";
}
function setUp() {
info('setUp()');
}
function test1() {
info('test1()');
}
function test2() {
info('test2()');
}
function tearDown() {
info('tearDown()');
}
function tearDownPage() {
info('tearDownPage()');
}
//]]>
</script>
</head>
<body>
</body>
</html>

ログを見ると分かるとおり、
setUpPage() ↓ setUp() ↓ test2() ↓ tearDown() ↓ setUp() ↓ test1() ↓ tearDown() ↓ tearDownPage()
の順で関数が呼ばれているのが分かります。
注意しなければならないのは、setUpPage()関数は、
非同期通信等でテスト前の準備をすることも考慮されています。
そのため、setUpPage()関数が終了したとしても、非同期の処理が終わるまで待つことが必要になることがあります。
そのため、setUpPage()関数の中では、setUpPageStatus変数に"complete"という文字列が代入されるまでは、
次のsetUp()関数やテストケースは呼ばれないようになっています。
これは忘れることが多いので注意しましょう。