JMockit & Hamcrest

Preview:

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

Recommended