Escolar Documentos
Profissional Documentos
Cultura Documentos
TUtorial Java 2
TUtorial Java 2
NetBeans IDE
Conteúdo
Para concluir este tutorial, você precisa dos seguintes recursos e softwares.
Após criar um projeto NetBeans a partir de um projeto Eclipse, você pode trabalhar das
seguintes maneiras:
Depois de ter importado o projeto, você pode usar um dos IDEs do NetBeans e Eclipse,
ou ambos, para editar, construir, executar, depurar e criar o perfil do projeto. Se você
fizer uma alteração de configuração no projeto Eclipse, você pode sincronizar o projeto
NetBeans novamente. Isso permite que você trabalhe em projetos no NetBeans mesmo
se todos em sua equipe estiverem trabalhand com o Eclipse. O caminho de construção
que você define no Eclipse continua sendo o caminho de construção mestre do projeto.
1. Certifique-se de que você tenha uma cópia do projeto que deseja importar para
seu sistema.
Veja Arquivos do projeto NetBeans a seguir para obter uma relação dos arquivos
e pastas criados pelo NetBeans.
5. Na página Servidores, registre todos os servidores que seu projeto precisa com o
IDE NetBeans. (Essa página não é exibida se você não estiver importando
aplicativos Web.)
Depois de ter concluído o assistente, as caixas de diálogo a seguir devem ser exibidas:
Você pode copiar as informações obtidas desse diálogo e colá-las em outro lugar
para consultar posteriormente.
Na maioria dos casos, você usa a caixa de diálogo Propriedades do projeto para
resolver esses problemas. Veja Resolvendo problemas de importação para obter
um guia para a solução dos problemas mais comuns.
Se houver referências nos metadados de seu projeto sobre servidores ou outros recursos
que o NetBeans não consegue resolver, o nó do projeto será exibido em vermelho. Você
pode resolver essas referências imediatamente clicando com o botão direito do mouse
no nó do projeto e escolhendo Resolver problemas de referência e Resolver servidor
ausente.
Para outros tipos de ajustes na configuração do projeto, você usa a caixa de diálogo
Propriedades do projeto. Abra a caixa de diálogo Propriedades do projeto clicando com
o botão direito do mouse no nó do projeto e escolhendo Propriedades.
Para obter mais informações sobre a configuração de seu projeto, veja Configurando o
classpath e outras configurações do projeto no guia Criando, importando e configurando
projetos Java.
Para obter mais informações sobre a construção e execução de seu aplicativo, bem como
sobre a personalização do processo de construção, veja Criando, importando e
configurando projetos Java.
Embora a pasta nbproject/private deva ser ignorada, a pasta nbproject deve ser
copiada para o sistema de controle de versão. A pasta nbproject contém metadados do
projeto que permitem que outros usuários abram o projeto no NetBeans sem ter que
importar o projeto primeiro.
Conteúdo
Abrindo um projeto
Configurando o projeto para habilitar o Java Web Start
Executando o aplicativo a partir de uma localização remota
Resumo
Consulte também
Abrindo um projeto
Primeiro, é necessário abrir um projeto IDE com o aplicativo Converter. O código-fonte
do aplicativo já está empacotado como um projeto NetBeans IDE, portanto, basta abri-
lo no IDE.
O código-fonte para a demonstração Converter é originalmente fornecido no tutorial
Java. Consulte a seção Utilizando componentes Swing do tutorial Java para aprender
como escrever este pequeno aplicativo. Neste tutorial, você aprenderá a configurar suas
configurações de projeto para que este aplicativo Java possa ser iniciado em um
navegador Web.
Para habilitar seu aplicativo Java para ser executado com o Java Web Start, é preciso
configurar as propriedades sobre como o IDE deveria ser incorporado no projeto.
Quando o Java Web Start é habilitado nas propriedades do projeto, o IDE cria
automaticamente um arquivo JNLP e uma página HTML com o link para o arquivo
JNLP, junto com o arquivo JAR.
Configurando o projeto para habilitar o Java Web Start
Primeiro, configuramos o projeto para torná-lo habilitado para o Java Web Start e
testamos localmente sua execução.
Vamos agora examinar de perto os arquivos Java Web Start que foram criados pelo IDE
durante o processo de construção.
Para visualizar os arquivos, abra a janela Arquivos no IDE e expanda a pasta dist. Para
o Java Web Start, os seguintes dois arquivos adicionais foram criados:
Este tutorial mostra como carregar o aplicativo no Projeto Kenai, que fornece um
ambiente de colaboração para desenvolvedores e permite que os usuários hospedem e
compartilhem código e projetos de código-fonte aberto. Se você decidir seguir nossas
instruções sobre como carregar no Kenai, será necessário ter uma conta de usuário e um
projeto Kenai. No entanto, também é possível decidir carregar seu aplicativo em
qualquer outro servidor Web.
Nota: para deployment de aplicativos com o Java Web Start na Web, o servidor Web
que estiver sendo utilizado deve ser capaz de manipular arquivos JNLP. O servidor Web
deve ser configurado para reconhecer os arquivos JNLP como aplicativos, ou seja, o tipo
MIME para o JNLP deve ser adicionado na configuração do servidor Web. Caso
contrário, os arquivos com a extensão JNLP serão tratados como arquivos de texto
comuns. Para obter mais informações sobre a configuração do servidor Web, consulte o
Guia do Java Web Start.
Para iniciar o aplicativo a partir da Web, é preciso fornecer um link para o arquivo de
código-fonte dos aplicativos na Web no arquivo JNLP.
1. Clique com o botão direito do mouse no nó do projeto ConvertePrj, escolha
Propriedades e selecione Web Start em Categorias.
2. Escolha definida pelo usuário como o Código-base.
3. No campo Visualizar o código-base, insira o URL onde estará carregando os arquivos
de código-fonte.
Por exemplo, http://kenai.com/projects/netbeans-java-
docs/downloads/download/converter/
Resumo
Neste curto tutorial, mostramos como tornar com facilidade um aplicativo Java
implantável através da Web utilizando o NetBeans IDE. Essa é apenas outra forma para
poder implantar aplicativos Java.
Usar o NetBeans IDE para unir arquivos JAR em um único arquivo JAR
Índice de artigos
The Java Warehouse is the repository for Java and JavaFX applications submitted by
developers for distribution through the Java Store to hundreds of millions of desktops
worldwide. O Armazém Java é o repositório de aplicações Java e JavaFX submetidos
por desenvolvedores para distribuição pela loja Java para centenas de milhões de
desktops no mundo todo. The Java Warehouse Developer Center Release Notes make
clear that there is currently no way to upload applications composed of several Java
Archive (JAR) files into the Java Warehouse. O Java Developer Armazém Release
Notes Center deixar claro que não há atualmente nenhuma maneira de fazer upload de
aplicações Java composta de vários Archive (JAR) para o Java Warehouse. However,
there is a workaround: Just concatenate each of the user and library classes into a single
JAR file. No entanto, há uma solução: Basta concatenar cada uma das classes de usuário
e biblioteca em um único arquivo JAR. This is very easy to do for both Java and
JavaFX projects using NetBeans IDE 6.7.1. Isso é muito fácil de fazer para Java e
projetos JavaFX com NetBeans IDE 6.7.1.
To demonstrate how to do this, let's use one of the sample Java projects that is included
in the NetBeans IDE 6.7.1 distribution: the Mars Rover Viewer. Para demonstrar como
fazer isso, vamos usar um dos projetos Java de exemplo que está incluído no IDE
NetBeans 6.7.1 Distribuição, o Mars Rover Viewer. Open the NetBeans IDE, select File
> New Project, then scroll down to the Samples folder and choose Java from the
Categories pane. Abra o NetBeans IDE, selecione File> New Project, em seguida, role
para a Samples de pasta e escolha Java no painel Categorias. From there, select Mars
Rover Viewer in the Projects pane and click Next, as shown in Figure 1. A partir daí,
selecionar Mars Rover Viewer no painel Projetos e clique em Avançar, como mostrado
na Figura 1. Next, choose a suitable location for the project and click Finish. Em
seguida, escolha um local adequado para o projeto e clique em Concluir.
Figure 1 - Creating the Mars Rover Viewer Sample Project in NetBeans. Figura 1 -
Criando o Mars Rover Project Viewer exemplo no NetBeans.
We've chosen this project because it makes use of a popular compile-time library that is
not included with the standard Java Development Kit (JDK) : the Swing Application
Framework . Nós escolhemos este projeto porque ele faz uso de uma biblioteca de
tempo de compilação popular que não está incluído com o padrão Java Development
Kit (JDK) : o Swing Application Framework . To verify that this library is being used,
right-click on the project in the upper left pane and choose Properties. Para verificar se
esta biblioteca está sendo usada, clique com o botão direito sobre o projeto no painel
superior esquerdo e escolha Propriedades. From there, select Libraries on the left pane
to verify that the Swing Application Framework is indeed listed, as shown in Figure 2.
De lá, Bibliotecas selecionar no painel da esquerda para verificar se o Swing
Application Framework é realmente na lista, como mostrado na Figura 2. Then click
OK to close the Project Properties dialog box. Em seguida, clique em OK para fechar a
caixa diálogo Project Properties.
Figure 2 - The Mars Rover Viewer Application Uses the Swing Application Framework
Library. Figura 2 - O Mars Rover Application Viewer Usa a biblioteca Swing
Application Framework.
In order to bundle all of the libraries into a single JAR file, you will need to edit the
project's Ant file, which is called build.xml . A fim de agrupar todas as bibliotecas em
um único arquivo JAR, você precisará editar o arquivo de projeto do Ant, que é
chamado build.xml . Choose the Files tab in the Project window in the upper left, then
expand the project tab if necessary to show the build.xml file. Escolha a aba Files na
janela Project no canto superior esquerdo, expanda a guia de projeto, se necessário, para
mostrar o build.xml arquivo. Double-click this file to edit it in the source-code editor
pane and scroll down to the bottom. Dê um duplo clique neste arquivo para editá-lo no
painel de editor de código-fonte e vá até o fundo. Now copy and paste the following text
to the end, just before the final line, which is the </project> closing tag: Agora copie e
cole o seguinte texto para o final, pouco antes da linha final, que é o </project> tag de
fechamento:
<!-- don't edit below this line --> <! - Não editar abaixo
desta linha ->
<jar destfile="${store.dir}/temp_final.jar"
filesetmanifest="skip"> <jar destfile="${store.dir}/temp_final.jar"
filesetmanifest="skip">
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>
<zipgroupfileset dir="dist/lib" includes="*.jar"/>
<manifest> <manifest>
<attribute name="Main-Class" value="${main.class}"/>
<attribute name="Main-Class" value="${main.class}"/>
</manifest> </> Manifesto
</jar> </ Jar>
Note that you must change the following line in the Ant code above to match your
particular project. Note-se que você deve alterar a seguinte linha no código Ant acima
para corresponder ao seu projeto particular.
The property store.jar.name specifies the name of the JAR file that will be created in
the store directory — change the value to whatever name you like. A propriedade
store.jar.name especifica o nome do arquivo JAR que será criado na store do
diretório - altere o valor para o nome que você quiser. After you have changed this
name, save the build.xml file. Depois de ter alterado este nome, salve o build.xml
arquivo. Figure 3 shows the additions to the build.xml file for the sample
MarsRoverViewer project relative to the closing </project> tag. A Figura 3 mostra as
adições ao build.xml MarsRoverViewer arquivo para o projeto de exemplo em relação
ao fechamento </project> tag.
Figure 3 - Additions to the Project's build.xml File Relative to the Closing Tag. Figura
3 - Adições ao Projeto build.xml arquivo em relação à marca de fechamento.
From here, you can continue normal development, editing Java source files and
compiling and running as necessary. A partir daqui, você pode continuar o
desenvolvimento normal, a fonte de edição de arquivos Java e compilar e executar, se
necessário. Figure 4 shows the Mars Rover Viewer application fully built and running
within the NetBeans IDE. A Figura 4 mostra o Mars Rover aplicativo Visualizador
totalmente construído e funcionando dentro do IDE NetBeans.
Figure 4 - Running the Mars Rover Viewer Within the NetBeans IDE. Figura 4 -
Executando o Mars Rover Viewer Dentro do IDE NetBeans.
When you're ready to package all of the classes and libraries into a single JAR file,
switch back to the Files view in the upper left, then right-click the build.xml file.
Quando estiver pronto para embalar todas as classes e bibliotecas em um arquivo JAR
único, voltar para a visualização dos arquivos no canto superior esquerdo, clique com o
botão direito do mouse no build.xml arquivo. Choose Run Target, scroll down to
select Other Targets, then choose package-for-store , as shown in Figure 5, to
execute the target. Escolha Run Target, scroll para baixo para selecionar outros alvos,
em seguida, escolher package-for-store , como mostrado na Figura 5, para executar
o alvo. In this case, package-for-store is the name of the Ant target that you created
previously in the project build.xml file. Neste caso, o package-for-store se o nome
do alvo Ant que você criou anteriormente no projeto build.xml arquivo.
Figure 5 - Executing the package-for-store Ant Target From the Files Tab Inside the
NetBeans IDE. Figura 5 - Execução do package-for-store Ant alvo do Tab arquivos
dentro do IDE NetBeans.
Executing this Ant target will create a directory called store inside your project
directory. A execução deste objectivo Formiga irá criar um diretório chamado store
dentro do seu diretório do projeto. NetBeans and Ant will then copy all of the classes
and libraries into a temporary JAR file and strip out any unwanted files, placing the
final result under the JAR name that you specified earlier. NetBeans e Formiga irá
copiar todas as classes e bibliotecas em um frasco de arquivos temporários e tira todos
os arquivos indesejados, colocando o resultado final com o nome de JAR que você
especificou anteriormente. NetBeans will then delete the temporary file. NetBeans irá
excluir o arquivo temporário. The results are shown in Figure 6. Os resultados obtidos
são mostrados na Figura 6.
Figure 6 - The Final JAR File, Ready to Upload to the Java Warehouse. Figura 6 - O
arquivo JAR final, pronto para fazer upload para o Armazém Java.
That's all there is to it — you can use this JAR file to upload to the Java Warehouse.
Isso é tudo que existe para isso - você pode usar este arquivo JAR para fazer o upload
para o Armazém Java. Note that if you get an error stating that the dist/lib directory
was not found, you should check that you have indeed included other libraries in your
project, as this is the location where their JAR files will be stored. Note que se você
receber um erro informando que o dist/lib do diretório não foi encontrado, você deve
verificar se tem efectivamente incluídas outras bibliotecas no seu projeto, pois este é o
local onde seus arquivos JAR será armazenado.
If you'd like to verify that the JAR file contains the appropriate libraries, you can use
one of three methods: Se você gostaria de verificar se o arquivo JAR contém as
bibliotecas adequadas, você pode usar um dos três métodos:
Use the command-line tool: jar tvf (filename) . Use a ferramenta de linha
de comando: jar tvf (filename) .
Use a number of OS-based tools to inspect the JAR files (or ZIP files, if you
change the extension). Utilize um número de ferramentas baseado no sistema
operacional para inspecionar os arquivos JAR (ou arquivos ZIP, se você mudar a
extensão).
Double-click on the JAR file to be sure that the Java runtime can execute it. Dê
um duplo clique sobre o arquivo JAR para ter certeza de que o runtime do Java
pode executá-lo.
Escrevendo testes JUnit no NetBeans
IDE
Este tutorial apresenta os princípios básicos da escrita e execução de testes de unidade
JUnit no NetBeans IDE. O teste de um aplicativo faz parte do ciclo de desenvolvimento,
e a escrita e manutenção de testes de unidade podem ajudar a garantir que os métodos
individuais em seu código-fonte funcionem corretamente. O suporte integrado do IDE
para a estrutura de teste de unidades JUnit permite que você crie os testes e suites de
teste do JUnit de modo fácil e rápido.
Neste tutorial você cria testes de unidade JUnit 3 e JUnit 4 e suites de teste para um
projeto de biblioteca de classe Java. A primeira parte do tutorial mostra como criar
testes na JUnit 3. A segunda parte mostra como criar os mesmos testes na JUnit 4
usando anotações da JUnit. Não é necessário completar ambas as partes do tutorial, pois
os testes são os mesmos. No entanto, ver como os testes são escritos em ambas as
versões permite que você veja algumas das alterações introduzidas na JUnit 4.
Conteúdo
Criando o projeto
o Criando o projeto de biblioteca de classe Java
o Fazendo download do projeto da solução
o Criando as classes Java
Escrevendo testes da JUnit 3
o Criando uma classe de teste para Vectors.java
o Escrevendo métodos de teste para Vectors.java
o Criando uma classe de teste para Utils.java
o Escrevendo métodos de teste para Utils.java
o Executando os testes
Escrevendo testes da JUnit 4
o Criando uma classe de teste para Vectors.java
o Escrevendo métodos de teste para Vectors.java
o Criando uma classe de teste para Utils.java
o Escrevendo métodos de teste para Utils.java
o Executando os testes
Criando suites de testes JUnit
o Criando suites de teste JUnit 3
o Criando suites de teste JUnit 4
o Executando suites de teste
Resumo
Para seguir este tutorial, você precisa dos seguintes recursos e softwares.
Criando o projeto
Para concluir este tutorial, você cria primeiramente um projeto de biblioteca de classe
Java chamado JUnit-Sample. Após você criar o projeto, copie as duas classes do projeto
de amostra JUnitSampleSol para seu projeto JUnit-Sample.
Para este tutorial, há pouco motivo para copiar as bibliotecas de projeto em uma
pasta dedicada, pois você não precisará compartilhar bibliotecas com outros
usuários ou projetos. Essa opção não está disponível se você estiver usando o
NetBeans IDE 6.0.
Clique em Próximo.
5. Clique em Terminar.
Você pode fazer o download do projeto de amostra JUnitSampleSol usado neste tutorial
das seguintes formas:
Se você observar o código-fonte das classes, perceberá que Utils.java tem três
métodos (computeFactorial, concatWords e normalizeWord) e que Vectors.java
tem dois métodos (equals e scalarMultiplication). O próximo passo é criar classes
de teste para cada classe e escrever alguns casos de teste para os métodos.
O IDE solicita que você escolha uma versão da JUnit na primeira vez em que usar o
IDE para criar seus testes no projeto. A versão selecionada se torna a versão da JUnit
padrão e o IDE irá gerar todos os testes e suites de teste subseqüentes para essa versão.
Quando você alterar o nome da classe de teste, será exibido um aviso sobre a
alteração do nome. O nome padrão é baseado no nome da classe que você está
testando, com a palavra Teste agregada ao nome. Por exemplo, para a classe
MyClass.java, o nome padrão da classe de teste é MyClassTest.java.
Normalmente, é melhor manter o nome padrão, mas para a finalidade deste
tutorial você mudará o nome porque também irá criar testes JUnit 4 no mesmo
pacote e os nomes das classes de teste devem ser únicos.
4. Desmarque Inicializador de teste e Finalizador de teste. Clique em OK.
/**
* Test of scalarMultiplication method, of class Vectors.
*/
public void testScalarMultiplication() {
System.out.println("scalarMultiplication");
int[] a = null;
int[] b = null;
int expResult = 0;
int result = Vectors.scalarMultiplication(a, b);
assertEquals(expResult, result);
// TODO review the generated test code and remove the
default call to fail.
fail("The test case is a prototype.");
}
}
O corpo do método de cada teste gerado é fornecido somente como um guia e precisa
ser modificado para ser um caso de teste real. Você pode desmarcar Corpos de método
padrão na caixa de diálogo Criar testes se não quiser que o código seja gerado por você.
Quando o IDE gera os nomes para os métodos de teste, cada nome de método é
prefixado com teste, pois a JUnit 3 usa convenções de nomeação e reflexão para
identificar testes. Para identificar métodos de teste, cada método deverá seguir a sintaxe
test<NOME>.
Na JUnit 4 não é mais necessário usar essa sintaxe de nomeação de métodos de teste,
pois você pode usar anotações para identificar os métodos de teste e a classe de teste
não precisa mais estender o TestCase.
Neste exercício, você modifica os métodos de teste gerados para torná-los testes
funcionais e modificar as mensagens de saída padrão. Você não precisa modificar as
mensagens de saída para executar os testes, mas pode querer modificar a saída para
ajudar a identificar os resultados exibidos na janela de saída Resultados do teste JUnit.
Agora você pode criar os esqueletos de teste para Utils.java. Quando você criou o
teste no exercício anterior, o IDE lhe solicitou a versão da JUnit. Desta vez, você não
precisará selecionar uma versão.
1. Clique com o botão direito do mouse em Utils.java e escolha Ferramentas > Criar
testes JUnit.
2. Selecione Inicializador de teste e Finalizador de teste na caixa de diálogo, se estiverem
desmarcados.
3. Modifique o nome da classe de teste para UtilsJUnit3Test na caixa de diálogo Criar
testes. Clique em OK.
Neste exercício você adiciona casos de teste que ilustram alguns elementos de teste
JUnit comuns. Você também adiciona um println aos métodos, pois alguns métodos,
por padrão, não imprimem saída. Adicionando um println aos métodos, você pode
olhar posteriormente na janela de resultado de teste JUnit para verificar se os métodos
foram executados e em qual ordem.
Os métodos setUp e tearDown são usados para inicializar e finalizar condições de teste.
Você não precisa dos métodos setUp e tearDown para testar o Utils.java, mas eles
estão incluídos aqui para demonstrar como funcionam.
Quando você executa o teste, o texto do println de cada método será exibido
na janela de saída Resultados de testes JUnit. Se você não adicionar o println,
não haverá saída para mostrar que os métodos foram executados.
Este caso de teste simples testa o método concatWords. Em vez de usar o método de
teste gerado testConcatWords, você adicionará um novo método de teste chamado
testHelloWorld, que usa uma única asserção simples para testar se o método
concatena as strings corretamente. O assertEquals no caso de teste usa a sintaxe
assertEquals(EXPECTED_RESULT, ACTUAL_RESULT) para testar se o resultado
esperado é igual ao resultado real. Nesse caso, se a entrada para o método concatWords
é "Hello", ", ", "world" e "!", o resultado esperado deve ser igual a "Hello,
world!".
5. Adicione uma declaração println para exibir o texto sobre o teste na janela
Resultados de testes JUnit.
6. public void testHelloWorld() {
7. System.out.println("* UtilsJUnit3Test: test method 1 -
testHelloWorld()");
assertEquals("Hello, world!", Utils.concatWords("Hello", ",
", "world", "!"));
Esse teste demonstra como verificar se um método está demorando muito tempo para
ser concluído. Se o método está demorando muito tempo, o thread de teste é
interrompido e o teste falha. Você pode especificar o limite de tempo no teste.
Esse teste demonstra como testar se há uma exceção esperada. O método falhará se não
lançar a exceção esperada especificada. Nesse caso, você está testando se o método
computeFactorial lança um IllegalArgumentException caso a variável de entrada
seja um número negativo (-5).
9. Adicione a seguinte println (exibida em negrito) para imprimir o texto sobre o teste
na janela Resultados dos testes JUnit.
10. public void testExpectedException() {
11. System.out.println("* UtilsJUnit3Test: test method 3 -
testExpectedException()");
try {
Desativando um teste
Agora que você escreveu os testes, poderá executar o teste e visualizar a saída do teste
na janela Resultados de testes JUnit.
Executando os testes
Quando você executa um teste JUnit, os resultados são exibidos na janela Resultados de
teste JUnit do IDE. Você pode executar classes de teste JUnit individuais ou selecionar
Executar > Testar PROJECT_NAME no menu principal para executar todos os testes do
projeto. Se você escolher Executar > Teste, o IDE executará todas as classes de teste na
pasta Pacotes de teste. Para executar uma classe de teste individual, clique com o botão
direito do mouse na classe de teste no nó Pacotes de teste e selecione Executar arquivo.
Quando você executar o teste, verá um dos resultados a seguir na janela Resultados de
testes JUnit.
Nesta imagem (clique na imagem para ampliá-la) você pode ver que o projeto foi
aprovado em todos os testes. O painel esquerdo exibe os resultados dos métodos de teste
individuais e o painel direito exibe a saída do teste. Se você observar na saída, poderá
verificar a ordem na qual os testes foram executados. A println adicionada a cada um
dos métodos de testes imprimiu o nome do teste na janela de saída. Você também pode
observar que na UtilJUnit3Test o método setUp foi executado antes de cada método
de teste, e o método tearDown foi executado depois de cada método.
Nesta imagem (clique na imagem para ampliá-la) você pode verificar que o projeto
falhou em um dos testes. O método testTimeout demorou muito tempo para ser
concluído e o thread de teste foi interrompido, causando a falha do teste. Ele levou mais
de 1000 milissegundos para calcular o fatorial do número gerado aleatoriamente
(22991).
A próxima etapa após a criação das classes de teste de unidades é criar suites de testes.
Consulte Criando suites de testes JUnit 3 para ver como executar os testes especificados
como um grupo, de modo que você não precise executar cada teste individualmente.
Você usará a criação de esqueletos de teste do IDE com base nas classes em seu projeto.
Na primeira vez em que você usar o IDE para criar esqueletos de teste, o IDE solicitará
que você escolha a versão da JUnit.
Se você já selecionou a JUnit 3.x como a versão padrão para seus testes, será necessário
alterar a versão padrão para JUnit 4.x. Para alterar a versão da JUnit padrão, clique com
o botão direito do mouse no nó Testar bibliotecas, selecione Adicionar biblioteca e
adicione as bibliotecas da JUnit 4 ao projeto. Ao criar um novo teste, selecione a versão
4.x quando surgir a solicitação para que você escolha a versão da JUnit. Ao selecionar a
JUnit 4.x, o IDE removerá as bibliotecas da JUnit 3.x desnecessárias. Você ainda pode
executar testes das JUnit 3, mas quaisquer novos testes criados usarão a JUnit 4.
Quando você alterar o nome da classe de teste, será exibido um aviso sobre a
alteração do nome. O nome padrão é baseado no nome da classe que você está
testando, com a palavra Teste agregada ao nome. Por exemplo, para a classe
MyClass.java, o nome padrão da classe de teste é MyClassTest.java.
Diferente da JUnit 3, na JUnit 4, o teste não precisa ser finalizado com a palavra
Teste. Normalmente, é melhor manter o nome padrão, porém, como você está
criando todos os testes da JUnit no mesmo pacote neste tutorial, os nomes das
classes de teste devem ser exclusivos.
4. Desmarque Inicializador de teste e Finalizador de teste. Clique em OK.
Quando você clicar em OK, o IDE criará um esqueleto de teste JUnit no diretório do
pacote de teste sample.
Você pode desmarcar Corpos de método padrão na caixa de diálogo Criar testes se não
quiser que os corpos do método sejam gerados para você.
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
É possível configurar os métodos que são gerados por padrão configurando as opções da
JUnit na janela Opções.
Neste exercício, você modificará cada um dos métodos de teste gerados para testar os
métodos usando o método assert da JUnit e para alterar os nomes dos métodos de
teste. Na JUnit 4 você tem maior flexibilidade ao nomear métodos de teste, pois os
métodos de teste são indicados pela anotação @Test e não exigem o prefixo test para
nomes de métodos de teste.
@Test
public void equalsCheck() {
System.out.println("* VectorsJUnit4Test: equalsCheck()");
}
Agora você criará os métodos de teste da JUnit para o Utils.java. Quando você criou
a classe de teste no exercício anterior, o IDE solicitou a versão da JUnit. Agora você é
solicitado a selecionar uma versão neste momento, pois já selecionou a versão da JUnit
e todos os testes subseqüentes da JUnit são criados nessa versão.
Você ainda pode escrever e executar testes da JUnit 3 se selecionar a JUnit 4 como a
versão, mas o IDE usa o modelo da JUnit 4 para a geração de esqueletos de teste.
1. Clique com o botão direito do mouse em Utils.java e selecione Ferramentas > Criar
testes JUnit.
2. Selecione Inicializador de teste e Finalizador de teste na caixa de diálogo, se estiverem
desmarcados.
3. Modifique o nome da classe de teste para UtilsJUnit4Test na caixa de diálogo Criar
testes. Clique em OK.
Neste exercício, você adicionará casos de teste que ilustram alguns elementos comuns
de teste da JUnit. Você também adicionará uma println aos métodos, pois alguns
métodos não imprimem saída alguma na janela Resultados do teste JUnit para indicar
que foram executados ou que o método passou no teste. Pela adição de uma println
aos métodos, você pode verificar se os métodos foram executados e em qual ordem.
Quando você criou a classe de teste para Utils.java, o IDE gerou métodos anotados
do inicializador e finalizador. Você pode escolher qualquer nome do método, pois não
há convenção de nomeação obrigatória.
Na JUnit 4, você pode usar anotações para marcar os tipos de métodos inicializador e
finalizador a seguir.
Inicializador da classe de teste. A anotação @BeforeClass marca um método como
um método de inicialização da classe de teste. Um método de inicialização de classe de
teste é executado somente uma vez, e antes de qualquer outro método na classe de
teste. Por exemplo, em vez de criar uma conexão de banco de dados em um
inicializador de teste e criar uma nova conexão antes de cada método de teste, você
pode usar um inicializador da classe de teste para abrir uma conexão antes de
executar os testes. Em seguida, é possível fechar a conexão com o finalizador da classe
de teste.
Finalizador da classe de teste. A anotação @AFterClass marca um método como um
método finalizador da classe de teste. Um método finalizador da classe de teste é
executado apenas uma vez e depois que todos os outros métodos na classe de teste
foram finalizados.
Inicializador de teste. A anotação @Before marca um método como um método de
inicialização de teste. Um método de inicialização de teste é executado antes de cada
caso de teste na classe de teste. Um método de inicialização de teste não é obrigatório
para executar os testes, mas se você precisar inicializar algumas variáveis antes de
executar um teste, você usará um método inicializador de teste.
Finalizador de teste. A anotação @After marca um método como um método
finalizador de teste. Um método finalizador de teste é executado depois de cada caso
de teste na classe de teste. Um método finalizador de teste não é obrigatório para
executar testes, mas você pode precisar de um finalizador para limpar eventuais dados
que foram necessários ao executar os casos de teste.
Faça as seguintes alterações (exibidas em negrito) para adicionar uma println aos
métodos inicializador e finalizador.
@BeforeClass
public static void setUpClass() throws Exception {
System.out.println("* UtilsJUnit4Test: @BeforeClass method");
}
@AfterClass
public static void tearDownClass() throws Exception {
System.out.println("* UtilsJUnit4Test: @AfterClass method");
}
@Before
public void setUp() {
System.out.println("* UtilsJUnit4Test: @Before method");
}
@After
public void tearDown() {
System.out.println("* UtilsJUnit4Test: @After method");
}
Quando você executa a classe de teste, o texto da println que você adicionou é exibido
no painel de saída da janela Resultados do teste JUnit. Se você não adicionar a println,
não haverá saída para indicar que os métodos inicializador e finalizador foram
executados.
Testando o uso de uma asserção simples
Este caso de teste simples testa o método concatWords. Em vez de usar o método de
teste gerado testConcatWords, você adicionará um novo método de teste chamado
helloWorldCheck, que usa uma única asserção simples para testar se o método
concatena as strings corretamente. O assertEquals no caso de teste usa a sintaxe
assertEquals(EXPECTED_RESULT, ACTUAL_RESULT) para testar se o resultado
esperado é igual ao resultado real. Nesse caso, se a entrada para o método concatWords
é "Hello", ", ", "world" e "!", o resultado esperado deve ser igual a "Hello,
world!".
6. Adicione uma declaração println para exibir o texto sobre o teste na janela
Resultados de testes JUnit.
7. @Test
8. public void helloWorldCheck() {
9. System.out.println("* UtilsJUnit4Test: test method 1 -
helloWorldCheck()");
assertEquals("Hello, world!", Utils.concatWords("Hello", ",
", "world", "!"));
Esse teste demonstra como verificar se um método está demorando muito tempo para
ser concluído. Se o método está demorando muito tempo, o thread de teste é
interrompido e o teste falha. Você pode especificar o limite de tempo no teste.
Você pode observar que o tempo de espera foi definido em 1000 milissegundos.
11. Adicione a seguinte println (exibida em negrito) para imprimir o texto sobre o teste
na janela Resultados dos testes JUnit.
12. @Test(timeout=1000)
13. public void testWithTimeout() {
14. System.out.println("* UtilsJUnit4Test: test method 2 -
testWithTimeout()");
15. final int factorialOf = 1 + (int) (30000 * Math.random());
16. System.out.println("computing " + factorialOf + '!');
Esse teste demonstra como testar se há uma exceção esperada. O método falhará se não
lançar a exceção esperada especificada. Nesse caso, você está testando se o método
computeFactorial lança um IllegalArgumentException caso a variável de entrada
seja um número negativo (-5).
11. Adicione a seguinte println (exibida em negrito) para imprimir o texto sobre o teste
na janela Resultados dos testes JUnit.
12. @Test (expected=IllegalArgumentException.class)
13. public void checkExpectedException() {
14. System.out.println("* UtilsJUnit4Test: test method 3 -
checkExpectedException()");
15. final int factorialOf = -5;
16. System.out.println(factorialOf + "! = " +
Utils.computeFactorial(factorialOf));
}
Compare: Testando a existência de uma exceção esperada (JUnit 3)
Desativando um teste
Agora que você escreveu os testes, pode executar o teste e verificar a saída do teste na
janela Resultados do teste JUnit.
Executando os testes
Nesta imagem (clique na imagem para ampliá-la) você pode notar que o IDE executou o
teste JUnit em Utils.java e que a classe passou em todos os testes. O painel esquerdo
exibe os resultados dos métodos de teste individuais e o painel direito exibe a saída do
teste. Se você observar na saída, poderá verificar a ordem na qual os testes foram
executados. A println adicionada a cada um dos métodos de testes imprimiu o nome
do teste na janela Resultados do teste e na janela Saída.
Quando você clica com o botão direito do mouse em um resultado do teste na janela
Resultados do teste, o menu suspenso permite escolher ir para o código-fonte de teste,
executar novamente o teste ou depurar o teste.
O próximo passo após a criação das classes de teste de unidades é criar suites de testes.
Consulte Criando suites de testes JUnit 4 para ver como executar os testes especificados
como um grupo, de modo que você não tenha que executar cada teste individualmente.
Uma suite de testes é basicamente uma classe com um método que chama os casos de
teste especificados, como as classes de teste específicas, os métodos de teste em classes
de teste e outros suites. Um suite de teste pode ser incluído como parte de uma classe de
teste, mas as práticas recomendadas aconselham a criar classes individuais de suites de
testes.
Você pode criar suites de teste JUnit 3 e JUnit 4 para seu projeto manualmente ou o IDE
pode gerar os suites para você. Quando você usa o IDE para gerar um suite de teste, por
padrão o IDE gera o código para invocar todas as classes de teste no mesmo pacote do
suite de teste. Depois que o suite de testes foi criado, você pode modificar a classe para
especificar os testes que deseja executar como parte desse suite.
Se você selecionou o JUnit 3 como a versão de seus testes, o IDE pode gerar suites de
teste JUnit 3 com base nas classes de testes no pacote de testes. Na JUnit 3 você
especifica as classes de teste a incluir no suite de testes criando uma instância do
TestSuite e usando o método addTest para cada teste.
Quando você clicar em Terminar, o IDE criará a classe do suite de testes no pacote
amostra e abrirá a classe no editor. O suite de testes conterá o código a seguir se o
pacote amostra contiver as classes de teste VectorsJUnit3Test.java e
Utils.JUnit3Test.java.
Se você selecionou a JUnit 4 para a versão de seus testes, o IDE pode gerar suites de
teste JUnit 4. A JUnit 4 é compatível com versões anteriores, portanto você pode
executar suites de testes JUnit 4 que contenham testes JUnit 4 ou JUnit 3. Nos suites de
teste JUnit 4, você especifica as classes de teste a incluir como valores da anotação
@Suite.
Para executar os suites de teste JUnit 3 como parte de um suite de teste JUnit 4 é
necessária a JUnit 4.4 ou superior.
1. Clique com o botão direito do mouse no nó do projeto na janela Projetos e escolha
Novo > Outro para abrir o assistente para Novo arquivo.
2. Selecione a categoria JUnit e o suite de testes. Clique em Próximo.
3. Insira JUnit4TestSuite como o nome de arquivo.
4. Selecione o pacote amostra para criar o suite de testes na pasta de amostras, contida
na pasta pacotes de testes.
5. Desmarque Inicializador de teste e Finalizador de teste. Clique em Terminar.
Quando você clicar em Terminar, o IDE criará a classe do suite de testes no pacote
amostra e abrirá a classe no editor. O suite de testes contém o código a seguir.
@RunWith(Suite.class)
@Suite.SuiteClasses(value={UtilsJUnit4Test.class,
VectorsJUnit4Test.class})
public class JUnit4TestSuite {
}
Você pode executar um suite de testes da mesma forma que executa qualquer classe de
teste individual.
Quando você executar o suite de testes, o IDE executará os testes incluídos no suite na
ordem em que foram apresentados. Os resultados são exibidos na janela Resultados do
teste JUnit.
Nessa imagem (clique na imagem para ampliá-la) você pode verificar os resultados de
um suite de testes JUnit 3. O suite de teste executou as classes de teste
UtilsJUnit3Test e VectorsJUnit3Test como um teste único e exibiu os resultados
no painel esquerdo como resultados de um só teste. A saída no painel direito é a mesma
de quando você executa o teste individualmente.
Nessa imagem (clique na imagem para ampliá-la) você pode verificar os resultados um
suite de testes JUnit 4. O suite de teste executou as classes de teste UtilsJUnit4Test e
VectorsJUnit4Test como um teste único e exibiu os resultados no painel esquerdo
como resultados de um só teste. A saída no painel direito é a mesma de quando você
executa o teste individualmente.
Nessa imagem (clique na imagem para ampliá-la) você pode verificar os resultados de
um suite de testes mistos. O suite de teste inclui a JUnit 4 e uma das classes de teste
JUnit 3. O suite de testes executou as classes de teste UtilsJUnit3Test.java e
JUnit4TestSuite.java como um único teste e exibiu os resultados no painel esquerdo
como resultados de um só teste. A saída no painel direito é a mesma obtida com a
execução do teste individualmente.
Resumo
Este tutorial foi uma introdução básica à criação de testes de unidades JUnit e suites de
testes no NetBeans IDE. O IDE suporta o JUnit 3 e o JUnit 4, e este documento
demonstrou algumas das alterações introduzidas no JUnit 4, que são projetadas para
tornar mais simples a criação e a execução de testes.
Para obter mais informações sobre o uso do JUnit e outras alterações introduzidas no
JUnit4, consulte os seguintes recursos:
O teste do código geralmente ajuda a garantir que pequenas alterações feitas no código
não interrompam o aplicativo. As ferramentas de testes automatizadas como a JUnit
simplificam o processo de teste e, além disso, a execução freqüente de testes pode
ajudar a encontrar erros precocemente.
Este tutorial usa dois projetos de amostra para demonstrar como trabalhar com a janela
Depuração. Para concluir este tutorial, primeiro faça o download e abra os projetos
Gallery e Deadlock.
Conteúdo
Para seguir este tutorial, você precisa dos seguintes recursos e softwares.
Software ou recurso Versão necessária
versão 6 ou
Java Development Kit (JDK)
versão 5
Abrindo os projetos
Neste tutorial você usará dois aplicativos para demonstrar o suporte do IDE para a
depuração de aplicativos multithreaded. Neste exercício, você abrirá e executará os dois
projetos no IDE. Depois de executar os projetos, será necessário depurar cada um deles.
Quando você clicar em Abrir, o IDE abrirá e exibirá o projeto na janela Projetos.
Se você expandir o nó do projeto na janela Projetos, poderá observar que o
projeto é um aplicativo Java Swing simples.
4. Clique com o botão direito do mouse no nó do projeto e escolha Executar para iniciar
o aplicativo Gallery.
5. No aplicativo Gallery, clique em "Mais" para adicionar imagens e clique em "Menos"
para remover imagens.
O projeto Gallery é um aplicativo multithreaded simples que você irá depurar neste
tutorial.
Quando você clicar em Abrir, o IDE abrirá e exibirá o projeto na janela Projetos.
Se você expandir o nó do projeto na janela Projetos, observará que o projeto é
um aplicativo Java simples.
3. Clique com o botão direito do mouse no nó do projeto e escolha Executar para iniciar
o aplicativo Deadlock.
Quando você clica em Run, a janela Saída abre e exibe a saída a seguir.
executar:
Aplicativo iniciado
MyThread2 concluído com êxito.
MyThread1 concluído com êxito.
O projeto Deadlock é um aplicativo Java simples com dois threads. Quando você
depurar o aplicativo, criará um impasse para ilustrar como o IDE pode ajudá-lo a
detectar impasses.
Suspendendo threads
1. Clique com o botão direito do mouse no projeto Gallery na janela Projetos e escolha
Depurar.
Se você observar a janela Depuração, poderá verificar que um novo thread foi
iniciado para cada animação.
A janela Depuração permite que você veja rapidamente e altere o status dos threads na
sessão. Por padrão, a janela Depuração exibe os botões Retomar e Suspender no lado
direito da janela. É possível ocultar os botões e personalizar ainda mais a exibição da
janela Depuração usando a barra de ferramentas na parte inferior da janela Depuração.
Se você estiver executando várias sessões de depuração, poderá usar a lista suspensa na
parte superior da janela Depuração para escolher qual sessão será exibida na janela.
Alternando threads
Este exercício demonstra o que acontece quando você está avançando passo a passo no
aplicativo e um thread diferente do aplicativo atinge um ponto de interrupção. Neste
exercício você definirá um ponto de interrupção do método e iniciará o passo a passo no
aplicativo. Enquanto estiver avançando passo a passo no aplicativo, você iniciará um
novo thread que também atingirá o ponto de interrupção. O IDE informa quando isso
ocorre, exibindo uma notificação na janela Depuração. Em seguida, você irá alternar
entre os threads.
5. Clique em "Mais" no aplicativo Gallery para iniciar um novo thread que atingirá o
ponto de interrupção do método.
7. Clique em Passar sobre algumas vezes para avançar passo a passo pelo novo thread
atual (Thread_Roman).
8. Clique com o botão direito do mouse na anotação "thread suspenso" na margem do
editor e escolha Definir como thread atual > Thread_Jirka para voltar ao thread
suspenso.
Quando você voltar para o Thread_Jirka, a anotação do thread suspenso será exibida ao
lado da linha onde o Thread_Roman foi suspenso. Você pode retomar o Thread_Roman
clicando em Retomar, na janela Depuração.
A janela Depuração permite que você veja e controle com muita precisão os estados dos
threads. O depurador gerencia os threads do aplicativo para simplificar o fluxo de
trabalho de depuração e para evitar que o processo de depuração crie impasses. Neste
exercício, você observou o seguinte comportamento durante a depuração de um
aplicativo no IDE.
Você pode sair do aplicativo Gallery. No próximo exercício, você irá depurar o
aplicativo Deadlock e usará o IDE para ajudar a detectar o impasse.
Detectando impasses
Este tutorial foi uma introdução básica a alguns dos recursos de depuração do IDE. A
janela Depuração permite que você suspenda e retome facilmente os threads ao depurar
um aplicativo. Isso pode ser extremamente útil quando você estiver depurando
aplicativos multithreaded.
Maven