2011-07-28 143 views
4

我們在Flex 4.1中編寫的大型多模塊產品運行在基於Java的中間層之上。Flash Builder 4.5和FlexUnit 4.1

從Java背景的,我想在我們的Flex環境中編寫和運行單元測試的支持。

我已經用FlexUnit的4.1版本更新了Flash Builder 4.5,並且我可以在應用程序項目上成功編寫和執行單元測試,但是我還沒有弄清楚如何在單元測試中處理模塊或庫項目Flash Builder。

與庫項目

的問題,因爲我們需要編譯的應用程序(SWF)的測試中,我要麼需要建立在Flash Builder中的伴侶項目或更改庫中的鏈接類型(SWC)項目依賴關係來避免外部的,因爲外部依賴需要由其他人(通常是頂層應用程序)提供。

作爲一個實驗,我試着改變了示例庫項目上的鏈接:測試運行器SWF已成功生成,但FlexUnit未能運行它,因爲#1065錯誤報告了一些對我沒有任何意義的事情。

對於我們的無頭版本(使用搖籃),我發現這很容易解決通過生成測試運行SWF時簡單地合併所有的依賴關係,不論其原來的聯動。我還可以使用外部工具支持從Eclipse內部輕鬆地運行此操作,因爲結果是在常規JUnit視圖中顯示的JUnit兼容XML結果。

你是怎麼做到的?

如何其他Flex開發人員構建他們的單元測試多模塊,多庫項目中?你是否在Flash Builder 4.5中運行測試?你可以獨立運行任何庫或模塊項目的測試嗎?

+0

我通常使用的Flexmojos行家做我的編譯/測試。 –

+0

我們使用GradleFx,Gradle構建工具的插件。我是GradleFx的開發人員,最近又增加了FlexUnit支持。 – SteveD

回答

2

好的,這是我第二次回答我自己的問題(最後一個也是圍繞着Flex)。

我去添加測試,每一個項目,但我跑得從中央測試項目測試。

每個項目都應:

  • 一個測試目錄
  • <project name>Test.mxml test目錄的命名約定MLXML應用
  • 頂級測試套件聚集在項目的所有測試下在通常的包裝結構測試目錄
  • 一些單元測試;-)

Flash Builder不喜歡住在任何其他目錄比src MXML應用程序,所以這是非常重要的設置test目錄作爲另一個源目錄。

現在,從每個項目中添加test資源目錄,到整體的測試項目。您需要將所需的所有依賴關係(運行時和測試)添加到此項目中。

我發現FlexUnit在管理單元測試的跑步者方面有點奇怪。當你在Eclipse中選擇'run as - > Flex Unit Tests'(你可以選擇運行哪個測試)時,它將提供生成測試運行器MXML應用程序。從上下文菜單中選擇「執行FlexUnit測試」不會導致生成MXML。

您不應該將此MXML文件檢入到源代碼管理中,而是忽略它。原因是如果您想運行其他一組測試,則FlexUnit不會成功重新生成該文件。這意味着你需要手動刪除文件,只要你想重新生成它。

下面是我們在庫項目用於測試運行的MXML的一個例子:

<?xml version="1.0" encoding="utf-8"?> 

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
      xmlns:s="library://ns.adobe.com/flex/spark" 
      xmlns:mx="library://ns.adobe.com/flex/mx" 
      minWidth="955" minHeight="600" creationComplete="onCreationComplete()"> 

<fx:Script> 
    <![CDATA[ 
     import net.infonic.hs.AllTestsSuite; 

     import org.flexunit.listeners.CIListener; 
     import org.flexunit.runner.FlexUnitCore; 

     private var core: FlexUnitCore; 

     public function currentRunTestSuite(): Array { 
      var testsToRun:Array = new Array(); 
      testsToRun.push(AllTestsSuite); 
      return testsToRun; 
     }   

     private function onCreationComplete(): void { 
      core = new FlexUnitCore(); 
      core.addListener(new CIListener()); 
      core.run(currentRunTestSuite()); 
     }   
    ]]> 
</fx:Script> 

</s:Application> 
+0

你能更具體嗎?這很有用,但答案並不完整。謝謝 –

+1

如果您提出具體問題,這會更容易,否則我將不得不轉儲整個維基頁面的文檔,這很不方便,因爲有大量的圖形圖像,並且它是特定於我們的環境的。 – SteveD

+0

是的,我想知道你是否可以發佈一些mxml應用程序代碼,也許你的螞蟻目標。謝謝。 –

相關問題