:: Catégories

  • actionscript 3
  • Air
  • Flash
  • Flex
  • molehill
  • Non classé
  • papervision
  • Web

:: Derniers articles.

  • Nouveau Android Flash Game : Kick The Ducks !
  • Démo – Client FTP en Flex
  • Démo Molehill – particules
  • [TUTO] AS3 + APPARAT / TDSI, accélérez vos projets !
  • [FIXED] SecurityError: fileWriteResource
  • [Tutorial] Techniques d’optimisations en AS3
  • [Tutorial] Un client FTP en AS3 sous RoboLegs + SwfStudio – partie 2
  • [Tutorial] Un client FTP en AS3 sous RoboLegs + SwfStudio – partie 1

:: Tags

  • 3d actionscript3 ACTUce android as3 client code demo ducks Flash Flex flexunit framework ftp game jeux kick molehill optimisations particules robotlegs swfStudio tests unitaires the

:: Sites Exoa

  • Home
  • actionscript 3
  • Air
  • Flash
  • Flex
  • molehill
  • Non classé
  • papervision
  • Web

exoa labs

[TUTORIAL] Flex Tests unitaires, le Self-hunt et le Mock object

Aucun commentaire - mar 12th, 2010 - Flex, actionscript 3

Mise en place du framework de tests unitaires Flexunit et du composant TestRunner.

1 : Ajouter la librairie flexunit.swc

2 : Ecriture du code de base, pour utiliser le composant TestRunner :



	
		
	
	


Voyons maintenant ces techniques.
La technique du Self-hunt

C'est une technique plutôt simple ou la classe de test joue le rôle de bouchon :

// L'interface ICarnetDao
package classes
{
	public interface ICarnetDao
	{
		funciton get count():uint;
		function addContact(contact:*):void;
	}
}

// La classe Carnet
package classes
{
	import flash.events.EventDispatcher;
	import classes.events.CarnetEvent;

	public class Carnet extends EventDispatcher
	{
		private var dao:ICarnetDao;

		public function Carnet(dao:ICarnetDao) {
			this.dao = dao;
		}

		public function addContact(contact:*):void {
			dao.addContact(contact);
		}
	}
}

package tests
{
	import flexunit.framework.TestCase;
	import classes.Carnet;
	import classes.events.CarnetEvent;
	import classes.ICarnetDao;

	public class TestCarnet extends TestCase implements ICarnetDao
	{
		private var carnet:Carnet;

		private var numberOfContact:uint;

		public function get count():uint {
			return numberOfContact;
		}

		override public function setUp():void {
			carnet = new Carnet(this);
		}

		public function addContact(contact:*):void {
			numberOfContact++;
		}

		public function testAddTwoListeners():void {
			carnet.addContact({});

			assertEquals(1,count);
		}
	}
}

C'est aussi une technique qui montre vite ses limites, lorsque la classe a testé :

* demande plusieurs instances du bouchon
* détruit sa dépendance, ici le bouchon (càd la classe de test)
* et d'autres classes au besoin du même bouchon de test.

pour résoudre ses limites, l'utilisation de la technique du “Mock object” est plus adaptée.
La technique du Mock object

Le Mock object consiste à écrire une classe pour jouer le rôle du bouchon :

package tests
{
import classes.ICarnetDao;

public class MockCarnetDao implements ICarnetDao
{
private var numberOfContact:uint;

public function get count():uint {
return numberOfContact;
}

public function addContact(contact:*):void
{
numberOfContact++;
}
}
}

package tests
{
import flexunit.framework.TestCase;
import classes.Carnet;
import classes.events.CarnetEvent;
import classes.ICarnetDao;

public class TestCarnet extends TestCase
{
private var carnet:Carnet;
private var mock:ICarnetDao;

override public function setUp():void {
mock = new MockCarnetDao();
carnet = new Carnet(mock);
}

public function testAddTwoListeners():void {
carnet.addContact({});

assertEquals(1,mock.count);
}
}
}

Ces deux techniques permettent de tester plus facilement une classe mais entrainent aussi un surplus de travail. Ce travail en plus est un bénéfice plus grand lorsque l'application devient plus complexe et difficile à mettre à jour.

Par ITERATIF - BUGALOTTO Olivier (2007)


    Commenter




      WORKS

    • Travaux

      PRODUCTS

    • ZenBook
    • E-ZEN Galery
    • FlashConf
    • EXOA MP3-Player

      SERVICES

    • Application Facebook
    • Advergame
    • Site Web
    • Référencement
    • Hébergement
    • Graphisme
    • Bannières & Animations
    • Application Flash

      EXOA

    • Contact
    • A propos
    • CGV
    • Mentions Légales

    © 2012 exoa labs, SIRET :517 668 349 00015 · Tél : 06.25.59.18.68 · contact@exoa.fr