At line 346 changed 1 line. |
!!Clean up the JSP to make it presentable [#6] |
!!Formatar o JSP para deixá-lo apresentável [#6] |
At line 348 changed 1 line. |
Now let's clean up the generated personForm.jsp. Change the ''action'' of the <html:form> to be "savePerson" so validation will be turned on when saving. Also, change the ''focus'' attribute from focus="" to focus="firstName" so the cursor will be in the firstName field when the page loads (this is done with JavaScript). |
Agora formataremos o personForm.jsp gerado. Mudaremos o atributo ''action'' do <html:form> para "savePerson" para ligar a validação quanto formos persistir. Mudaremos também o atributo ''focus'' de focus="" para focus="firstName" para o cursor estar no campo firstName quanto a página carregar (isto é feito via Javascript). |
At line 350 changed 1 line. |
Now if you execute __ant db-load deploy__, start Tomcat and point your browser to [http://localhost:8080/appfuse/editPerson.html?id=1], you should see something like this: |
Agora se executarmos __ant db-load deploy__, iniciarmos o Tomcat e apontarmos o browser para [http://localhost:8080/appfuse/editPerson.html?id=1], veremos algo como: |
At line 356 removed 1 line. |
%%note __NOTE:__ Use the __deploy-web__ target if you've changed any files under the ''web'' directory. Otherwise, use __deploy__ which compiles and deploys.%% |
At line 358 changed 1 line. |
Finally, to make this page more user friendly, you may want to add a message for your users at the top of the form, which can easily be done by adding text (using <fmt:message>) at the top of the personForm.jsp page. |
%%note __NOTA:__ Utilize o alvo(target) __deploy-web__ se foram alterados apenas arquivos do diretórios ''web''. Senão, use __deploy__ que compila e publica.%% |
At line 360 changed 2 lines. |
!![[Optional] Create a Canoo WebTest to test browser-like actions [#7] |
The final (optional) step in this tutorial is to create a [Canoo WebTest|http://webtest.canoo.com] to test the JSPs. |
Finalmente, para tornarmos a página mais amigável, poderemos adicionar mensagens aos nossos usuários na parte superior do formulário, o que podemos fazer facilmente adicionando texto (utilizando <fmt:message>) na parte superior da página personForm.jsp. |
At line 363 changed 1 line. |
;:''I say this step is optional, because you can run the same tests through your browser.'' |
!![[Opcional] Criar WebTests Canoo para testar ações baseadas no browser [#7] |
A parte final (opcional) para este tutorial é criar um [Canoo WebTest|http://webtest.canoo.com] para testar os JSPs. |
At line 365 changed 1 line. |
You can use the following URLs to test the different actions for adding, editing and saving a user. |
;:''Digo que estes testes são opcionais, porque podemos rodar os mesmos testes no browser.'' |
At line 367 changed 4 lines. |
* Add - [http://localhost:8080/appfuse/editPerson.html]. |
* Edit - [http://localhost:8080/appfuse/editPerson.html?id=1] (make sure and run __ant db-load__ first). |
* Delete - [http://localhost:8080/appfuse/editPerson.html?method=Delete&id=1] (or edit and click on the Delete button). |
* Save - Click [edit|http://localhost:8080/appfuse/editPerson.html?id=1] and then click the Save button. |
Podemos utilizar as seguintes URLs para testar as diferentes ações para adicionar, editar e persistir um Person. |
At line 372 changed 1 line. |
Canoo tests are pretty slick in that they're simply configured in an XML file. To add tests for add, edit, save and delete, open test/web/web-tests.xml and add the following XML. You'll notice that this fragment has a target named ''PersonTests'' that runs all the related tests. |
* Adicionar - [http://localhost:8080/appfuse/editPerson.html]. |
* Editar - [http://localhost:8080/appfuse/editPerson.html?id=1] (make sure and run __ant db-load__ first). |
* Remover - [http://localhost:8080/appfuse/editPerson.html?method=Delete&id=1] (ou edite e clique no botão de remoção). |
* Salvar - Acesse [edit|http://localhost:8080/appfuse/editPerson.html?id=1] e então clique o botão 'Salvar'. |
At line 374 changed 1 line. |
;:''I use CamelCase target names (vs. the traditional lowercase, dash-separated) because when you're typing ''-Dtestcase=Name'', I've found that I'm used to doing CamelCase for my JUnit Tests.'' |
Testes Canoo são simples, configurados apenas por um arquivo XML. Para adicionarmos testes para as operações CRUD(add, edit, save e delete), abriremos test/web/web-tests.xml e adicionaremos o seguinte XML. Note que este fragmento possui um alvo(target) nomeado ''PersonTests'' que executa todos os testes relacionados. |
At line 375 added 2 lines. |
;:''Utilizo notação composta(CamelCase) para os nomes de alvos (target)(vs. letras minúsculas tradicionais, separadas por hífen) por causa das execuções utilizando o JUnit, como por exemplo, ''-Dtestcase=Name'', Percebi que estou acostumado com a notação composta para meus testes JUnit.'' |
|
At line 378 changed 1 line. |
<!-- runs person-related tests --> |
<!-- roda os testes relacionados com Person --> |
At line 381 changed 2 lines. |
description="Call and executes all person test cases (targets)"> |
<echo>Successfully ran all Person JSP tests!</echo> |
description="Chama e executa todos os casos de teste relacionados com Person (targets)"> |
<echo>Rodou todos os testes JSP de Person com sucesso!</echo> |
At line 385 changed 1 line. |
<!-- Verify the edit person screen displays without errors --> |
<!-- Verifica se a tela de edição da pessoa mostra sem erros --> |
At line 387 changed 1 line. |
description="Tests editing an existing Person's information"> |
description="Testa a edição das informações de uma pessoa existente"> |
At line 392 changed 2 lines. |
<invoke description="click Edit Person link" url="/editPerson.html?id=1"/> |
<verifytitle description="we should see the personDetail title" |
<invoke description="clica no link de edição de pessoa" url="/editPerson.html?id=1"/> |
<verifytitle description="devemos ver o título do personDetail" |
At line 399 changed 1 line. |
<!-- Edit a person and then save --> |
<!-- Edita a pessoa e então salva --> |
At line 401 changed 1 line. |
description="Tests editing and saving a user"> |
description="Testes editando e salvando a pessoa"> |
At line 406 changed 2 lines. |
<invoke description="click Edit Person link" url="/editPerson.html?id=1"/> |
<verifytitle description="we should see the personDetail title" |
<invoke description="clica no link de edição de pessoas" url="/editPerson.html?id=1"/> |
<verifytitle description="devemos ver o título da edição de pessoas" |
At line 409 changed 3 lines. |
<setinputfield description="set lastName" name="lastName" value="Canoo"/> |
<clickbutton label="Save" description="Click Save"/> |
<verifytitle description="Page re-appears if save successful" |
<setinputfield description="seta o último nome" name="lastName" value="Canoo"/> |
<clickbutton label="Save" description="Clica no botão Save"/> |
<verifytitle description="A página reaparece se tudo ocorreu com sucesso" |
At line 413 changed 1 line. |
<verifytext description="verify success message" text="${person.updated}"/> |
<verifytext description="verifica a mensagem de sucesso" text="${person.updated}"/> |
At line 418 changed 1 line. |
<!-- Add a new Person --> |
<!-- Adiciona uma nova Pessoa --> |
At line 420 changed 1 line. |
description="Adds a new Person"> |
description="Adiciona uma nova Pessoa"> |
At line 425 changed 2 lines. |
<invoke description="click Add Button" url="/editPerson.html"/> |
<verifytitle description="we should see the personDetail title" |
<invoke description="clica no botão de Adição" url="/editPerson.html"/> |
<verifytitle description="deveremos ver o título do detalhamento da pessoa" |
At line 428 changed 4 lines. |
<setinputfield description="set firstName" name="firstName" value="Abbie"/> |
<setinputfield description="set lastName" name="lastName" value="Raible"/> |
<clickbutton label="${button.save}" description="Click button 'Save'"/> |
<verifytitle description="Main Menu appears if save successful" |
<setinputfield description="seta o firstName" name="firstName" value="Abbie"/> |
<setinputfield description="seta o lastName" name="lastName" value="Raible"/> |
<clickbutton label="${button.save}" description="Clica no botão 'Salvar'"/> |
<verifytitle description="O menu principal reaparece se tudo ocorreu com sucesso" |
At line 433 changed 1 line. |
<verifytext description="verify success message" text="${person.added}"/> |
<verifytext description="verifica a mensagem de sucesso" text="${person.added}"/> |
At line 438 changed 1 line. |
<!-- Delete existing person --> |
<!-- Deleta uma pessoa existente --> |
At line 440 changed 1 line. |
description="Deletes existing Person"> |
description="Deleta uma pessoa existente"> |
At line 445 changed 4 lines. |
<invoke description="click Edit Person link" url="/editPerson.html?id=1"/> |
<clickbutton label="${button.delete}" description="Click button 'Delete'"/> |
<verifytitle description="display Main Menu" text=".*${mainMenu.title}.*" regex="true"/> |
<verifytext description="verify success message" text="${person.deleted}"/> |
<invoke description="clica no link de edição da pessoa" url="/editPerson.html?id=1"/> |
<clickbutton label="${button.delete}" description="Clica no botão 'Deletar'"/> |
<verifytitle description="Mostra o menu principal se tudo ocorreu com sucesso" text=".*${mainMenu.title}.*" regex="true"/> |
<verifytext description="verifica a mensagem de sucesso" text="${person.deleted}"/> |
At line 454 changed 1 line. |
After adding this, you should be able to run __ant test-canoo -Dtestcase=PersonTests__ with Tomcat running or __ant test-jsp -Dtestcase=PersonTests__ if you want Ant to start/stop Tomcat for you. To include the PersonTests when all Canoo tests are run, add it as a dependency to the "run-all-tests" target. |
Após adicionar isto, seremos capazes de rodar __ant test-canoo -Dtestcase=PersonTests__ com o Tomcat rodando ou __ant test-jsp -Dtestcase=PersonTests__ se quisermos que o Ant inicialize e pare o Tomcat. Para incluir o PersonTests quando todos os testes canoo são executados, adicionaremos sua dependência ao alvo(target) "run-all-tests". |
At line 456 changed 1 line. |
You'll notice that there's no logging in the client-side window by Canoo. If you'd like to see what it's doing, you can add the following between </webtest> and </target> at the end of each target. |
Você perceberá que não há registro(logging) na janela cliente do canoo. Se desejarmos ver o que o Canoo está fazendo, podemos adicionar o seguinte código entre </canoo> e </target> no final do alvo(target). |
At line 468 changed 1 line. |
''Next Up:'' __Part IV:__ [Adding Validation and List Screen|ValidationAndList] - Adding validation logic to the personForm so that firstName and lastName are required fields and adding a list screen to display all person records in the database. |
''Próximo:'' __Parte IV:__ [Adicionando Validação e Tela de Listagem|ValidationAndList] - Adicionando lógica de validação para o personForm para que o firstName e o lastName sejam campos obrigatórios, e adicionando uma tela de listagem para mostrar todas as tuplas de pessoas no banco de dados. |