2011-02-05 41 views
16

ben üzerinde çalışmak Flaş projeleri için benim ActionScript 3 kodu için birim testleri yazarak kodumu geliştirmeye çalışıyorum ama bağlamda onunla nasıl başa anlamak zihinsel bir engel yaşıyorum için Flash programının Flash uygulamaları (addEventListeners öğelerin yüklenmesi için beklerken, vb.) Tipik olarak tüm zaman uyumsuz işlemlerin yanı sıra addChild ve sahne gibi şeylerle nasıl başa çıkılacağı konusunda kafamı sarmış görünmüyorum. Gerçekten başka bir dilden farklı mıdır? Bir geliştirici bir Flash programının benzersiz ortamıyla nasıl ilgileniyor?Birim Test AS3 Kod Flaş

Birkaç açıklamalar:

  • Bu Flex ile ilgisi yoktur, hiçbir Flex hiç ilgilenmektedir.
  • Programlar yalnızca AS3 kod dosyalarını ve bir FLA içeren varlıkları içerir.

cevap

10

Harika bir soru. Bir projenin hangi bölümlerini test etmeyi seçmek bir meydan okumadır - tek bir sınıf veya sınıf koleksiyonu veya her ikisi de. garip şeyler bol gerçekleşebilir nerede

kullanıcı arabirimi test etrafında testi birçok mantık ve olay hatalarını yakalayabilir rağmen

UI yaygın olduğunu. Bir Flash projesindeki birçok hata, beklenmedik kullanıcı etkileşimi modlarından kaynaklanabilir - temel olarak bir beta test cihazı, UI'de yaptığınız hiçbir şeyi yapamayacağınız bir şey yapar. Projeniz kullanıcı etkileşimi, testlerin iyi dizi dizisi planlama, DEA odaklı aksine odaklı özellikle oyun tarafından tahrik edilirse

testlerin kendileri kadar önemlidir. Örneğin, A eylemini deneyebilirsiniz, sonra B eylemini B'nin B'ye bağlı olduğunu bilerek yazabilirsiniz, çünkü bunu böyle yazdınız. Bir test cihazı A'dan önce B'yi deneyebilir, beklenmedik bir senaryo olabilir ve A ve B'nin bağımsız olarak tek tek olarak test edilmesi durumunda yakalanmayacak bir senaryo. Ayrıca, 3 veya 4 test yazmak isteyeceğiniz anlamına da gelebilir: A, B, A-> B ve B-> A, bu yüzden eyaletlerin sayısı elden çıkabilir.

Göz önüne alınması gereken bir şey, birçok görevi otomatik hale getirmek için Flexunit gibi bir test altyapısıdır.

Düzenleme: FlexUnit'in de saf AS3 için de çalıştığını belirtmeliyim.

+1

+1. Bir kullanıcı arayüzünde mümkün olan her şeyi kapsayan testlerle gelmek her zaman çok zor. Modeller için test yazma (verileri sunucuya getirme/gönderme veya arka planda puan hesaplama) çok daha kolaydır. Flexunit, dik bir öğrenme eğrisine sahiptir. Kesinlikle hamstrest-as3, flex-it bir eklenti içine bakmak önermek istiyorum, it-bölüm, imo biraz daha mantıklı. – epologee

+1

UI'yi bir Flash uygulamasındaki mantıktan ayırmak için iyi bir öneriniz var mı? Bunu yapmak zor buluyorum çünkü Flash görsel sunumlara çok iyi bağlı. – gunit888

6

ben ön uç ekran mal yüzünden uygulama mantığını soyutlama gibi. Ön uç/görüntü öğelerini test etmek için çok yararlı olduğuna inanmıyorum, ancak sistemin iç mantığını ve işlevselliğini test edebilirsiniz. MVC tasarım deseni.

Örneğin: düşman saldırabilir bir oyuncu olduğunu Flash oyun olduğunu varsayalım. Player sınıfına, Monster sınıfına ve Player.attack(monster:Monster) yöntemine sahip olabilirsiniz.

Ünite testleriniz, değerleri Player ve Monster'da ayarlayacak ve attack() numaralı telefonu arayacak ve sonuçların doğru olduğundan emin olacaksınız.

Sizin ön uç ekran, sahne, tıklanabilir nesneler, vb ve UI da canlı bir ortamda uygun bu nesnelere çağrıları yapacak.

ünite testleri modeli nesneleri (Player, Monster, ve başka ne olabilir) ithal testleri yürüten ayrı bir .swf dosyası çalıştırmak, ama tamamen tüm görsel/ekran öğelerini görmezden. Kullanıcı etkileşimini içeren her şeyi test etmekten kaçınırım.

+0

Büyük sorunum, kullanıcı arayüzü ve mantığı bir araya getirme eğiliminde olduğumu tahmin ediyorum.Örneğin, sık sık bir sınıf için tüm kodu (görsel animasyon yanı sıra durum ve mantık) kütüphane varlık ihracat aynı sınıfta koydum. Flash örnekleri ile MVC kullanmak için herhangi bir kaynak var mı? Mükemmel bir cevap için – gunit888