Create a unit test
An example of creating unit tests with RoyaleUnit for Apache Royale
Test cases
A test case is a class that defines a collection of tests. Each test is written as a method of a class. Each test method should be marked with [Test]
metadata.
package com.example
{
import org.apache.royale.test.Assert;
public class MyFirstTests
{
[Test]
public function testSimpleAdd():void
{
var result:Number = 2 + 3;
Assert.assertEquals(result, 5);
}
[Test]
public function testSimpleSubtract():void
{
var result:Number = 6 - 4;
Assert.assertEquals(result, 2);
}
}
}
Each test method should be marked with [Test]
metadata:
[Test]
public function testSimpleAdd():void
The org.apache.royale.test.Assert
class defines a number of assertion methods that may be useful for testing. In this case, use assertEquals()
to compare two values:
Assert.assertEquals(result, 5);
If the value of the result
variable is not equal to 5
, the test will fail.
Run unit tests
Create a simple Apache Royale application in an MXML file with the name MyTests.mxml:
<?xml version="1.0" encoding="utf-8"?>
<js:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:js="library://ns.apache.org/royale/basic"
xmlns:test="org.apache.royale.test.*"
applicationComplete="runTests()">
<fx:Declarations>
<test:RoyaleUnitCore id="core"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import org.apache.royale.test.listeners.TraceListener;
import com.example.MyFirstTests;
public function runTests():void
{
core.addListener(new TraceListener());
core.runClasses(MyFirstTests);
}
]]>
</fx:Script>
<js:valuesImpl>
<js:SimpleValuesImpl values="[]"/>
</js:valuesImpl>
</js:Application>
Use an instance of the RoyaleUnitCore
class to run unit tests:
<test:RoyaleUnitCore id="core"/>
Notice the
test
namespace using theorg.apache.royale.test.*
package where theRoyaleUnitCore
class is defined.
The TraceListener
class tells RoyaleUnitCore
displays the test results in the debug console:
core.addListener(new TraceListener());
Pass one or more test classes to the runClasses()
method of the RoyaleUnitCore
instance:
core.runClasses(MyFirstTests);
Compile this application and run it using a debugger to see the results of the tests.
mxmlc -keep-as3-metadata+=Test MyTests.mxml
Don’t forget to tell the compiler to keep any RoyaleUnit metadata that is used in the application. In this case, only
[Test]
metadata is used, but several other tags are available.
The debug console output should look similar to the following:
com.example::MyFirstTests.testSimpleAdd .
com.example::MyFirstTests.testSimpleSubtract .
Time: 0.346
OK (2 tests)