Click here to load reader
Upload
ptjug
View
1.439
Download
0
Embed Size (px)
DESCRIPTION
Apresentação de Hugo Marcelino - 11º encontro PT.JUG.
Citation preview
Ferramentas para testes
JMockit & Hamcrest
Wednesday, July 3, 13
Porquê Mocks ?
Wednesday, July 3, 13
Porquê mocks ?* Queremos ignorar dependências de classes relacionadas quando não são necessárias para os nossos testes.
* Porque queremos testar código específicosem termos que estar preocupados com outras funcionalidades.
* Mais rápido escrever testes para legacy code.
Wednesday, July 3, 13
Caso de uso
AplicaçãoServidorExterno
MocksRequest
MocksResponse
Wednesday, July 3, 13
JMockit
Wednesday, July 3, 13
JMockitJMockit é uma ferramenta para criar mocks, que para além de fornecer as mesmas funcionalidades que outras ferramentas, permite fazer ainda:
* Mocks de classes final* Mocks de métodos estáticos.
https://code.google.com/p/jmockit/
* Mocks de construtores
Wednesday, July 3, 13
Método de Teste:@Testpublic void test_something(){ new Expectations(){{ // Expectativas }}
// code beeing executed
new Verifications(){{ // JUnit ou TestNG asserts }}}
Wednesday, July 3, 13
Expectation API
Verification API
* Um forma de podermos definir o comportamento que pretendemos que os nossos objectos mock tenham
* Forma de podermos verificar as chamadas feitas aos nossos mock objects.
Wednesday, July 3, 13
Expectation API new Expectations(){ MockedClass mock; { // Definição de expectativas mock.someMethod(“sameArg”); result = “someresult” ... } }
Wednesday, July 3, 13
Verifications API
new Verifications(){{ // Definição de expectativas mock.someMethod(anyString); times = 1 ... }}
Wednesday, July 3, 13
Hamcrest
Wednesday, July 3, 13
Hamcrest* Pretende dar algum significado ao que estamos a testar simplificando os nossos testes por meio de matchers. Configuration config = new Port80Configuration();
Server server = new server(); server.setConfiguration(config); server.start();
assertThat(server, isListeningOnPort(80));
https://code.google.com/p/hamcrest/Wednesday, July 3, 13
Hamcrestpublic Matcher<? super Server> isListeningOnPort(false Integer port){ return new TypeSafeMatcher<Server>() { @Override protected boolean matchesSafely(Server server) { // testar condição return false; }
@Override public void describeTo(Description description) { description.appendText(....); // Escreve em caso de falha a mensagem de erro } } }
Wednesday, July 3, 13
Demo TIME
Wednesday, July 3, 13
Thank you!
@: hugo_marcelinogit: hmarcelino
Wednesday, July 3, 13