Posts

Showing posts from July, 2009

Testes Unitários na prática com Spring, TestNG, Mockito e Maven 2 : Parte 2

No post anterior eu comecei a falar de testes com Spring, TestNG, Mockito e Maven. Neste post vou continuar com o assunto. Agora direto ao código e com exemplo práticos, usarei isto para discutir mais sobre o tema.

Vamos ao código então, vou mostrar primeiro o código do domínio e depois os serviços para por fim chegar no nosso objetivo os testes.



Produto

package com.blogspost.diegopacheco.testng.spring.mockito.maven.core.domain; import java.io.Serializable; /** * Pojo que representa a entidade Produto. * O produto pode ser qualquer mercadoria que eh vendida pelo estabelecimento. * Você pode adicionar mapeamento ORM aqui com anotações por exemplo, isso foi * abstraido por conta do foco do post. * * @author Diego Pacheco * @version 1.0 * @since 28/07/2009 * */ public class Produto implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String nome; private String desc; public Produto(){ } public Produto(Long id, String nome, String desc) …

Testes Unitários na prática com Spring, TestNG, Mockito e Maven 2 : Parte 1

Image
Neste post vou mostrar como podemos criar testes unitários para aplicações desenvolvidas com Spring usando o TestNG. Além disto usarei o framework para mocks chamado Mockito com isto será possível simular o comportamento de certos objetos para realizar o testes. No final vamos rodar estes testes com o Maven.

Se quiser saber mais sobre testes, Q.A e Maven sugiro que leia meus postas anteriores:
Testes do Desenvolvedor: Indo além do DebugQ.A Muito mais que TestesIntegração Continua: O Verdadeiro Foco G.C ou Q.A?10 Motivos para Você Usar MavenMaven 2.0.8 + Archiva 1.0.1 + Tomcat 6.0.16Mais Poder ao Maven com ArchivaTestes unitários com o TestNG

O testNG é um framework para testes unitários feito em Java para Java :). A solução é bem mais flexível do que o JUnit que é a solução mais tradicional de testes unitários em Java. O testNG prove mais facilidades do que o JUnit principalmente quando realizamos testes em grupos, esta funcionalidade eh útil para testar grupos de funcionalidades ou requ…

Testes do Desenvolvedor: Indo além do Debug

Image
Testes... Esta é uma questão delicada. No fundo todos pensam que sabem a importância dos testes, na prática poucos sabem como testar, quando testar e a real importância dos testes. Neste post vou falar hábitos e conceitos de testes e bem como alguns níveis básicos de testes que um bom desenvolvedor deveria fazer.

Muitos profissionais ainda pensam que testes são tarefa dos testadores e quem sabe, dependendo da empresa tem um cara de SQA envolvido na questão. Testes muitas vezes não são realizados por desenvolvedores e arquitetos, mas em muitos casos deveriam.

Nem sempre é fácil testar, muitas vezes a complexidade de se criar e realizar testes é uma barreira para a utilização desta disciplina tão importante da engenharia. Existem algumas barreiras para o uso de testes ou o uso adequando desta prática no decorrer do post pretendo abordar este assunto também.

Não estou aqui para falar do testes funcional, que as vezes é conhecido como teste de tela, existe muita técnica e práticas para reali…

Esta pensando em Framework ? Não faça isso!

Image
É por mais incrível que pareça isto é muito comum no mercado. Mas não pense que falo só de Java, esta certo que 90% das empresas que trabalhei ate hoje, sendo de TI ou de negocio(não TI) tem frameworks feitos em casa.

Neste post vou argumentar por que é uma péssima idéia fazer frameworks em casa e como isso pode ser muito ruim para sua empresa e para sua equipe, ou algo parecido com isso. Trabalhei com frameworks de VB 6.0, ASP 3.0, PHP, Java e até JS. Por incrível que pareça já vi louco fazer framework para JS em empresa de negócios(não TI).

Um Framework?

Vamos a algumas definições segundo o site thefreedictionary:
1 - Uma estrutura para suportar ou englobar algo principalmente um suporte em forma de esqueleto para alguma coisa a ser contruida.
2 - Uma plataforma de trabalho .
3 - Uma estrutura fundamental para trabalho. 4 - Um conjunto de suposições, conceitos, valores e práticas que constituem uma maneira de ver a realidade.



Desculpem se a minha tradução não foi a ideal, mas acho que conse…

JMX e Quartz com Spring no ORACLE Weblogic 10.3

Image
JavaManagementExtensions (JMX) é uma tecnologia Java que permite monitorar e gerenciar aplicações Java. É muito comum utilizar este recurso em soluções corporativas escritas em Java. Neste post vou mostrar como expor um bean do Spring como um MBean do JMX.

Vamos criar um job no Quartz que de tempos em tempos chama um bean do Spring, com os recursos de JMX do Spring vamos parar este serviço no Quartz de fora da aplicação. Esta aplicação vai estar rodando no ORACLE Weblogic 10.3 e o deploy sera realizado através do maven 2.



Um pouco mais sobre JMX

JMX é baseado em uma arquitetura de 3 camadas. As camadas são as seguintes:
Probe Level:Nesta camada ficam os famosos MBean. Esta camada também é conhecida como camada de instrumentalização. Mais a frente vamos ver como fazer isto com Spring!
Agent Level:Nesta camada reside o MBeanServer, que fica entre os MBeans e o nível de gerenciamento. O Spring também facilidades para o MBeanServer.Remote Management Level: Por fim o nível de gerenciamento, e…

Analise de Impacto no Enterprise Architect

Image
Quando estamos falando de mudanças em um projeto de desenvolvimento de software existe uma grande necessidade de saber no que essa mudança irá impactar. Esse impacto pode ser encarados de várias formas.

Você precisa saber o impacto da mudança em termos de requisitos, design e até código. É importante ter esse conhecimento para poder dimensionar a mudança e ver a forma certa de lidar com a mesma. Todas essas questões tem impacto direto na gestão do projeto, por que dependendo da mudança vai demandar mais recursos, tempo e complexidade.

Uma ferramenta de requisitos deve tratar com essas questões. Muitas ferramentas analisam o impacto somente a nível de requisitos, de facto isso não é o suficiente por que na pratica vai demandar toda uma analise manual de um projetista ou analista.

Neste post vou mostrar como podemos fazer analise de impacto em dois níveis com a ferramenta Enterprise Architect ou famoso EA. No primeiro nível vou mostrar o impacto entre Requisitos funcionais e casos de uso …

Você desenvolve Requisitos, certo?

Os requisitos não vieram de hoje, a sua necessidade já foi confirmada a muito tempo, mas ainda é comum ver empresas que falam aos 4 ventos que trabalham com requisitos e na verdade não sabem diferenciar um requisito de uma Constraint.

Neste post vou falar mais de requisitos, dizendo o que são e o que não são requisitos, bem como qual a relação deles com as Constraints, pretendo falar um pouco mais dos tipos de requisitos e quanto tempo devemos gastar com requisitos.

O Que é um Requisito?

Um requisito tem que atender a duas premissas básicas, se você não atender a essas duas premissas, logo você não tem um requisito. Vamos então:
Condição ou capacidade necessitada pelo usuário para realizar algum objetivo ou resolver algum problema. E o mais importante Desejado.
O usuário tem que poder perceber, ou seja, Observado Externamente.Se não satisfaz esses itens acima, não é um requisito, infelizmente muitos analistas nem sabem o que é isso. Muitos viram do velho modelo em que o analista de Sistema…

Qualidade e Produtividade com MVC em PHP

Como Arquiteto de Software não posso deixar de olhar para as outras solução que estão fora do mundo Java. Desenvolver um sistema em Java pode trazer diversas vantagens mas também pode trazer complexidade e custo desnecessário.

Aplicações para empresas de pequenas e médio tamanho consideram o uso de PHP com solução para seus sistemas web, dependendo das características e dos requisitos do sistema eu considero o PHP como uma ótima solução. A evolução dos frameworks MVC em PHP foi muito boa nestes últimos anos.

O que é MVC mesmo?

É um padrão de arquitetura de software largamente utilizado em soluções para Web. Sua principal vantagem é a separação das telas(view) da camada de negócio(model). Você pode usar MVC em um sistema desktop, dependendo do sistema será uma boa escolha.

Neste post vou mostrar como pode ser fácil e rápido construir uma solução usando MVC com PHP, neste caso vou usar o framework CodeIgniter.

Por que não Java?

Por que dependendo do sistema seria só adicionar mais c…