Hi,
Run into a painful bug that blocks our testing. Will continue investigating but wanted to post for advice / answers / etc.
Problem description: Previously testing-working FlashBuilder library project now fails with "VerifyError: Error #1053: Illegal override of ExpectAsync in org.flexunit.internals.runners.statements.ExpectAsync."
I'll go into the details below but here are the FB-unit-testing stack and console output...
Console output:
[SWF] C:\Users\PATH_TO_PROJECT\bin\FlexUnitApplication.swf - 2,036,321 bytes after decompression method not implemented org.flexunit.internals.runners.statements::IAsyncHandlingStatement/org.flexunit.internals.runners.statements:IAsyncHandlingStatement::handleBindableNextSequence() over-binding 0 in org.flexunit.internals.runners.statements::ExpectAsync method not implemented org.flexunit.internals.runners.statements::IAsyncHandlingStatement/org.flexunit.internals.runners.statements:IAsyncHandlingStatement::asyncResponder() over-binding 0 in org.flexunit.internals.runners.statements::ExpectAsync
FB stack 1:
VerifyError: Error #1053: Illegal override of ExpectAsync in org.flexunit.internals.runners.statements.ExpectAsync. at global$init at org.flexunit.runners::BlockFlexUnit4ClassRunner/withPotentialAsync(BlockFlexUnit4ClassRunner.as:336) at org.flexunit.runners::BlockFlexUnit4ClassRunner/withDecoration(BlockFlexUnit4ClassRunner.as:345) at org.flexunit.runners::BlockFlexUnit4ClassRunner/methodBlock(BlockFlexUnit4ClassRunner.as:297) at org.flexunit.runners::BlockFlexUnit4ClassRunner/runChild(BlockFlexUnit4ClassRunner.as:129) at org.flexunit.internals.runners::ChildRunnerSequencer/executeStep(ChildRunnerSequencer.as:82) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.internals.runners.statements::StatementSequencer/evaluate(StatementSequencer.as:108) at org.flexunit.internals.runners.statements::StatementSequencer/executeStep(StatementSequencer.as:97) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.token::AsyncTestToken/sendResult(AsyncTestToken.as:118) at org.flexunit.internals.runners.statements::AsyncStatementBase/sendComplete(AsyncStatementBase.as:76) at org.flexunit.internals.runners.statements::StatementSequencer/sendComplete(StatementSequencer.as:165) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:138) at org.flexunit.internals.runners.statements::StatementSequencer/evaluate(StatementSequencer.as:108) at org.flexunit.internals.runners.statements::StatementSequencer/executeStep(StatementSequencer.as:97) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.internals.runners.statements::StatementSequencer/evaluate(StatementSequencer.as:108) at org.flexunit.runners::ParentRunner/run(ParentRunner.as:416) at org.flexunit.runner::FlexUnitCore/beginRunnerExecution(FlexUnitCore.as:245) at org.flexunit.token::AsyncListenersToken/sendReady(AsyncListenersToken.as:96) at org.flexunit.runner.notification.async::AsyncListenerWatcher/sendReadyNotification(AsyncListenerWatcher.as:148) at org.flexunit.runner.notification.async::AsyncListenerWatcher/handleListenerReady(AsyncListenerWatcher.as:163) at flash.events::EventDispatcher/dispatchEventFunction at flash.events::EventDispatcher/dispatchEvent at flexunit.flexui::FlexUnit4TestRunner/handleConnect(FlexUnit4TestRunner.as:315) at flash.events::EventDispatcher/dispatchEventFunction at flash.events::EventDispatcher/dispatchEvent at flash.net::XMLSocket/reflectEvent
FB stack 2:
TypeError: Error #1009: Cannot access a property or method of a null object reference. at org.flexunit.runners::BlockFlexUnit4ClassRunner/withPotentialAsync(BlockFlexUnit4ClassRunner.as:336) at org.flexunit.runners::BlockFlexUnit4ClassRunner/withDecoration(BlockFlexUnit4ClassRunner.as:345) at org.flexunit.runners::BlockFlexUnit4ClassRunner/methodBlock(BlockFlexUnit4ClassRunner.as:297) at org.flexunit.runners::BlockFlexUnit4ClassRunner/runChild(BlockFlexUnit4ClassRunner.as:129) at org.flexunit.internals.runners::ChildRunnerSequencer/executeStep(ChildRunnerSequencer.as:82) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.token::AsyncTestToken/sendResult(AsyncTestToken.as:118) at org.flexunit.runners::BlockFlexUnit4ClassRunner/runChild(BlockFlexUnit4ClassRunner.as:141) at org.flexunit.internals.runners::ChildRunnerSequencer/executeStep(ChildRunnerSequencer.as:82) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.internals.runners.statements::StatementSequencer/evaluate(StatementSequencer.as:108) at org.flexunit.internals.runners.statements::StatementSequencer/executeStep(StatementSequencer.as:97) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.token::AsyncTestToken/sendResult(AsyncTestToken.as:118) at org.flexunit.internals.runners.statements::AsyncStatementBase/sendComplete(AsyncStatementBase.as:76) at org.flexunit.internals.runners.statements::StatementSequencer/sendComplete(StatementSequencer.as:165) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:138) at org.flexunit.internals.runners.statements::StatementSequencer/evaluate(StatementSequencer.as:108) at org.flexunit.internals.runners.statements::StatementSequencer/executeStep(StatementSequencer.as:97) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.internals.runners.statements::StatementSequencer/evaluate(StatementSequencer.as:108) at org.flexunit.runners::ParentRunner/run(ParentRunner.as:416) at org.flexunit.runners::Suite/runChild(Suite.as:93) at org.flexunit.internals.runners::ChildRunnerSequencer/executeStep(ChildRunnerSequencer.as:82) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.internals.runners.statements::StatementSequencer/evaluate(StatementSequencer.as:108) at org.flexunit.internals.runners.statements::StatementSequencer/executeStep(StatementSequencer.as:97) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.token::AsyncTestToken/sendResult(AsyncTestToken.as:118) at org.flexunit.internals.runners.statements::AsyncStatementBase/sendComplete(AsyncStatementBase.as:76) at org.flexunit.internals.runners.statements::StatementSequencer/sendComplete(StatementSequencer.as:165) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:138) at org.flexunit.internals.runners.statements::StatementSequencer/evaluate(StatementSequencer.as:108) at org.flexunit.internals.runners.statements::StatementSequencer/executeStep(StatementSequencer.as:97) at org.flexunit.internals.runners.statements::StatementSequencer/handleChildExecuteComplete(StatementSequencer.as:134) at org.flexunit.internals.runners.statements::StatementSequencer/evaluate(StatementSequencer.as:108) at org.flexunit.runners::ParentRunner/run(ParentRunner.as:416) at org.flexunit.runner::FlexUnitCore/beginRunnerExecution(FlexUnitCore.as:245) at org.flexunit.token::AsyncListenersToken/sendReady(AsyncListenersToken.as:96) at org.flexunit.runner.notification.async::AsyncListenerWatcher/sendReadyNotification(AsyncListenerWatcher.as:148) at org.flexunit.runner.notification.async::AsyncListenerWatcher/handleListenerReady(AsyncListenerWatcher.as:163) at flash.events::EventDispatcher/dispatchEventFunction at flash.events::EventDispatcher/dispatchEvent at flexunit.flexui::FlexUnit4TestRunner/handleConnect(FlexUnit4TestRunner.as:315) at flash.events::EventDispatcher/dispatchEventFunction at flash.events::EventDispatcher/dispatchEvent at flash.net::XMLSocket/reflectEvent
All tests fail, the first with stack 1, all others with stack 2.
Projects that include this library also fail with the same error.
We have other projects that don't fail in this way. (suggesting something odd about this one -- our 'key' library! )
The failing project links with our other projects and builds an executable that works fine. (suggesting something testing-specific)
The same project fails in the same way on multiple users machines (some of which have different OSes, different SDK configurations, etc).
We first observed the problem roughly 1-2 weeks ago. It fails all the time now.
We probably hadn't run the tests on this project for a while since we hadn't had any changes. When last run, it worked fine.
Roughly 2 weeks back, we switched from a previous AIR2 build to a later one. (by duplicating and overlaying the FB4-supplied SDK.)
We may have had other changes (e.g. switch from beta1 FB to final and may have also updated our Parsley libraries to 2.2.0.)
Tried switching back to previous AIR2 build SDK, same problem.
Tried creating another library project linked with the same Parsley libraries, no problem.
Haven't moved to FB4.1, nor final AIR2. Could try these.
Haven't yet tried creating a not-using-FlashBuilder test runner. Might do this first.
All thoughts / redirections / questions welcome!
Rupert.