Esse artigo que foi escrito por Abdullah Çetin ÇAVDAR em inglês, apresenta de forma simples e rápida como utilizar a nova API do JUnit. Veja também o artigo original.
Brinquei um pouco com JUnit 4 esse final final de semana, e aqui vai uma pequena introdução:
Anote seus testes com @Test. Você não precisa mais usar o prefixo test nos métodos de testes, e além disso, sua classe também não precisa mais extender TestCase.
@Test public void addition() { assertEquals(12, simpleMath.add(7, 5)); } @Test public void subtraction() { assertEquals(9, simpleMath.substract(12, 3)); }
Utilize as anottations @Before e @After para para “setup” e “tearDown” respectivamente. Eles serão executados antes e depois de cada um dos seus casos de testes.
@Before public void runBeforeEveryTest() { simpleMath = new SimpleMath(); } @After public void runAfterEveryTest() { simpleMath = null; }
Utilize as annotations @BeforeClass e @AfterClass para “setup” e “tearDown” a nível de classe. Pense neles como “setup” e “teardown” que são executados apenas uma vez. Eles são executados antes e depois dos testes.
@BeforeClass public static void runBeforeClass() { // executado uma vez antes de todos os testes serem executados } @AfterClass public static void runAfterClass() { // executado uma vez depois de todos os testes serem executados }
Utilize o parâmetro “expected” da annotation @Test para casos de uso que esperam exceptions. Escreva o nome da classe da Exception que deverá ser lançada.
@Test(expected = ArithmeticException.class) public void divisionWithException() { // divisao por zero simpleMath.divide(1, 0); }
Use a annotation @Ignore para testes que você queira ignorar. Você pode adicionar um parâmetro String que defina o motivo pelo qual você está ignorando o teste.
@Ignore("Não está pronto para ser executado") @Test public void multiplication() { assertEquals(15, simpleMath.multiply(3, 5)); }
O parâmetro “timeout” define o tempo máximo em milisegundos. O teste falha caso o período seja excedido.
@Test(timeout = 1000) public void infinity() { while (true); }
Compare arrays com os novos métodos de asserção. Dois arrays são iguais quando tem o mesmo tamanho e cada elemento é igual ao correspondente no outro array.
//public static void assertEquals(Object[] expected, Object[] actual); //public static void assertEquals(String message, Object[] expected, Object[] actual); @Test public void listEquality() { List expected = new ArrayList(); expected.add(5); List actual = new ArrayList(); actual.add(5); assertEquals(expected, actual); }
Rode os testes do JUnit 4 no JUnit 3 com o Junit4Adapter.
public static junit.framework.Test suite() { return new JUnit4TestAdapter(SimpleMathTest.class); }
Boa Codificação!
No inicio da semana fiz uma apresentação na Bluesoft baseado nos slides do Henrik Kniberg sobre “Como Arruinar com Scrum e XP”, foi extremamente proveitoso e já estamos colhendo frutos porque exergamos alguns problemas que precisamos solucionar.
Ontém, Kniberg, também autor do livro “Scrum and XP from the trenches”, que está sendo traduzido para o português fez essa apresentação no evento Agile 2008 em Toronto no Canadá.
O Guilherme Chapiewski da Globo.com está participando do evento e falou um pouco sobre a visão dele em relação a palestra.
Segundo o Gojko Adzic, Kniberg falou sobre sintomas e problemas comuns do dia-a-dia das equipes ágeis, e pediu para que platéia votasse naqueles problemas que mais os afetassem. A platéia votou através de cartões coloridos, um verde que sinalizava que o problema não era tão grave, um amarelo que sinalizava um problema que afetava um pouco, e um vermelho que sinalizava um problema grave. Isso ajudou que que fossem identificados os problemas mais comuns entre as equipes ágeis.
Os tópicos levantados foram os seguintes:
1. A Bala de Prata – Crenças Falsas (muitos cartões amarelos)
2. Definição de Pronto – DoD (mais cartões amarelos e vermelhos)
3. Velocidade (empate)
4. Retrospectiva (empate)
5. Comprometimento (mais vermelhos e amarelos)
6. Débito Técnico (mais vermelhos)
7. Trabalho em Equipe (amarelos e vermelhos)
8. Product backlog e product owner (mais vermelhos)
9. Medo de integrar código – “fazer merge” (empate)
10. Sprint backlog/quadro de tarefas (empate)
De acordo com os votos da platéia o débito técnico, o product backlog e as tarefas do product owner são os principais problemas. Os slides da apresentação estão disponíveis do site do Kniberg.
Fiquem ligados no Blog do Guilherme para maiores informações sobre as palestras realizadas no evento.
Complementando o que já falamos sobre o evento The Developers Conference (TDC) 2008 da Global Code, gostaria de expor com mais detalhes os assuntos que nos foram apresentados.
O Evento foi aberto na sexta-feira por uma apresentação do Burr Sutter (cuidado ao pronunciar) da JBoss sobre a JBoss Entrerpise SOA Plataform, Burr falou sobre Enterprise Service Bus (ESB), JBoss Rules (Drools) e Business Proccess Managment (BPM).
Burr Suter da JBoss
O Edgar Silva , também da JBoss, falou um pouco mais sobre SOA apresentando RestEasy e Drools e jBPM.
Pra mudar um pouco de assunto assisti a palestra do Renato Belia sobre persistencia com Java Persistence API (JPA).
O Vinícius Senger apresentou modularização e mundo OSGi de uma forma muito criativa, através de modelos criados no Google Sketchup. Comentou sobre as vantagens de se quebrar aplicações em partes menores, falou sobre como reduzir acomplamento e trabalhar com várias versões da mesma biblioteca em uma mesma JVM com as propostas das JSRs 291 e 297.
Vinícius Senger da Global Code
O palestrante internacional Reza Rahman da Tripod falou sobre as novidades que viram no Java Enterprise Edtion 6, como Profiles, EJB 3.1, Bean Validation (JSR 303), Web-beans (JSR 299) e JBoss Seam, JPA 2.0 (JSR 317), JAX-RS, JAX-WS, etc. Reza deixou bem claro que é muito importante que toda a comunidade Java participe com sugestões, codigo fonte e feedback. Achei muito util as novas annotations para agendamento de tarefas (@Schedule) no estilo Cron, as invocações assíncronas (@Asyncronous), os Singleton Beans Thread Safe, os wars simplicados, o web.xml opcional (graças as annotations), as novidades da Servlet 3.0 (JSR 315). Houve tradução simultanea para quem prefiriu ouvir a palestra em português.
Reza Rahman
Ed Burns, outro palestrante internacional, líder da especificação do JSF 2.0, que também esteve no Brasil no TDC 2007, fez uma apresentação muito parecida com a que havia feito no JavaOne em maio. Falou sobre as novidades que estão por vir no JSF 2.0, como melhor suporte a Facelets, Ajax, Annotation-Driven Features como @ResourceDependency, Data Validation (JSR 303), melhorias de performance, facilitadores para REST, Project Stages (como no Rails), e Convention over Configuration (CoC).
A Esquerda Reza Rahman e Ed Burns a Direita
Ed abriu o evento no sábado com uma palestra sobre seu novo livro “Secrets of the RockStar Programmers“. Foram apresentados trechos em áudio das entrevistas que foram feitas com grandes personalidades com mundo da tecnologia como James Gosling, o pai do Java, Rod Johnson, o criador do SpringFramwork, Adrian Colyer do AspectJ, os caras do JavaPosse, Andy Hurt, fundador da Agile Alliance e co-fundador do Pragmatic Programmers, entre outros.
O nosso querido Mister M também falou em sua palestra sobre as novidades do Java EE 6 e Java SE 7, comentou sobre o Swing Application Framework (JSR 296), Beans Binding (JSR 203) e NIO 2 (JSR 203). Apresentou com muita autoridade tudo sobre a Date and Time API (JSR 310), também, a final de contas, é ele quem põe a mão na massa…
Mister M
O Moacyr de Mello da IBM / Rational falou sobre a plataforma Jazz, e como modelar processos com a ferramenta, me pareceu algo muito interessante, porém confesso que ainda não consegui compreender bem como isso funciona… Achei muito interessante o template de Scrum.
Fomos almoçar em uma cantina bem tradicional proxima ao local do evento, feijoada excepcional!
Feijoada Ágil
E por falar em Scrum, falou-se muito sobre metodologias agéis no evento. A comunidade ágil estava em peso com seus representantes: Juan Bernabó da Teamware, Vinícius Teles da Improveit, Rodrigo Yoshima da Aspercom, Alexandra Magno da Caelum, o Heptaman da Heptagon, Jorge Diz da GlobalCode, André Piza da UOL, Enio Stein da Paggo, José Papo da FIAP, Manoel Pimentel da Visão Ágil, Felipe Rodrigues da Fratec entre muitos outros. Houve um debate sobre metologias ágeis em que dentre muitos assuntos discutiu-se sobre CMMi com Metologias Ágeis, a briga foi boa, dado que contavamos também com a presença do Marcos Dorça da Borland que defendeu o lado do CMMi.
Debate sobre metodologias Ágeis
O Vínicus Teles da Improvit gravou várias entrevistas ao longo do evento e as está disponiblizando aos pouquinhos no blog da Improvit, recomendo a todos que assitam, material de ótima qualidade, garanto!
A GlobalCode também disponibilizou os PDFs das apresentações no site deles e as fotos do evento estão no Picassa.
Gostaria de agradecer ao Vínicus Senger e a Yara Senger, a toda a equipe da Global Code, aos Javistas e Agilistas, e a todos que estiveram presentes e ajudaram para que este fabuloso evento pudesse ser realizado. Um grande abraço também para o Mauricio Leal, e ao todo o pessoal do SouJava, e ao Bruno e todo o pessoal do GUJavaSC, e é claro quero também agradeço a Bluesoft por me permitir e apoiar à participar do evento. Fica um abraço para o Bolha e para o Junião que estiveram lá comigo.
Fiquem ligados vem aí USCS.java, Sun Tech Days, Just Java 2008, Rails Submit Latin America, entre outros eventos que prometem dar mais ainda o que falar…
Grande Abraço,
André Faria