<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-1481755160576909631.post7560480199943808339..comments</id><updated>2009-05-16T20:23:05.090+02:00</updated><title type='text'>Comments on Blog de Julio César Pérez Arques: Hacer accesible un método Java en tiempo de ejecuc...</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://jcesarperez.blogspot.com/feeds/7560480199943808339/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default'/><link rel='alternate' type='text/html' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html'/><author><name>jcesarperez</name><uri>http://www.blogger.com/profile/09407010927256988320</uri><email>julio.cesar.perez.arques@gmail.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>6</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1481755160576909631.post-6718211987976058037</id><published>2009-05-16T20:23:00.000+02:00</published><updated>2009-05-16T20:23:00.000+02:00</updated><title type='text'>Hola Alfredo. Me alegra mucho verte por aquí. No s...</title><content type='html'>Hola Alfredo. Me alegra mucho verte por aquí. No se porqué pensaba que eras tú...&lt;br /&gt;&lt;br /&gt;Estoy contigo en, por lo general, hacer tests de la parte pública de las clases. Yo iría un poco más allá y diría que los tests deben hacerse principalmente en las clases Service. Así obtienes mayor cobertura y sobretodo no repites tests que luego son costosos de mantener. Como los tests de las clases dao que luego se repiten en las clases service.&lt;br /&gt;&lt;br /&gt;Lo del protected es bastante radical sí. ¿Tus métodos que convierten los objetos de dominio a dtos y viceversa también son públicos? ¿O lo que haces es que esas clases menos importantes no sean públicas?&lt;br /&gt;&lt;br /&gt;Por mi parte, coincido también contigo en preferir la composición como mecanismo de reutilización de código frente a la herencia. Pero de ahí a prohibirla... Es cierto que suele abusarse de ella, pero hay ocasiones donde encaja de forma natural. ¿Tampoco usas clases abstractas?&lt;br /&gt;&lt;br /&gt;Un saludo.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/6718211987976058037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/6718211987976058037'/><link rel='alternate' type='text/html' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html?showComment=1242498180000#c6718211987976058037' title=''/><author><name>jcesarperez</name><uri>http://www.blogger.com/profile/09407010927256988320</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16756503594911681073'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html' ref='tag:blogger.com,1999:blog-1481755160576909631.post-7560480199943808339' source='http://www.blogger.com/feeds/1481755160576909631/posts/default/7560480199943808339' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-1481755160576909631.post-6875577749754421374</id><published>2009-05-15T21:33:00.000+02:00</published><updated>2009-05-15T21:33:00.000+02:00</updated><title type='text'>Es buena practica que las clases de test estén en ...</title><content type='html'>Es buena practica que las clases de test estén en el mismo paquete y distinta carpeta fisica. Pero en mi opinión no para poder hacer pruebas directas sobre metodos protected sino para poder llamar a constructores (o setters aunque esto tampoco me gusta demasiado) donde puedas establecer objetos mock para las interfaces de las que dependa tu clase. Aunque esto usando inyección de dependencias en realidad también se puede resolver, y los test en el mismo paquete terminan siendo simplemente una buena practica porque mantiene el proyecto organizado.&lt;br /&gt;&lt;br /&gt;En mi opinión los test nunca se deben hacer sobre nada que no sea public, de esta forma los test son independientes de la organización interna de la clase y puedes cambiar esta sin tener que modificar los test.&lt;br /&gt;&lt;br /&gt;Y otra que a muchos les sonara radical: Nunca usar el modificar protected, esto en realidad deriva de otras dos practicas:&lt;br /&gt;- nunca usar herencia de clases (de interfaces si por supuesto) y siempre preferir composición como mecanismo de reutilización.&lt;br /&gt;- siempre depender de interfaces y nunca de implementaciones concretas, es decir, ninguna clase depende de nada que no sea un interfaz.&lt;br /&gt;&lt;br /&gt;Con estas dos normas carece de sentido el uso de protected excepto quiza para algún constructor donde se inyecten dependencias a mano para los test.&lt;br /&gt;&lt;br /&gt;Llevamos más de un año siendo así de radicales, y estamos muy contentos con el resultado, menor acoplamiento, mayor cohesión , clases con responsabilidades mucho mejor definidas y menos complejas y test que se entienden!! (esto nos mataba antes, test que eran tan complejos que al final eran una pesadilla de mantener).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/6875577749754421374'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/6875577749754421374'/><link rel='alternate' type='text/html' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html?showComment=1242415980000#c6875577749754421374' title=''/><author><name>alfredo.casado</name><uri>http://www.blogger.com/profile/13846968782016630321</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html' ref='tag:blogger.com,1999:blog-1481755160576909631.post-7560480199943808339' source='http://www.blogger.com/feeds/1481755160576909631/posts/default/7560480199943808339' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-1481755160576909631.post-6354508031374584922</id><published>2009-05-14T22:14:00.000+02:00</published><updated>2009-05-14T22:14:00.000+02:00</updated><title type='text'>Sí, probar metodos privados puede (suele) ser un s...</title><content type='html'>Sí, probar metodos privados puede (suele) ser un síntoma de mal diseño. Ya lo decía al principio...&lt;br /&gt;Pero a veces no queda otra, como cuando te toca código legacy o simplemente no puedes modificar el código fuente.&lt;br /&gt;&lt;br /&gt;Lo de los métodos protected sí que no lo comparto. Las clases de tests deben estar en el mismo package que la clase que prueban (pero en diferentes carpetas físicas). De ese modo, la clase de tests tiene visibilidad sobre todos los métodos que no sean private.&lt;br /&gt;&lt;br /&gt;Podéis ver más sobre buenas prácticas de tests aquí: http://jcesarperez.blogspot.com/2009/04/buenas-practicas-para-programar-tests.html</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/6354508031374584922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/6354508031374584922'/><link rel='alternate' type='text/html' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html?showComment=1242332040000#c6354508031374584922' title=''/><author><name>jcesarperez</name><uri>http://www.blogger.com/profile/09407010927256988320</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16756503594911681073'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html' ref='tag:blogger.com,1999:blog-1481755160576909631.post-7560480199943808339' source='http://www.blogger.com/feeds/1481755160576909631/posts/default/7560480199943808339' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-1481755160576909631.post-4293197014414977626</id><published>2009-05-14T21:28:00.000+02:00</published><updated>2009-05-14T21:28:00.000+02:00</updated><title type='text'>No hagais test sobre metodos privados hombre po di...</title><content type='html'>No hagais test sobre metodos privados hombre po dios!!&lt;br /&gt;&lt;br /&gt;Precisamente una de las ventajas de los test unitarios es que ayudan a guiar un buen diseño. Solo se deben probar los metodos públicos, y si probar un metodo publico es muy complejo porque tiene N metodos privados a los que llama entonces es que el código es demasiado complejo y hay que refactorizar en clases más pequeñas y con responsabilidades más concretas.&lt;br /&gt;&lt;br /&gt;En mi opinión, y se que algunos les sonara radical, es preferible evitar los metodos privados o protected.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/4293197014414977626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/4293197014414977626'/><link rel='alternate' type='text/html' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html?showComment=1242329280000#c4293197014414977626' title=''/><author><name>alfredo</name><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html' ref='tag:blogger.com,1999:blog-1481755160576909631.post-7560480199943808339' source='http://www.blogger.com/feeds/1481755160576909631/posts/default/7560480199943808339' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-1481755160576909631.post-1829577023472444083</id><published>2009-05-14T09:32:00.000+02:00</published><updated>2009-05-14T09:32:00.000+02:00</updated><title type='text'>Yo lo utilizo en un proyecto interno para sacar un...</title><content type='html'>Yo lo utilizo en un proyecto interno para sacar un botón por programa y que me ponga el nombre y el tooltip de las propiedades del mismo</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/1829577023472444083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/1829577023472444083'/><link rel='alternate' type='text/html' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html?showComment=1242286320000#c1829577023472444083' title=''/><author><name>Lek</name><uri>http://www.blogger.com/profile/10915147172432652103</uri><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html' ref='tag:blogger.com,1999:blog-1481755160576909631.post-7560480199943808339' source='http://www.blogger.com/feeds/1481755160576909631/posts/default/7560480199943808339' type='text/html'/></entry><entry><id>tag:blogger.com,1999:blog-1481755160576909631.post-6795685640910516092</id><published>2009-05-13T23:28:00.000+02:00</published><updated>2009-05-13T23:28:00.000+02:00</updated><title type='text'>Gracias por el truco, me parece especialmente útil...</title><content type='html'>Gracias por el truco, me parece especialmente útil para hacer tests unitarios directamente sobre métodos privados.&lt;br /&gt;&lt;br /&gt;Saludos</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/6795685640910516092'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1481755160576909631/7560480199943808339/comments/default/6795685640910516092'/><link rel='alternate' type='text/html' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html?showComment=1242250080000#c6795685640910516092' title=''/><author><name>jaro</name><email>noreply@blogger.com</email></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://jcesarperez.blogspot.com/2009/05/hacer-accesible-un-metodo-java-en.html' ref='tag:blogger.com,1999:blog-1481755160576909631.post-7560480199943808339' source='http://www.blogger.com/feeds/1481755160576909631/posts/default/7560480199943808339' type='text/html'/></entry></feed>