<?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>zezologs &#187; NUnit</title>
	<atom:link href="http://www.zezologs.org/blog/tag/nunit/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zezologs.org/blog</link>
	<description>teste de software, prevenção de erros, automação</description>
	<lastBuildDate>Tue, 16 Mar 2010 19:30:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Testes Unit&#225;rios: NUnit &amp; C#</title>
		<link>http://www.zezologs.org/blog/testes-unitrios-nunit-c/</link>
		<comments>http://www.zezologs.org/blog/testes-unitrios-nunit-c/#comments</comments>
		<pubDate>Tue, 20 May 2008 20:01:56 +0000</pubDate>
		<dc:creator>eudescosta</dc:creator>
				<category><![CDATA[Automação de Testes]]></category>
		<category><![CDATA[Testes Unitários]]></category>
		<category><![CDATA[Automação]]></category>
		<category><![CDATA[NUnit]]></category>

		<guid isPermaLink="false">http://www.zezologs.org/blog/testes-unitrios-nunit-c/</guid>
		<description><![CDATA[<p>Estou implementando testes automáticos em um novo projeto aqui no <a href="http://www.cesar.org.br" target="_blank">cesar</a>, antes de inicar de fato as atividades, estou realizando alguns PoC´s para achar a melhor forma de realizar estes testes unitários automáticos. Andei dando uma busca por alguns frameworks que suportassem o desenvolmento de testes unitários automáticos para C#, de cara achei o <a href="http://www.nunit.org/" target="_blank">NUnit</a>, ele é free e aparentemente bastante usado.</p>
<p>Irei tentar, aos poucos detalhar minha experiência nesta PoC, tanto no uso do NUnit em conjunto com o C#, quanto no uso de outras ferramentas em conjunto também com o C# para a criação de testes automáticos. Minhas dificuldades, descobertas e impressões ficarão registradas aqui.</p>
<p>Bem antes de tudo, o ambiente que estou utilizando é o seguinte: <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=94de806b-e1a1-4282-abc5-1f7347782553&amp;DisplayLang=en" target="_blank">Visual Studio 2008</a> e o <a href="http://www.nunit.org/index.php?p=download" target="_blank">NUnit</a>, após a instalação do itens acima, é so por a mão na massa.</p>
<p></p>
<p>Irei dividir em 4 partes distintas este processo inicial: Configuração, Escrita do Programa, Escrita do Teste, Execução no NUnit, irei explicar as 4 partes de uma forma mais macro, não irei entrar nos detalhes, pois não é o foco aqui, se adotasse esta abordagem esse post iria ser bem longo <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>Configuração</strong></p>
<p>Com o Visual Studio 2008 aberto, no Solutions Explorer pressione o botão direito do mouse e escolha &#8220;Add Reference&#8221;, logo após em &#8220;Browse&#8221; informe a localização da <em>nunit.framework.dll</em> do NUnit, que deverá estar no local onde você escolheu instalá-lo, como mostrado na figura abaixo, depois da a indicação, observe que no Solutions Explorer ele irá exibir as referências do NUnit, observe novamente nas imagens abaixo :</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/05/image.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/05/image-thumb.png" alt="image" width="240" height="171" /></a> <a href="http://www.zezologs.org/wp-content/uploads/2008/05/image1.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/05/image-thumb1.png" alt="image" width="240" height="171" /></a> <a href="http://www.zezologs.org/wp-content/uploads/2008/05/image2.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/05/image-thumb2.png" alt="image" width="240" height="171" /></a></p>
<p>Estes passos, finalizam a parte da configuração, após isso, o NUnit estará devidamente integrado ao Visual Studio, você pode fazer o teste tentando chamar alguns de seus métodos, e verá que o VS irá reconhecê-los e exibir-los na lista de opções (auxílo) que o VS fornece.</p>
<p><strong>Escrita do Programa</strong></p>
<p>Fiz um programa bem simples, de conversão de moedas, para exemplificar o uso do NUnit, adicione o seguinte código ao seu projeto:<br />
[sourcecode language='c#']<br />
using System;</p>
<p>namespace code<br />
{<br />
public class Codigo001<br />
{<br />
public static double p_real = 0;<br />
public static double p_cotacao = 0;<br />
public static double p_resultado = 0;<br />
public static void cotacao()<br />
{<br />
double p_real, p_cotacao, p_resultado;<br />
Console.WriteLine(&#8220;valor em real?&#8221;);<br />
p_real = Convert.ToDouble(Console.ReadLine());<br />
Console.WriteLine(&#8220;cotação do dollar?&#8221;);<br />
p_cotacao = Convert.ToDouble(Console.ReadLine());<br />
p_resultado = p_cotacao * p_real;<br />
Console.WriteLine(&#8220;Valores informados:\n\nValor em real: R${0}\nPreço da cotação do dollar: U${1}\n\nValor informado em dollar é U${2}&#8221;, p_real, p_cotacao, p_real * p_cotacao);<br />
Console.ReadLine();<br />
}</p>
<p>static void Main()<br />
{</p>
<p>cotacao();</p>
<p>}</p>
<p>}</p>
<p>}<br />
[/sourcecode]<br />
Observe que neste código, bem simples, não existe interação alguma com o NUnit, que ocorerá na próxima parte.</p>
<p><strong>Escrita do Teste</strong></p>
<p>Agora chegou o &#8220;core&#8221; dos testes, é nesta parte onde você irá escrever o código do seu teste, copie e cole o código abaixo em um codefile (.cs) diferente do código escrito acima.<br />
[sourcecode language='c#']<br />
using System;<br />
using NUnit.Framework;</p>
<p>namespace code<br />
{<br />
[TestFixture]<br />
public class Testes<br />
{<br />
[Test]<br />
public void CT001()<br />
{<br />
Codigo001.p_real = 5;<br />
Codigo001.p_cotacao = 5;<br />
Codigo001.p_resultado = Codigo001.p_real * Codigo001.p_cotacao;<br />
Assert.AreEqual(25, Codigo001.p_resultado);</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>[/sourcecode]<br />
Vejamos o que torna o código acima, interpretável ao NUnit:</p>
<p><strong>1)</strong> O pacote framework do NUnit foi incluido/incorporado a este code file, através do using <em>NUnit.Framework;</em><br />
<strong>2)</strong> [TestFixture] esta tag informa que a classe a seguir, irá conter um ou mais testes;<br />
<strong>3)</strong> [Test] esta tag informa a presença de um teste a seguir;<br />
<strong>4)</strong> Usando o <a href="http://www.nunit.org/index.php?p=equalityAsserts&amp;r=2.2.10">assertion de igualdade</a> <strong>Assert.AreEqual(25, Codigo001.p_resultado), </strong>o NUnit verificará se o resultado do teste está correto, neste caso ele irá verificar se 25 conicide com o resultado da variável <strong>Codigo001.p_resultado</strong>.</p>
<p>Compile tudo e salve.</p>
<p><strong>Execução no NUnit</strong></p>
<p>Agora vamos executar este código no NUnit, selecione a opção &#8220;Open Project&#8221; e selecione o aquivo &#8220;Testes.exe&#8221; ou o nome que você deu ao seu projeto. Observe que ao abrir o .exe o NUnit identificará todos métodos que estão com a tag [Test], no nosso caso apenas 01:</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/05/image3.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/05/image-thumb3.png" alt="image" width="240" height="171" /></a></p>
<p>Agora pressione &#8220;Run&#8221; e verá que teste irá passar.</p>
<p><a href="http://www.zezologs.org/wp-content/uploads/2008/05/image4.png" rel="lightbox"><img src="http://www.zezologs.org/wp-content/uploads/2008/05/image-thumb4.png" alt="image" width="240" height="160" /></a></p>
<p>Teste também se o teste falha, no código do teste, altere a linha:<br />
[sourcecode language='c#']<br />
if (Codigo001.p_resultado == 25)<br />
[/sourcecode]<br />
para<br />
[sourcecode language='c#']<br />
if (Codigo001.p_resultado == 15)<br />
[/sourcecode]<br />
o teste irá falhar, pois o cálculo, junto com os parâmetros infornados devem retornar 25, observe:<br />
[sourcecode language='c#']<br />
Codigo001.p_real = 5;<br />
Codigo001.p_cotacao = 5;<br />
Codigo001.p_resultado = Codigo001.p_real * Codigo001.p_cotacao;<br />
[/sourcecode]<br />
O NUnit é carente nos relatórios, pois a única forma que vi ate agora é exportar em um xml, se alguêm souber de alguma outra forma, por favor me avisem, enquanto isso irei procurando em paralelo <img src='http://www.zezologs.org/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Bem, é isso, como podem ver, a configuração e a execução dos testes são bastante simples, quanto a eficiência dos testes, isso vai depender muito do quão bom o engenheiro de testes é, em observar cenários apartir do código disponibilizado, e isso acontece aos poucos, no cenário abordado neste post, existem vários outros pontos a serem testados, mas apenas 1 foi exemplificado.</p>
<br><hr /><h2>comentários</h2><li><a href="http://www.zezologs.org/blog/testes-unitrios-nunit-c/#comment-49">segunda-feira, maio 26, 2008</a>, <span class='commentTipWrapper' lang='49'><a href='http://www.zezologs.org/blog/testes-unitrios-com-componente-do-net/' rel='external nofollow'>Testes Unit&aacute;rios com componente do .NET | ...zezologs</a></span> comentou: [...] A &#250;ltima PoC que realizei e publiquei aqui no blog foi no uso do NUnit. [...]</li><br><li><a href="http://www.zezologs.org/blog/testes-unitrios-nunit-c/#comment-52">quarta-feira, maio 28, 2008</a>, <span class='commentTipWrapper' lang='52'><a href='http://www.zezologs.org/blog/testes-unitrios-com-csunit/' rel='external nofollow'>Testes Unit&aacute;rios com csUnit | ...zezologs</a></span> comentou: [...] Devido a esta razão nao vou mostrar o código do teste novamente, pois vocês pode vê-lo aqui. [...]</li><br><li><a href="http://www.zezologs.org/blog/testes-unitrios-nunit-c/#comment-57">terça-feira, junho 3, 2008</a>, <span class='commentTipWrapper' lang='57'><a href='http://www.zezologs.org/blog/executando-testes-com-o-msbuild/' rel='external nofollow'>Executando Testes com o MSbuild | ...zezologs</a></span> comentou: [...] Proseguindo&#8230;usarei o mesmo código que venho utilizando nos exemplos passados em &#8220;Testes Unitários com csUnit&#8220;, &#8220;Testes Unitários com componente do .NET&#8221; e &#8220;Testes Unitários: NUnit &amp; C#&#8220;. [...]</li><br><li><a href="http://www.zezologs.org/blog/testes-unitrios-nunit-c/#comment-62">terça-feira, junho 10, 2008</a>, <span class='commentTipWrapper' lang='62'><a href='http://www.via6.com/topico.php?tid=188659' rel='external nofollow'>Eudes via Rec6</a></span> comentou: <strong>Testes Unitários: NUnit &amp; C# | ...zezologs...</strong>

(para os testers de plantão) Integrando o NUnit com o C# para a realização de testes unitários...</li><br><li><a href="http://www.zezologs.org/blog/testes-unitrios-nunit-c/#comment-582">terça-feira, fevereiro 2, 2010</a>, fernando comentou: Muito bom...

Irá me ajudar de mais!

;D</li><br><hr /><h2>leia mais...</h2><ul><li><a href="http://www.zezologs.org/blog/testes-unitrios-com-csunit/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios com csUnit">Testes Unit&aacute;rios com csUnit</a></li><li><a href="http://www.zezologs.org/blog/testes-unitrios-com-componente-do-net/" rel="bookmark" title="Permanent Link: Testes Unit&aacute;rios com componente do .NET">Testes Unit&aacute;rios com componente do .NET</a></li><li><a href="http://www.zezologs.org/blog/executando-testes-com-o-msbuild/" rel="bookmark" title="Permanent Link: Executando Testes com o MSBuild">Executando Testes com o MSBuild</a></li><li><a href="http://www.zezologs.org/blog/template-de-relatrio-de-testes-do-vs/" rel="bookmark" title="Permanent Link: Template de Relatório de Testes do VS">Template de Relatório de Testes do VS</a></li><li><a href="http://www.zezologs.org/blog/gerando-relatrio-dos-testes-unitrios-a-partir-do-trx/" rel="bookmark" title="Permanent Link: Gerando Relat&oacute;rio dos Testes Unit&aacute;rios a partir do .trx">Gerando Relat&oacute;rio dos Testes Unit&aacute;rios a partir do .trx</a></li></ul><br>
<div align="center"><font face="Tahoma"><font color="#999999" face="Tahoma">Copyright &copy; 
    2007-2008 zezologs.org <strong>|</strong> 
    Todos os direitos reservados <strong>|</strong>
    <font color="#637c32"><strong></strong></font></font><font face="Tahoma"><a href="http://www.zezologs.org/blog/mobile/">Acessibidade</a> 
    <font color="#637c32"><strong>|</strong></font></font> <font face="Tahoma"><a href="http://www.wordpress.com">Wordpress 
    </a> </font> ]]></description>
		<wfw:commentRss>http://www.zezologs.org/blog/testes-unitrios-nunit-c/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
