<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[Últimas mensagens do tópico "Começando com JMock"]]></title>
		<link>http://www.guj.com.br/posts/list/19.java</link>
		<description><![CDATA[Últimas mensagens enviadas no tópico "Começando com JMock"]]></description>
		<generator>JForum - http://www.jforum.net</generator>
			<item>
				<title>Começando com JMock</title>
				<description><![CDATA[ oi,<br /> <br /> Estou usando JUnit4 + JMock, criei meu primeiro teste case parecido com isso<br /> <br /> [code]<br /> @Test<br /> public void testMetodoDAO() throws MinhaException {<br />   meuDao = context.mock(MeuDAO.class);<br />   Map&lt;String, String&gt; fakeList = new HashMap&lt;String, String&gt;();<br />   fakeList.put("1","UM");<br />   fakeList.put("2","DOIS");<br />   fakeList.put("3","TRES");<br /> <br /> }[/code]<br /> <br /> como eu faço para testar fakeList com o retorno do metodo dao.getLista(parametro)?<br /> <br /> vi que tem uma forma de fazer isso usando [url=http://www.guj.com.br/posts/list/62664.java]assertThat[/url] mas não estou sabendo como usar<br /> <br /> alguém pode me dar umas dicas??<br /> <br /> Tks<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/992543/comecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/992543/comecando-com-jmock
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 11:15:43]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ oi,<br /> <br /> será que alguém pode me ajudar com este teste??]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/992832/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/992832/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 16:45:00]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ não conheço o JMock, mas se vc usar o mockito ficaria mais ou menos assim<br /> <br /> [code]<br /> MeuDao meuDao = mock(MeuDao.class);<br /> when(meuDao.getLista(any(Object.class))).thenReturn(fakeList);<br /> [/code]<br /> <br /> Quando vc usa um mock vc tem que simular o processamento desse metodo, tudo se torna ficticio, acredito que se vc quer testar o retorno de um DAO, não seja a maneira correta de fazer isso, até por que uma busca no BD dificilmente terá o mesmo efeito.<br /> <br /> vc pode fornecer mais informações sobre seu teste?]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/992840/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/992840/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 16:52:42]]> GMT</pubDate>
				<author><![CDATA[ Felagund]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ oi,<br /> <br /> eu tenho um método de um dao que retorna um HashMap, eu quero testar o retorno dele, não sei se preciso criar uma lista fake e pegar o retorno da chamada do DAO e comparar... talvez eu precise apenas testar o número de registros esperados e não o retorno ??<br /> <br /> achei o exemplo abaixo<br /> <br /> [code]context.checking(new Expectations() {{<br />     exactly(2).of(mockObject).iterator();<br />         will(returnIterator(strings));<br /> }}<br /> [/code]<br /> <br /> http://i-proving.ca/space/Mike+Wilkes/blog/2009-06-24_1?showComments=true]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/992862/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/992862/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 17:13:49]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ cara depende muito, esse seu map terá sempre o mesmo retorno para uma entra x?<br /> <br /> uma classe pode ser testada (me corrigam se estiver errado) somente se o metodo Y com uma entrada X retorne Z e Z seja o que eu espero<br /> <br /> no caso tempos <br /> <br /> [code]<br /> public Z Y(X);<br /> [/code]<br /> <br /> digamos que Z seja o sobrenome, e X o nome, nossa função Y retorna o sobrenome de uma pessoa nesse caso para o meu nome "Rafael Felix" teria que retornar Felix passando rafael<br /> <br /> [code]<br /> Nome nome = new Nome("Rafael Felix");<br /> assertEquals("Felix", nome.getSobrenome("Rafael"));<br /> [/code]<br /> <br /> ou <br /> <br /> [code]<br /> Nome nome = new Nome("Rafael Felix");<br /> assertEquals("Felix", nome.getSobrenome());<br /> [/code]<br /> <br /> <br /> Essa é a essencia de um teste, vc tem que ter uma entrada definida e um retorno esperado para tal, se seu map vai retornar sempre com 3 elementos por exemplo ele pode ser testado, mas somente seu tamanho não seu conteudo, o que ao meu ver é um teste bem fraco.<br /> ]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/992870/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/992870/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 17:22:28]]> GMT</pubDate>
				<author><![CDATA[ Felagund]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ oi,<br /> <br /> o método do DAO retorna um HashMap que pode ser variável dependendo do parâmetro que no caso é apenas um Float<br /> <br /> usando Junit eu sempre usei a sintaxe testando se a lista tem o mesmo tamanho e também comparando o conteúdo, algo como <br /> <br /> [code]assertTrue(lista.size()==lista2.size && lista.contains(lista2);[/code]<br /> <br /> na verdade a minha dúvida é com relação à sintaxe do Jmock<br /> <br /> também tenho dúvidas se seria necessário fazer o teste da forma como falei acima<br /> <br /> abs]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/992880/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/992880/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 17:38:29]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ oi,<br /> <br /> agora eu consegui fazer o seguinte<br /> <br /> [code]<br /> import static org.hamcrest.MatcherAssert.assertThat;<br /> import static org.hamcrest.Matchers.is;<br /> [/code]<br /> <br /> <br /> [code]<br /> Map&lt;String, String&gt; daoList = mockDAO.buscaList(valor);<br /> assertThat(daoList.size(), is(4));<br /> [/code]<br /> <br /> mas estou tendo uma exception<br /> <br /> <br /> [code]unexpected invocation: mockDAO.buscaList(&lt;2.0F&gt;)<br /> no expectations specified: did you...<br />  - forget to start an expectation with a cardinality clause?<br />  - call a mocked method to specify the parameter of an expectation?<br /> what happened before this: nothing!<br /> 	at org.jmock.internal.InvocationDispatcher.dispatch(InvocationDispatcher.java:56)<br /> [/code]<br /> <br /> Fiz a declaração dos objetos em <br /> <br /> [code]public void setUp() throws Exception {<br />   context = new Mockery() {{<br />     setImposteriser(ClassImposteriser.INSTANCE);<br />   }};<br />   mockDAO=context.mock(ClasseDAO.class);<br /> }[/code]<br /> <br /> estou usando JUnit4 e JMock 2.5.1<br /> <br /> abs]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/992913/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/992913/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 19:10:43]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ oi,<br /> <br /> importei o jar que faz a integração entre o JMock e o JUnit jmock-junit4-2.5.1.jar para o classpath do projeto<br /> <br /> tb anotei a classe com @RunWith(JMock.class)<br /> <br /> o erro está acontecendo já qdo eu tento retornar a lista do mockDAO<br /> <br /> alguém pode me dar uma ajuda, esse erro é bem genérico e não ajuda muita coisa.<br /> <br /> abs]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/992923/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/992923/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Tue, 9 Feb 2010 19:44:06]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ André, vc não deve criar um Mock da classe sendo testada, os mocks são para outras classes auxiliares.<br /> Por exemplo se o objeto meuDao retorna um objeto do tipo MeuObjeto e vc quer comparar o campo nome de MeuObjeto retornado.<br /> ai vc faz um Mock de MeuObjeto com o getNome retornando o esperado.<br /> <br /> meuDao vai manter seu processamento normal.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/993034/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/993034/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Wed, 10 Feb 2010 07:58:13]]> GMT</pubDate>
				<author><![CDATA[ Felagund]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ [quote=Felagund]André, vc não deve criar um Mock da classe sendo testada, os mocks são para outras classes auxiliares.<br /> Por exemplo se o objeto meuDao retorna um objeto do tipo MeuObjeto e vc quer comparar o campo nome de MeuObjeto retornado.<br /> ai vc faz um Mock de MeuObjeto com o getNome retornando o esperado.<br /> <br /> meuDao vai manter seu processamento normal.[/quote]<br /> <br /> oi,<br /> <br /> desculpe, não entendi direito<br /> quer dizer que eu tenho que [b]mockar[/b] a classe DAO e tb o retorno da chamada do método? <br /> <br /> tks]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/993068/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/993068/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Wed, 10 Feb 2010 08:50:49]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ [quote=André Fonseca][quote=Felagund]André, vc não deve criar um Mock da classe sendo testada, os mocks são para outras classes auxiliares.<br /> Por exemplo se o objeto meuDao retorna um objeto do tipo MeuObjeto e vc quer comparar o campo nome de MeuObjeto retornado.<br /> ai vc faz um Mock de MeuObjeto com o getNome retornando o esperado.<br /> <br /> meuDao vai manter seu processamento normal.[/quote]<br /> <br /> oi,<br /> <br /> desculpe, não entendi direito<br /> quer dizer que eu tenho que [b]mockar[/b] a classe DAO e tb o retorno da chamada do método? <br /> <br /> tks[/quote]<br /> <br /> Seguinte André, vc tem que mockar somente outros objetos, me parece que vc quer testar o retorno do meuDao.<br /> Se é o retorno do metodo X de meuDao que vc quer testar, vc não pode fazer o mock de meuDao, a instancia de meuDao deve ser verdadeira, somente desse modo vc consegue testar.<br /> <br /> Quando vc cria um mock, vc tem que dizer o retorno de cada metodo para conseguir testar.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/993130/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/993130/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Wed, 10 Feb 2010 10:07:31]]> GMT</pubDate>
				<author><![CDATA[ Felagund]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ [quote=Felagund]<br /> <br /> Se é o retorno do metodo X de meuDao que vc quer testar, vc não pode fazer o mock de meuDao, a instancia de meuDao deve ser verdadeira, somente desse modo vc consegue testar.<br /> [/quote]<br /> <br /> Sim, se voce quer testar o meuDAO nao faz sentido fazer um mock dele, pois voce estaria testando o mock e nao ele.<br /> <br /> Supomos que voce tenha uma classe ServiceVenda no metodo processarVenda(), dentro desse metodo voce vai verificar se o cliente tem saldo disponivel para a compra. Para isso voce vai ter que ir ate o banco de dados e buscar as informacoes da conta do cliente, utilizando um clienteDAO, ou qqr coisa assim, é esse clienteDAO que o ServiceVenda vai utilizar que voce vai ter que mockar.<br /> <br /> [code]<br /> <br />     Mockery context = new Mockery();<br /> <br />     final ClienteDAO clienteDao = context.mock(ClienteDAO.class)<br /> <br />     ServiceVenda serviceVenda = new ServiceVenda(dao);<br /> <br />     final Cliente clienteComSaldoInsuficiente = _fakeUmClienteComSaldoInsuficiente();<br /> <br />    context.checking(new Expectations() {{<br />         oneOf (clienteDao).buscarCliente(umCodigo);<br />         will(returnValue(clienteComSaldoInsuficiente);<br />    }});<br /> <br />    //aqui voce vai testar<br />     serviceVenda.processarVenda();<br /> <br /> }<br /> <br /> <br /> [/code]<br /> <br /> Nesse caso voce diz que ao executar o metodo processarVenda(), o metodo buscarCliente do clienteDAO sera invocado uma vez (oneOf) e vai retornar will(returnValue) o objeto clienteComSaldoInsuficiente, depois dentro do metodo processarVenda voce pode usar o clienteComSaldoInsuficiente para testar o resto do metodo.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/994131/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/994131/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Thu, 11 Feb 2010 13:09:54]]> GMT</pubDate>
				<author><![CDATA[ YvGa]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ hmm, acho que entendi..<br /> <br /> como eu não conheço muito de mocks - ainda preciso ler aquele artigo do Fowler  <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> - eu achei que a utilidade dos objetos mocados era resolver [i]qualquer[/i] tipo de dependência externa<br /> <br /> pelo exemplo que você colocou fica claro que a finalidade do TestCase é testar o método de negócio e não o DAO, ou seja, se eu tiver uma estrutura de objetos parecida com esta abaixo<br /> <br /> [list]TestCase[/list]<br /> [list]Business - objeto real sendo testado[/list]<br /> [list]Facade - mockar[/list]<br /> [list]DAO - mockar[/list]<br /> <br /> eu só irei mockar aquilo que foge do objetivo do teste, correto isso??<br /> <br /> vlw pela ajuda <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/995462/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/995462/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Fri, 12 Feb 2010 22:45:33]]> GMT</pubDate>
				<author><![CDATA[ André Fonseca]]></author>
			</item>
			<item>
				<title>Re:Começando com JMock</title>
				<description><![CDATA[ [quote=André Fonseca]hmm, acho que entendi..<br /> <br /> como eu não conheço muito de mocks - ainda preciso ler aquele artigo do Fowler  <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0"> - eu achei que a utilidade dos objetos mocados era resolver [i]qualquer[/i] tipo de dependência externa<br /> <br /> pelo exemplo que você colocou fica claro que a finalidade do TestCase é testar o método de negócio e não o DAO, ou seja, se eu tiver uma estrutura de objetos parecida com esta abaixo<br /> <br /> [list]TestCase[/list]<br /> [list]Business - objeto real sendo testado[/list]<br /> [list]Facade - mockar[/list]<br /> [list]DAO - mockar[/list]<br /> <br /> eu só irei mockar aquilo que foge do objetivo do teste, correto isso??<br /> <br /> vlw pela ajuda <img src="http://www.guj.com.br/images/smilies/3b63d1616c5dfcf29f8a7a031aaa7cad.gif" border="0">[/quote]<br /> <br /> Isso mesmo. Voce aumentaria muito o custo dos testes se tivesse que acessar o banco de dados toda vez que fosse testar seu metodo, e aumentaria sem necessidade porque o que voce esta testando não é o acesso ao banco. Nesses casos voce usa o mock.]]></description>
				<guid isPermaLink="true">http://www.guj.com.br/prepost/197763/995754/recomecando-com-jmock
</guid>
				<link>http://www.guj.com.br/prepost/197763/995754/recomecando-com-jmock
</link>
				<pubDate><![CDATA[Sat, 13 Feb 2010 22:21:07]]> GMT</pubDate>
				<author><![CDATA[ YvGa]]></author>
			</item>
	</channel>
</rss>
