Hi,
I’m having a problem with a unit test that uses the flexunit 4
UIImpersonator class and the buttonbar class when running it with
flex-mojos.
I’m posting it here because when I run the same test with the default
runner from eclipse the test passes every time.
Only when executing it with maven and the flexmojos I get this problem.
The unit test is pretty straightforward:
[Before(async,ui)]
public function setUp():void {
mainView = new MainView();
Async.proceedOnEvent(this, mainView,
FlexEvent.CREATION_COMPLETE, 2000);
UIImpersonator.addChild(mainView);
appModel = new AppModel();
mainView.appModel = appModel;
}
[Test(async,timeout="2000")]
public function testCloseProject():void {
Async.handleEvent(this, mainView,
UserEvent.HOME_USER_EVENT, closeProjectHandler);
var lastButtonIndex:int =
(mainView.topMenu.dataProvider as ArrayCollection).length - 1;
var closeButton:Button =
mainView.topMenu.getChildAt(lastButtonIndex) as Button;
closeButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
public function closeProjectHandler(event:UserEvent,
param2:*):void {
mainView.topMenu.validateNow();
Assert.assertEquals(0, mainView.topMenu.selectedIndex);
}
The mainview has a topmenu property that’s a buttonbar.
<!-- top menu -->
<mx:ToggleButtonBar id="topMenu" styleName="topMenu"
dataProvider="{appModel.topMenuItems}"
itemClick="buttonBarClick(event)"/>
And the model that fills it is declared as follows:
public var topMenuItems:Array = ["General", "Close Project"];
Running the test through the flexunit 4 runner
(org.flexunit.flexui.TestRunnerBase) makes the test pass every time.
But running it with maven and the flexmojos I get the following error:
TypeError: Error #1009: Cannot access a property or method of a null
object reference
at
mx.controls::ButtonBar/http://www.adobe.com/2006/flex/mx/internal::drawButtonFocus()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\controls\ButtonBar.as:930]
at
mx.controls::ButtonBar/clickHandler()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\controls\ButtonBar.as:1053]
at
mx.controls::ToggleButtonBar/clickHandler()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\controls\ToggleButtonBar.as:625]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at
mx.core::UIComponent/dispatchEvent()[C:\autobuild\3.5.0\frameworks\projects\framework\src\mx\core\UIComponent.as:9440]
at
nl.prismait.icco.monitoringsprotocol.views::MainViewTest/testCloseProject()[C:\workspaces\icco-monitoringsprotocol\IccoMonitoringsProtocolAir\src\test\air\nl\prismait\icco\monitoringsprotocol\views\MainViewTest.as:44]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at
flex.lang.reflect::Method/apply()[C:\Users\mlabriola\Documents\workspaces\net\digitalprimates\opensource\flexunit\FlexUnit4\src\flex\lang\reflect\Method.as:124]
at
ReflectiveCallable/run()[C:\Users\mlabriola\Documents\workspaces\net\digitalprimates\opensource\flexunit\FlexUnit4\src\org\flexunit\runners\model\FrameworkMethod.as:214]
at
org.flexunit.runners.model::FrameworkMethod/applyExplosivelyAsync()[C:\Users\mlabriola\Documents\workspaces\net\digitalprimates\opensource\flexunit\FlexUnit4\src\org\flexunit\runners\model\FrameworkMethod.as:121]
at
org.flexunit.runners.model::FrameworkMethod/invokeExplosivelyAsync()[C:\Users\mlabriola\Documents\workspaces\net\digitalprimates\opensource\flexunit\FlexUnit4\src\org\flexunit\runners\model\FrameworkMethod.as:132]
at
org.flexunit.internals.runners.statements::InvokeMethod/evaluate()[C:\Users\mlabriola\Documents\workspaces\net\digitalprimates\opensource\flexunit\FlexUnit4\src\org\flexunit\internals\runners\statements\InvokeMethod.as:52]
at
org.flexunit.internals.runners.statements::ExpectAsync/evaluate()[C:\Users\mlabriola\Documents\workspaces\net\digitalprimates\opensource\flexunit\FlexUnit4\src\org\flexunit\internals\runners\statements\ExpectAsync.as:335]
at
org.flexunit.internals.runners.statements::FailOnTimeout/evaluate()[C:\Users\mlabriola\Documents\workspaces\net\digitalprimates\opensource\flexunit\FlexUnit4\src\org\flexunit\internals\runners\statements\FailOnTimeout.as:68]
at
org.flexunit.internals.runners.statements::StackAndFrameManagement/handleTimerComplete()[C:\Users\mlabriola\Documents\workspaces\net\digitalprimates\opensource\flexunit\FlexUnit4\src\org\flexunit\internals\runners\statements\StackAndFrameManagement.as:100]
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.utils::Timer/tick()
I have a feeling that the problem lies within the UIImpersonator class
that sets the object on the stage, but I was wondering if someone had
a clue where to start looking because I’ve been trying for a day now
and I can’t find any leads.
I’ll paste my pom.xml for reference but I don’t suspect that’s the problem.
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>icco</groupId>
<artifactId>monitoringsProtocol</artifactId>
<version>0.1</version>
<packaging>swf</packaging>
<name>monitoringsProtocol Project</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<build>
<sourceDirectory>src/main/air</sourceDirectory>
<testSourceDirectory>src/test/air</testSourceDirectory>
<plugins>
<plugin>
<groupId>org.sonatype.flexmojos</groupId>
<artifactId>flexmojos-maven-plugin</artifactId>
<version>3.6.1</version>
<extensions>true</extensions>
<configuration>
<targetPlayer>10.0.0</targetPlayer>
<sourceFile>MonitoringsProtocol.mxml</sourceFile>
</configuration>
<dependencies>
<dependency>
<groupId>com.adobe.flex</groupId>
<artifactId>compiler</artifactId>
<version>3.5.0.12683</version>
<type>pom</type>
</dependency>
</dependencies>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>com.adobe.flex.framework</groupId>
<artifactId>air-framework</artifactId>
<version>3.5.0.12683</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>com.adobe.flexunit</groupId>
<artifactId>flexunit</artifactId>
<version>4.0-beta-2</version>
<type>swc</type>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Peter
--
You received this message because you are subscribed to the Google
Groups "Flex Mojos" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/flex-mojos
http://flexmojos.sonatype.org/