RoyaleUnit metadata

Metadata tags for defining unit tests with RoyaleUnit

The following ActionScript metadata tags may be used with RoyaleUnit test classes:

After

Specify a method to run after each test in this class.

[After]
public static function after():void
{
	// runs after every test method in the same class
}

AfterClass

Specify a static method to run one time, after all tests have completed in this class.

[AfterClass]
public static function afterClass():void
{
	// runs after all test methods in the same class have completed
}

Using [AfterClass] metadata requires a nightly build of Apache Royale 0.9.7. This metadata will not work properly in version 0.9.6.

Before

Specify a method to run before each test in this class.

[Before]
public static function before():void
{
	// runs before every test method in the same class
}

BeforeClass

Specify a static method to run one time, before any tests have run in this class.

[BeforeClass]
public static function beforeClass():void
{
	// runs before all test methods in the same class
}

Using [BeforeClass] metadata requires a nightly build of Apache Royale 0.9.7. This metadata will not work properly in version 0.9.6.

Ignore

Specify that a specific test method should not run.

[Ignore]
[Test]
public function ignoredTest():void
{
	// this test will not be run
}

RunWith

Specify the runner to be used with a specific test suite. Should be combined with [Suite] metadata metadata.

[Suite]
[RunWith("org.apache.royale.test.runners.SuiteRunner")]
public class MySuite()
{
}

In most cases, the runner should be org.apache.royale.test.runners.SuiteRunner, but it is possible to create a custom runner, if desired.

Suite

Specify that a class is a test suite. Should be combined with [RunWith] metadata.

[Suite]
[RunWith("org.apache.royale.test.runners.SuiteRunner")]
public class MySuite()
{
	public var myTestCase:MyTestCase;
	public var myOtherSuite:MyOtherSuite;
}

To add test classes to the suite, define a public variable for each class, using the class as the variable type. You may also add other suite classes in the same way.

Test

Specify that a method is a test that should be run.

[Test]
public function testSimpleAdd():void
{
	var result:Number = 2 + 3;
	Assert.assertEquals(result, 5);
}

async

To test asynchronous functionality, add the async modifier to the [Test] metadata, and use the static methods on the org.apache.royale.test.async.Async class to set up a context for testing asynchronously.

[Test(async)]
public function testAsync():void
{
	Async.delayCall(this, function():void
	{
		// add asserts here
	}, 250);
}

In the example above, we use Async.delayCall() to call a function after 250 milliseconds. See the Async class for a number of different methods that you can use for asynchronous tests.

The async modifier requires a nightly build of Apache Royale 0.9.7. It is not supported in version 0.9.6.

timeout

By default, asynchronous tests fail if they do not complete within 500 milliseconds. Set the timeout modifier on the [Test] metadata to customize this duration (measured in milliseconds).

[Test(async,timeout="2000")]
public function testAsyncWithCustomTimeout():void
{
}

The timeout modifier requires a nightly build of Apache Royale 0.9.7. It is not supported in version 0.9.6.

expected

To require that a specific exception is thrown while a test is running, set the expected modifier on the [Test] metadata to the name of the exception class.

[Test(expected="RangeError")]
public function testWithExpectedException():void
{
	throw new RangeError("Out of range");
}

If the exception class is in a package, include the full package name.

[Test(expected="com.example.CustomError")]

The expected modifier requires a nightly build of Apache Royale 0.9.7. It is not supported in version 0.9.6.