A Parameterized Testrunner for FlexUnit
February 10, 2010 at 10:54 AM | ActionScript | View CommentsA couple of days ago, I complained about FlexUnit's Theories. Well, with a bit of encouragement from @drewbourne, I broke down and wrote a proper parameterized testrunner:
[RunWith("utils.testrunners.ParameterizedRunner")]
class AdditionTests {
public static var numbersToTest:Array = [
[1, 2, 3],
[4, 5, 9],
[-1, 1, 0]
};
[Parameterized("numbersToTest")]
public function testAddition(a:int, b:int, expected:int):void {
assertEqual(a+b, expected);
}
}
And that code will do exactly what you'd expect: run three test cases, one for each of the inputs. If one test fails, the others will still run. Helpful error messages will be provided when a test fails.
The source can be downloaded from: http://gist.github.com/299871 (and it will be getting a new home when ever I get around to releasing all of my AS utilities)
Look useful? Give it a try and tell me what you think – I'd love to know.
Update
Since this article was written, parameterized tests have been added to FlexUnit core. The documentation is over on the FlexUnit wiki: http://docs.flexunit.org/index.php?title=Parameterized_Test_Styles
And this is the above test, using the FlexUnit syntax:
[RunWith("org.flexunit.runners.Parameterized")]
public class AdditionTests {
public static var numbersToTest:Array = [
[1, 2, 3],
[4, 5, 9],
[-1, 1, 0]
};
[Test(dataProvider="numbersToTest")]
public function testAddition(a:int, b:int, expected:int):void {
assertEqual(a+b, expected);
}
}