<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
><channel><title>Herberth Amaral &#187; flexunit 4</title> <atom:link href="http://herberthamaral.com/tag/flexunit-4/feed/" rel="self" type="application/rss+xml" /><link>http://herberthamaral.com</link> <description>Software development adventures</description> <lastBuildDate>Thu, 26 Aug 2010 13:59:42 +0000</lastBuildDate> <language>en</language> <sy:updatePeriod>hourly</sy:updatePeriod> <sy:updateFrequency>1</sy:updateFrequency> <generator>http://wordpress.org/?v=3.0.1</generator> <item><title>Testes unitarios no Flex usando o FlexUnit 4</title><link>http://herberthamaral.com/2010/01/testes-unitarios-no-flex-usando-o-flexunit-4/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=testes-unitarios-no-flex-usando-o-flexunit-4</link> <comments>http://herberthamaral.com/2010/01/testes-unitarios-no-flex-usando-o-flexunit-4/#comments</comments> <pubDate>Thu, 28 Jan 2010 14:12:08 +0000</pubDate> <dc:creator>Herberth Amaral</dc:creator> <category><![CDATA[Flex & Actionscript]]></category> <category><![CDATA[agile]]></category> <category><![CDATA[tdd]]></category> <category><![CDATA[flex]]></category> <category><![CDATA[flex builder]]></category> <category><![CDATA[flexunit 4]]></category> <category><![CDATA[integração contínua]]></category> <category><![CDATA[tutorial]]></category><guid isPermaLink="false">http://herberthamaral.com/?p=179</guid> <description><![CDATA[O FlexUnit 4 é a mais nova versão (não tem a oficial, só a RC, por enquanto) e apresenta uma série de vantagens sobre o seu antecessor, o FlexUnit 0.9, como os metadados de teste ([Test], [After] e [Before], para citar as mais populares), Theories, DataPoints e Assumptions que são úteis para testar grandes quantidades [...]]]></description> <content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;"> <a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F01%2Ftestes-unitarios-no-flex-usando-o-flexunit-4%2F"> <img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fherberthamaral.com%2F2010%2F01%2Ftestes-unitarios-no-flex-usando-o-flexunit-4%2F&amp;source=HerberthAmaral&amp;style=normal" height="61" width="50" /> </a></div><p>O FlexUnit 4 é a mais nova versão (não tem a oficial, só a RC, por enquanto) e apresenta uma série de vantagens sobre o seu antecessor, o FlexUnit 0.9, como os metadados de teste ([Test], [After] e [Before], para citar as mais populares), Theories, DataPoints e Assumptions que são úteis para testar grandes quantidades (talvez até infinita) de dados e ver como a aplicação se comporta e a possibilidade de executar os testes com diferentes Runners.</p><p>Este tutorial tem como objetivo mostrar o básico de testes unitários no Flex, sem se aprofundar muito nos recursos avançados do framework de testes.  Eu pretendo ir postando mais tutoriais à medida que eu for me aprofundando na tecnologia.</p><p><strong>O setup</strong></p><p>Para usar o FlexUnit4, você precisa baixa-lo <a href="http://opensource.adobe.com/wiki/display/flexunit/Downloads" target="_blank">aqui</a>. Após isso, crie um projeto no Flex Builder e adicione todas as libs que vieram no pacote no seu diretório libs:<br /> <a href="http://herberthamaral.com/wp-content/uploads/2010/01/flex_new_project.png"><img class="aligncenter size-full wp-image-180" title="flex_new_project" src="http://herberthamaral.com/wp-content/uploads/2010/01/flex_new_project.png" alt="" width="680" height="591" /></a></p><div id="attachment_182" class="wp-caption aligncenter" style="width: 275px"><a href="http://herberthamaral.com/wp-content/uploads/2010/01/flex_navigator1.png"><img class="size-full wp-image-182" title="flex_navigator" src="http://herberthamaral.com/wp-content/uploads/2010/01/flex_navigator1.png" alt="" width="265" height="308" /></a><p class="wp-caption-text">Verifique se todas as libs estão lá</p></div><p>Como o bom e velho TDD manda, vamos primeiro escrever a classe de teste de exemplo antes de escrever nosso código de produção.</p><p><strong>A classe de teste</strong></p><p>Uma classe de testes é uma classe comum que usa a classe Assert para fazer asserções. No exemplo que irei mostrar, usarei dois tipos básicos de asserção, mas se você observar, o FlexUnit possui vários tipos diferentes de asserções:</p><pre class="brush:java">package tests
{
	import org.flexunit.Assert;
	import org.flexunit.runner.manipulation.filters.IncludeAllFilter;

	import production.BasicClass;

	public class BasicTests
	{
		public function BasicTests(){}
		private var basicClass:BasicClass;

		[Before]
		public function before():void
		{
			basicClass = new BasicClass();
		}

		[Test]
		public function Verifica_Se_As_Duas_Strings_Sao_Iguais():void
		{
			var str:String = "MinhaString";
			Assert.assertTrue(basicClass.areStringsEqual(str,"MinhaString"));
		}

		[Test]
		public function Verifica_Se_A_Soma_Retorna_Resultado_Correto():void
		{
			var soma:int = 10;
			Assert.assertEquals(soma,basicClass.somar(2,8));
		}

		[After]
		public function after():void
		{
			//codigo de after
		}

	}
}</pre><p><strong>A suíte de teste</strong></p><p>A suíte de testes inclui nosso caso de teste descrito acima e será útil para o Flex executar nossos testes. Sendo assim, nossa suíte de testes ficaria mais ou menos desse jeito:</p><pre class="brush:java">package tests
{
	[Suite]
	[RunWith("org.flexunit.runners.Suite")]
	public class MyTestSuite
	{
		public var baseTest:BasicTests;
		public function MyTestSuite(){}

	}
}</pre><p><strong>UITestRunner e o FlexUnitCore</strong></p><p>O UITestRunner é um componente do FlexUnit que mostra os testes numa interface gráfica. Ele ficará na nossa aplicação e mostrará os resultados dos testes.</p><p>O FlexUnitCore será o responsável por carregar as suítes de teste e por passar os dados de saída de testes para o UITestRunner. No nosso caso, nossa aplicação principal ficaria assim:</p><pre class="brush:xml">&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="run()" layout="absolute" xmlns:flexUnitUIRunner="http://www.adobe.com/2009/flexUnitUIRunner"&gt;
    &lt;mx:Script&gt;
    &lt;![CDATA[
       import tests.MyTestSuite;
       import org.flexunit.listeners.UIListener;
       import org.flexunit.runner.FlexUnitCore;

       public var core:FlexUnitCore;
       public function run():void
       {
           core = new FlexUnitCore();
           core.addListener(new UIListener(uiRunner));
           core.run(MyTestSuite);
      }
    ]]&gt;
   &lt;/mx:Script&gt;
   &lt;flexUnitUIRunner:TestRunnerBase id="uiRunner"  width="100%" height="100%"/&gt;
&lt;/mx:Application&gt;</pre><p><strong>O código de produção</strong></p><p>Ufa! Depois de escrever a classe de teste, a suíte de teste e o runner, podemos nos focar em fazer nosso código de produção <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . Dêem uma olhada em como ficaria o dito:</p><pre class="brush:java">package production
{
	public class BasicClass
	{
		public function BasicClass(){}

		public function areStringsEqual(string1:String,string2:String):Boolean
		{
			return (string1==string2);
		}

		public function somar(valor1:int,valor2:int):int
		{
			return valor1+valor2;
		}

	}
}</pre><p><strong>E Voilà!</strong></p><p>Depois de tudo pronto, a cara da criança ficaria mais ou menos assim:</p><p><a href="http://herberthamaral.com/wp-content/uploads/2010/01/ui_runner.png"><img class="aligncenter size-medium wp-image-190" title="ui_runner" src="http://herberthamaral.com/wp-content/uploads/2010/01/ui_runner-300x177.png" alt="" width="300" height="177" /></a></p><p>Legal, não? E ainda dá pra fazer com que o FlexUnit4 exporte o resultado dos testes para um arquivo XML, permitindo que seus testes no Flex sejam importados pelo seu sistema de Integração Contínua, mas isso é assunto para outro post <img src='http://herberthamaral.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /></p><p>Você pode baixar o código fonte <a href="http://herberthamaral.com/wp-content/tutoriais/flexunit4/UsandoFlexUnit4.zip" target="_blank">aqui</a> e ver os exemplos rodando online <a href="http://herberthamaral.com/wp-content/tutoriais/flexunit4/" target="_blank">aqui</a>.</p><p>Good testing!</p><p>Sem posts relacionados.</p>]]></content:encoded> <wfw:commentRss>http://herberthamaral.com/2010/01/testes-unitarios-no-flex-usando-o-flexunit-4/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>