Raible's Wiki

Raible Designs
Wiki Home
News
Recent Changes

AppFuse

Homepage
  - Korean
  - Chinese
  - Italian
  - Japanese

QuickStart Guide
  - Chinese
  - French
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish
  - Japanese

User Guide
  - Korean
  - Chinese

Tutorials
  - Chinese
  - German
  - Italian
  - Korean
  - Portuguese
  - Spanish

FAQ
  - Korean

Latest Downloads

Other Applications

Struts Resume
Security Example
Struts Menu

Set your name in
UserPreferences


Referenced by
Articles
Articles_pt
CreateActions_pt
CreateDAO_pt
SpringControllers_pt




JSPWiki v2.2.33

[RSS]


Hide Menu

CreateManager_pt


Difference between version 3 and version 2:

At line 64 changed 1 line.
Now that we have the JUnit framework down for this class, let's add the meat: the test methods to make sure everything works in our Manager. Here's a snippet from the [DAO Tutorial|CreateDAO] tutorial to help you understand what we're about to do.
Agora que temos o framework JUnit configurado para esta classe, vamos ao que interessa: os métodos de teste para nos certificar que tudo funciona no nosso Manager. Aqui está um exemplo do [Tutorial DAO|CreateDAO_pt] para ajudá-lo a entender o que estamos fazendo.
At line 66 changed 1 line.
;:''...we create methods that begin with "test" (all lower case). As long as these methods are public, have a void return type and take no arguments, they will be called by our <junit> task in our Ant build.xml file. Here's some simple tests for testing CRUD. An important thing to remember is that each method (also known as a test), should be autonomous.''
;:''...criamos métodos que começam com "test" (tudo em letra minúscula). Enquanto estes métodos forem públicos, possuírem um retorno void e não possuírem argumentos, serão chamados pela nossa task <junit> em nosso arquivo build.xml do Ant. Aqui estão alguns testes simples para testar operações CRUD. Uma coisa importante para relembrar é que cada método (conhecido como teste), deve ser autônomo.''
At line 68 changed 1 line.
Add the following methods to your PersonManagerTest.java file:
Adicione os métodos seguintes ao seu arquivo PersonManagerTest.java:
At line 73 changed 4 lines.
person = (Person) mgr.getPerson("1");
assertTrue("person.firstName not null",
person.getFirstName() != null);
// seta o comportamento esperado no DAO
personDao.expects(once()).method("getPerson")
.will(returnValue(new Person()));
person = personManager.getPerson(personId);
assertTrue(person != null);
personDao.verify();
At line 80 changed 9 lines.
person = (Person) mgr.getPerson("1");
String name = person.getFirstName();
person.setFirstName("test");
person = (Person) mgr.savePerson(person);
assertTrue("name updated", person.getFirstName().equals("test"));
person.setFirstName(name);
mgr.savePerson(person);
// seta o comportamento esperado no DAO
personDao.expects(once()).method("savePerson")
.with(same(person)).isVoid();
personManager.savePerson(person);
personDao.verify();
At line 93 removed 1 line.
person = (Person) populate(person);
At line 95 changed 3 lines.
person = (Person) mgr.savePerson(person);
assertTrue(person.getFirstName().equals("Bill"));
assertTrue(person.getId() != null);
// seta os campos obrigatórios
person.setFirstName("firstName");
person.setLastName("lastName");
At line 99 changed 4 lines.
if (log.isDebugEnabled()) {
log.debug("removing person, personId: " +
person.getId());
}
// seta o comportamento esperado no DAO
personDao.expects(once()).method("savePerson")
.with(same(person)).isVoid();
personManager.savePerson(person);
personDao.verify();
At line 104 changed 1 line.
mgr.removePerson(person.getId().toString());
// reseta o comportamento
personDao.reset();
At line 106 changed 1 line.
assertNull(mgr.getPerson(person.getId().toString()));
personDao.expects(once()).method("removePerson").with(eq(new Long(personId)));
personManager.removePerson(personId);
personDao.verify();
// reseta o comportamento
personDao.reset();
// testa se o método remove retorna uma exceção
Exception ex = new ObjectRetrievalFailureException(Person.class, person.getId());
personDao.expects(once()).method("removePerson").isVoid();
personDao.expects(once()).method("getPerson").will(throwException(ex));
personManager.removePerson(personId);
try {
personManager.getPerson(personId);
fail("O objeto Pessoa com o identificador '"+
personId +"' foi encontrado no banco de dados");
} catch (ObjectRetrievalFailureException e) {
assertNotNull(e.getMessage());
}
personDao.verify();
At line 110 changed 1 line.
This class won't compile at this point because we have not created our PersonManager interface.
Esta classe não compilará neste ponto porque nós não criamos nossa interface PersonManager.
At line 112 changed 1 line.
;:%%(color: blue)''I think it's funny how I've followed so many patterns to allow __extendibility__ in AppFuse. In reality, on most projects I've been on - I learn so much in a year that I don't want to extend the architecture - I want to rewrite it. Hopefully by keeping AppFuse up to date with my perceived best practices, this won't happen as much. Each year will just be an upgrade to the latest AppFuse, rather than a re-write. ;-)''
;:%%(color: blue)''Acho engraçado como segui tantos padrões para permitir __extendibilidade__ no AppFuse. Na realidade, na maioria dos projetos que participei - aprendi tanto em um ano que não quero extender a arquitetura - quero reescrevê-la. Espero que isto não ocorra tanto, utilizando minhas melhores práticas para manter o AppFuse em dia. A cada ano haverá apenas um upgrade para uma nova versão do AppFuse, ao invés de ter de reescrevê-lo. ;-)''
At line 114 changed 1 line.
!!Create a new Manager to talk to the DAO [#2]
!!Criar um novo Manager para conversar com o DAO [#2]

Back to CreateManager_pt, or to the Page History.