NanoTest is a light weight test library. Its interface is similar to the haxe.unit testing framework, but it can output test failures as compiler warnings or errors.
NanoTest can display test failures as compiler warnings on the Result Panel of FlashDevelop and other IDEs.
You can install NanoTest from haxelib.
haxelib install nanotest
Create test classes and save them as sample/TestSample.hx.
package sample;
import nanotest.NanoTestRunner;
import nanotest.NanoTestCase;
class TestSample {
static function main(){
var r = new NanoTestRunner();
r.add(new SampleCase());
r.run();
}
}
class SampleCase extends NanoTestCase {
public function testBasic(){
assertEquals( "A", "A" );
}
}
Create compile.hxml with the content:
--next
-neko report/test.n
-main sample.FailureSample
-lib nanotest
-cp sample
-debug
--next
-cmd neko "report/test.n" 1>report/neko.txt
--next
-lib nanotest
--macro nanotest.NanoTestRunner.readResult('report/neko.txt', ['sample'], 'Neko')
Compile it on commandline
haxe compile.hxml
Use NanoTestRunner.error as failure output function.
var r = new NanoTestRunner(NanoTestRunner.error);
NanoTestCase has some addtional functions,
- assertThrows(func:Void->Void, ?isSuccess:Dynamic->Bool, ?p:PosInfos)
- assert a function expected to throw exception. If isSuccess function is set, the thrown exception is tested by the isSuccess function.
- assertNotEquals(expected:T, ?actual:T, ?p:PosInfos)
- assert values which do not equals
- globalSetup()
- setup which is run once per class of tests
- globalTearDown()
- tearDown which is run once per class of tests
- success(?posInfos:PosInfos)
- output a success
- fail(message:String, ?posInfos:PosInfos)
- output a failure
- error(e:Dynamic)
- output the current exception
and the assertEquals function supports EnumValue.
The label function can be used for subtending failures in same line.
class SampleCase extends NanoTestCase {
public function testBasic() {
var a = [1, 2, 3, 5];
var b = [2, 2, 3, 3];
for (i in 0...a.length) {
assertEquals(a[i], b[i]).label(i);
}
}
}
This result is below.
Test failed : expected 1 but was 2 [0]
Test failed : expected 5 but was 3 [3]
The MIT License