24.10.生成自动测试集

24.10.1. 问题
我想自动生成包含所有测试用例的测试集。
24.10.2. 解决办法
使用Antennae TestSuite-generation工具。
24.10.3. 讨论
TestCase必须包含进TestSuite才可以运行。创建新的TestCase并添加到TestSuite已经成为一种体力活。为了代替这种手工添加每个TestCase到TestSuite,你可以让TestSuite自动生成。开源的Antennae项目包含一个工具自动检测源代码目录和包含的测试自动生成TestSuite。

Antennae 包中的lib 子目录包含一个JAR 文件叫arc-flexunit2.jar , 里面有个类叫com.allurent.flexunit2.framework.AllTestsFileGenerator。当AllTestsFileGenerator在源代码目录运行时,它会寻找所有命名为Test*.as 或*Test.as并创建包含它们的TestSuite。这个工具在可以被重新定位的标准输出上创建TestSuite。生成的TestSuite文件被叫做FlexUnitAllTests。

假设Antennae被解压到~/Antennae和C:\Antennae,你可以像下面那样调用此工具:
java -cp ~/Antennae/lib/arc-flexunit2.jar
com.allurent.flexunit2.framework.AllTestsFileGenerator
~/FlexCookbook/src/ > ~/FlexCookbook/src/FlexUnitAllTests.as

java -cp C:\Antennae\lib\arc-flexunit2.jar
com.allurent.flexunit2.framework.AllTestsFileGenerator
C:\FlexCookbook\src\ > C:\FlexCookbook\src\FlexUnitAllTests.as
第一个例子中, ~/Antennae/lib/arc-flexunit2.jar 是JAR 文件的位置。运行的类名为com.allurent.flexunit2.framework.AllTestsFileGenerator,~/FlexCookbook/src/是源代码目录位置,~/FlexCookbook/src/FlexUnitAllTests.as 是生成文件的位置。

生成的TestSuite文件大概是这样:
+展开
-ActionScript
package
{
import flexunit.framework.*;
import mx.containers.CanvasTest;
import mx.containers.TileTest;
public class FlexUnitAllTests
{
public static function suite() : TestSuite
{
var testSuite:TestSuite = new TestSuite();
testSuite.addTestSuite(mx.containers.CanvasTest);
testSuite.addTestSuite(mx.containers.TileTest);
return testSuite;
}
}
}

当FlexUnit应用程序被编译之前,总是需要自动生成FlexUnitAllTests文件(请看Antennae文档关于Flex Builder下使用AllTestsFileGenerator工具的更多细节)

为了代替在主应用程序中手动构建TestSuite,可直接用FlexUnitAllTests类来代替TestSuite运行。每次FlexUnitAllTests类被重新生成时,所有包含的测试都将被重新编译和运行。使用FlexUnitAllTests的FlexUnit应用程序如下:
+展开
-XML
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:flexui="flexunit.flexui.*"
creationComplete="handleCreationComplete();">

<mx:Script>
<![CDATA[
import flexunit.framework.TestSuite;
private function handleCreationComplete():void
{
testRunner.test = FlexUnitAllTests.suite();
testRunner.startTest();
}

]]>
</mx:Script>
<flexui:TestRunnerBase id="testRunnerwidth="100%height="100%"/>
</mx:Application>

按规定所有名为Test*.as 或*Test.as都被包括进生成的TestSuite中。你可以创建一个过滤文件用正则表达式重新指定哪些文件将被包括进去。过滤文件的每一行指定一个独立的正则表达式,对每个文件进行匹配。如果文件名匹配任何一个正则表达式,那该文件将被包括进去。

过滤文件的例子如下:
/mx/containers/.*Test.as
RegExpTest.as

第一行包含/mx/containers/ 目录下的任何目录下的所有测试。第二行包括一个名为RegExpTest.as的测试文件。

如上面的规则被存储在filters.txt文件,可以这样调用:

java -cp ~/Antennae/lib/arc-flexunit2.jar
com.allurent.flexunit2.framework.AllTestsFileGenerator
~/FlexCookbook/src/ filters.txt >
~/FlexCookbook/src/FlexUnitAllTests.as


java -cp C:\Antennae\lib\arc-flexunit2.jar
com.allurent.flexunit2.framework.AllTestsFileGenerator
C:\FlexCookbook\src\ filters.txt >
C:\FlexCookbook\src\FlexUnitAllTests.as

加支付宝好友偷能量挖...


评论(0)网络
阅读(180)喜欢(0)flash/flex/fcs/AIR