// 
//     Licensed to the Apache Software Foundation (ASF) under one
//     or more contributor license agreements.  See the NOTICE file
//     distributed with this work for additional information
//     regarding copyright ownership.  The ASF licenses this file
//     to you under the Apache License, Version 2.0 (the
//     "License"); you may not use this file except in compliance
//     with the License.  You may obtain a copy of the License at
// 
//       http://www.apache.org/licenses/LICENSE-2.0
// 
//     Unless required by applicable law or agreed to in writing,
//     software distributed under the License is distributed on an
//     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
//     KIND, either express or implied.  See the License for the
//     specific language governing permissions and limitations
//     under the License.
//

= Adicionando Testes de Unidade a um Projeto C - Tutorial do NetBeans IDE
:jbake-type: tutorial
:jbake-tags: tutorials 
:jbake-status: published
:icons: font
:syntax: true
:source-highlighter: pygments
:toc: left
:toc-title:
:description: Adicionando Testes de Unidade a um Projeto C - Tutorial do NetBeans IDE - Apache NetBeans
:keywords: Apache NetBeans, Tutorials, Adicionando Testes de Unidade a um Projeto C - Tutorial do NetBeans IDE

_Colaboração de link:mailto:susanm@netbeans.org[+_Susan Morgan_+] 
Março de 2014_ [Número da revisão: V8.0-1]



== Requisitos

*Para seguir este tutorial, você precisa do software a seguir.*

|===
|Software |Versão Necessária 

|NetBeans IDE (incluindo o suporte ao C/C++/Fortran) |link:https://netbeans.org/downloads/index.html[+versão 7.4 ou 8.0 do NetBeans com o plug-in C/C+++] 

|Java Development Kit (JDK) |link:http://www.oracle.com/technetwork/java/javase/downloads/index.html[+Versão 7 ou 8+] 

|Framework de teste CUnit 2.1 |link:http://sourceforge.net/projects/cunit/[+Projetok de Framework de Teste de C Unit no sourceforge.+] 
|===


Consulte link:../../../community/releases/80/install.html[+Instruções de Instalação do NetBeans IDE+] e link:../../../community/releases/80/cpp-setup-instructions.html[+Configurando o NetBeans IDE para C/C++/Fortran+]
para obter informações sobre o download e a instalação do software NetBeans exigido.


== Introdução

O NetBeans IDE com o plug-in C/C++/Fortran suporta os testes da unidade nos projetos C/C++. Você pode executar o IDE para criar, executar, depurar e exibir resultados em seus testes C e C++. Este artigo mostra como usar testes da unidade no IDE com seus projetos C/C++.

Um projeto gerenciado é criado com uma pasta lógica chamada Arquivos de Teste, na qual você pode gerenciar testes da unidade para o projeto. Você pode criar testes diretamente nesta pasta Arquivos de Teste ou organizá-los em subpastas lógicas. Um nó de teste na pasta Arquivos de Teste é uma pasta especial com ações relacionadas ao teste. Quando um teste for criado, ele excluirá o arquivo principal do projeto e usará todas as outras definições do projeto.

O IDE suporta só CUnit, CppUnit e seu próprio formato de saída "simples", o que significa que seus testes devem produzir a saída de um desses tipos de testes. O IDE fornece modelos para testes de unidade:

* Teste simples C
* Teste simples C++
* Teste CUnit
* Teste CppUnit
* Executor de teste de CppUnit

Este tutorial usa o framework de teste CUnit e os Testes Simples de NetBeans C no Ubuntu Linux, mas as técnicas demonstradas também podem ajudar você com outros tipos de testes em outras plataformas. O tutorial não explica os frameworks de teste CUnit ou CppUnit. Você precisa consultar a documentação desses frameworks para obter informações sobre como usá-los.


== Instalar o Framework de Teste CUnit

Para seguir este tutorial, primeiro você deve instalar CUnit em seu sistema. Consulte mais informações sobre o framework de CUnit em link:http://sourceforge.net/projects/cunit/[+Projeto de Framework de Teste de C Unit no sourceforge.+]

A documentação do CUnit está incluída no download de CUnit, ou você pode exibi-la em link:http://cunit.sourceforge.net/doc/index.html[+http://cunit.sourceforge.net/doc/index.html+].

Consulte a seção apropriada para obter instruções de instalação para sua plataforma:

* <<linux,Como Instalar CUnit no Linux ou no Mac OS>>
* <<solaris,Como Instalar CUnit no Oracle Solaris 11>>
* <<mingw,Como Instalar CUnit no Windows e no MinGW>>
* <<cygwin,Como Instalar CUnit no Windows e no Cygwin>>


=== Como Instalar CUnit no Linux ou no Mac OS

Em sistema Linux, você deve estar apto a instalar os pacotes libcunitl, libcunitl-doc e libcunitl-dev de seu repositório de pacote.

No Mac OS ou no Linux, se os pacotes libcunitl* não estiverem disponíveis, é possível fazer download da origem de CUnit e criá-la, conforme descrito aqui.

As instruções abaixo consideram que você fez download do arquivo CUnit-2.1-2-src.tar.bz2 no diretório /tmp. Se seu arquivo de download tiver um nome diferente, certifique-se de especificar seu arquivo de download de CUnit e o diretório real no qual você o salvou.

1. Faça download da origem CUnit-2.1-2-src.tar.bz2 da link:http://sourceforge.net/projects/cunit/files[+página de arquivos de CUnit+] e salve no diretório temporário, com /tmp, por exemplo.
2. Em uma janela do terminal, descompacte o arquivo  ``CUnit-2.1-2-src.tar.bz2``  como segue:

[source,shell]
----

$ cd /tmp
$ bunzip2 CUnit-2.1-2-src.tar.bz2
$ tar -xvf CUnit-2.1-2-src.tar
----

[start=3]
. Configure, crie e instale CUinit de /tmp, como segue:

[source,shell]
----

$ cd CUnit-2.1-2
$ ./configure --prefix=/usr
$ make
$ sudo make install
----

Quando 'make install' termina, o framework de teste CUnit está pronto para uso no IDE e você pode continuar a <<project,Criar o Projeto para o Tutorial>>.


[[solaris]]
=== Como Instalar CUnit no Oracle Solaris 11

Você deve criar CUnit com o link:http://en.wikipedia.org/wiki/GNU_build_system[+sistema de build de GNU+] antes de usar os testes de CUnit. Nos sistemas Oracle Solaris 11, o sistema de build de GNU geralmente não é instalado por default. Você pode obter os componentes do sistema build de GNU do repositório de pacotes do Oracle Solaris 11 com os seguintes comandos:


[source,java]
----

pkg install pkg://solaris/developer/build/gnu-make
pkg install pkg://solaris/developer/build/make
pkg install pkg://solaris/developer/gcc-45
pkg install pkg://solaris/system/header
pkg install pkg://solaris/developer/build/autoconf
pkg install pkg://solaris/developer/build/automake-110
----

As instruções abaixo consideram que você fez download do arquivo CUnit-2.1-2-src.tar.bz2 no diretório /tmp. Se seu arquivo de download tiver um nome diferente, certifique-se de especificar seu arquivo de download de CUnit e o diretório real no qual você o salvou.

1. Faça download da origem CUnit-2.1-2-src.tar.bz2 da link:http://sourceforge.net/projects/cunit/files[+página de arquivos de CUnit+] e salve no diretório temporário, com /tmp, por exemplo.
2. Em uma janela do terminal, descompacte o arquivo  ``CUnit-2.1-2-src.tar.bz2``  como segue:

[source,shell]
----

$ cd /tmp
$ bunzip2 CUnit-2.1-2-src.tar.bz2
$ tar -xvf CUnit-2.1-2-src.tar
----

[start=3]
. Configure, crie e instale CUinit de /tmp, como segue:

[source,shell]
----

$ cd CUnit-2.1-2
$ ./configure --prefix=/usr
$ make
$ make install
----

Quando 'make install' termina, o framework de teste CUnit está pronto para uso no IDE e você pode continuar a <<project,Criar o Projeto para o Tutorial>>.


=== Como Instalar CUnit no Windows e no MinGW

Estas instruções consideram que você fez download do arquivo CUnit-2.1-2-src.tar.bz2 para o diretório C:/distr. Se seu arquivo de download tiver um nome diferente, certifique-se de especificar seu arquivo de download de CUnit e o diretório real no qual você o salvou.

1. Faça download da origem CUnit-2.1-2-src.tar.bz2 da link:http://sourceforge.net/projects/cunit/files[+página de arquivos de CUnit+] e salve no diretório temporário, como o C:/distr, por exemplo.
2. Inicie a aplicação MinGW shell no Windows, escolhendo Iniciar > Todos os Programas > MinGW > MinGW Shell.
3. Em uma janela do MinGW Shell, descompacte o arquivo  ``CUnit-2.1-2-src.tar.bz2``  como segue:

[source,shell]
----

$ cd c:/distr
$ bunzip2.exe CUnit-2.1-2-src.tar.bz2
$ tar xvf CUnit-2.1-2-src.tar
$ cd ./CUnit-2.1-2
----

[start=4]
. Localize o caminho do Unix para MinGW usando o comando mount.

[source,shell]
----

$ mount
----
Você verá uma saída semelhante à seguinte:

[source,java]
----

C:\Users\username\AppData\Local\Temp on /tmp type user (binmode,noumount)
C:\MinGW\msys\1.0 on /usr type user (binmode,noumount)
C:\MinGW\msys\1.0 on / type user (binmode,noumount)
*C:\MinGW on /mingw type user (binmode)*
----
A última linha em negrito acima mostra que o caminho UNIX é /mingw. Seu sistema pode reportar algo diferente, então anote porque talvez você precise especificar o caminho no próximo comando.

[start=5]
. Configure o Makefile com o seguinte comando. 
Se seu MinGW não estiver em /mingw, certifique-se de especificar a localização de Unix apropriada de seu MinGW com a opção --prefix=.

[source,shell]
----

$ ./configure --prefix=/mingw
_(lots of output about checking and configuring)
..._
config.status: executing depfiles commands
config.status: executing libtool commands

----

[start=6]
. Crie a biblioteca para CUnit:

[source,shell]
----

$ make
make all-recursive
make[1]: Entering directory 'c/distr/CUnit-2.1-2'
Making all in CUnit
...
_(lots of other output)_
make[1]: Leaving directory 'c/distr/CUnit-2.1-2'
$
----

[start=7]
. Instale a biblioteca CUnit em C:/MinGW/include/CUnit, C:/MinGW/share/CUnit e C:/MinGW/doc/CUnit executando make install:

[source,shell]
----

$ make install
Making install in CUnit
make[1]: Entering directory 'c/distr/CUnit-2.1-2/CUnit'
Making install in Sources
make[1]: Entering directory 'c/distr/CUnit-2.1-2/Cunit/Sources'
...
 _(lots of other output)_
make[1]: Leaving directory 'c/distr/CUnit-2.1-2'
$
----

[start=8]
. Se usar a atualização 21, 25 ou 40 de Java execute a seguinte solução em decorrência do link:https://netbeans.org/bugzilla/show_bug.cgi?id=236867[+problema 236867+] para obter CUnit e este tuturial funcionar.

1. Vá para Ferramentas > Opções > C/C++ > Ferramentas de Construção e selecione o conjunto de ferramentas MinGW.
2. Altere a entrada do Comando Make para make.exe sem um caminho completo.
3. Saia do IDE.
4. No Windows 7 e superior, digite *var* na caixa de pesquisa do menu Iniciar para localizar rapidamente um link para Editar as variáveis do ambiente do sistema.
5. Selecione a guia Avançado e clique em Variáveis de Ambiente.
6. No painel Variáveis do Sistema da caixa de diálogo Variáveis do Ambiente, clique em Novo.
7. Defina o Nome da Variável para MAKE e o Valor da Variável para make.exe.
8. Clique em OK em cada caixa de diálogo para salvar a alteração.
9. Inicie o IDE e continue na próxima seção.

Quando 'make install' termina, seu CUnit está pronto para uso no IDE e você pode continuar a <<project,Criar o Projeto para o Tutorial>>.


=== Como Instalar CUnit no Windows e no Cygwin

No Cygwin você pode instalar o CUnit usando o instalador Cygwin padrão, setup-x86.exe ou setup-x86_64.exe, disponível em http://cygwin.com/install.html. O pacote CUnit está localizado na categoria "Libs" e você pode instalá-lo da mesma forma que instala os outros pacotes.

Certifique-se de usar a versão correta. Use Cygwin e CUnit de 64 bits se estiver executando o NetBeans IDE de 64 bits.

Se você ainda não instalou o Cygwin, consulte as informações gerais de instalação dele em link:../../../community/releases/80/cpp-setup-instructions.html#cygwin[+Configurando o NetBeans IDE 7.4 para C/C++/Fortran+]. Você pode instalar CUnit, selecionando-o na categoria Libs no programa de instalação.


== Criar o Projeto para o Tutorial

Para explorar as funcionalidades de teste da unidade, primeiro você deve criar uma nova aplicação C:

1. Escolha Arquivo > Novo Projeto.
2. No assistente do projeto, clique em C/C++ e, em seguida, selecione a Aplicação C/C++.
3. Na caixa de diálogo Nova Aplicação C/C++, selecione Criar Arquivo Principal e selecione a linguagem C. Aceite os defaults para todas as outras opções.
image::images/c-unit-new-project.png[]

[start=4]
. Clique em Finalizar e o projeto Cpp_Application__x_ será criado.

[start=5]
. Na janela Projetos, abra a pasta Arquivos de Origem e clique duas vezes no arquivo `main.c` para abri-lo no editor. O conteúdo do arquivo é semelhante ao mostrado aqui:
image::images/c-unit-mainc-initial.png[]

[start=6]
. Para fornecer algo para o programa fazer, substitua o código no arquivo `main.c` pelo seguinte código para criar uma calculadora fatorial simples:

[source,c]
----

#include <stdio.h>
#include <stdlib.h>

long factorial(int arg) {
    long result = 1;
    int i;
    for (i = 2; i <= arg; ++i) {
        result *= i;
     }
    return result;
}

int main(int argc, char** argv) {
    printf("Type an integer and press Enter to calculate the integer's factorial: \n");
    int arg;
    fflush(stdout);
    scanf("%d", &amp;arg);
    
    printf("factorial(%d) = %ld\n", arg, factorial(arg));

    return (EXIT_SUCCESS);
}
 
----

O arquivo deve parecer com o seguinte após a edição:

image::images/c-unit-mainc-edited.png[]

[start=7]
. Salve o arquivo pressionando Ctrl+S.

[start=8]
. Construa e execute o projeto para certificar-se de que ele funciona, clicando no botão Executar na barra de ferramentas IDE.
A saída deve ser semelhante ao seguinte, se você inserir 8 como inteiro:
image::images/c-unit-output-factorial.png[]

Pode ser necessário pressionar Enter duas vezes em algumas plataformas.


== Adicionar Testes de CUnit ao Projeto Gerenciado do NetBeans

Quando estiver desenvolvendo uma aplicação, é conveniente adicionar unidades de teste como parte de seu processo de desenvolvimento.

Cada teste deve conter uma função `principal` e gerar um executável.

1. Na janela Projetos, clique com o botão direito do mouse no arquivo de origem `main.c` e selecione Criar Teste > Novo Teste CUnit.
image::images/c-unit-create-test.png[]

Um assistente é aberto para ajudá-lo a criar o teste.


[start=2]
. Na janela Selecionar Elementos do assistente, clique na caixa de seleção da função `principal`. Isso faz com que todas as funções dentro da `principal` também sejam selecionadas. Neste programa, há só uma outra função, `factorial()`.

[start=3]
. Clique em Próximo.

[start=4]
. Mantenha o nome default Novo Teste CUnit e clique em Finalizar.

O nó Novo Teste CUnit é exibido na pasta Arquivos de Teste.

A pasta Novo Teste CUnit contém os arquivos do modelo para o teste. Você pode adicionar novos arquivos à pasta da mesma forma que você adiciona arquivos em um projeto, clicando com o botão direito do mouse na pasta.

[start=5]
. Expanda a pasta Novo Teste CUnit e veja se ela contém um arquivo `newcunittest.c` que deve ser aberto no editor de origem.

[start=6]
. No arquivo `newcunittest.c`, observe a instrução `#include "CUnit/Basic.h"` para acessar a biblioteca CUnit. O arquivo `newcunittest.c` contém uma função de teste gerada automaticamente, `testFactorial`, para a função `factorial()` de `main.c`.

image::images/c-unit-includes.png[]

Se o IDE não encontrou o arquivo `CUnit/Basic.h`, você pode editar o caminho de inclusão para apontar para o local correto. Por exemplo, se você instalou CUnit no Windows para `C:\Tools\CUnit-2.1-2` você edita o caminho para: 

`#include <C:\Tools\CUnit-2.1-2\CUnit\Headers\Basic.h>`

O teste gerado é um stub que você deve editar para criar testes úteis, mas o teste gerado pode ser executado com sucesso, mesmo sem edição.


== Executar o Teste de C Unit

O IDE oferece algumas forma de executar testes. Você pode clicar com o botão direito do mouse no nó do projeto ou na pasta Arquivos de Teste, ou em uma subpasta de teste e selecionar Teste. Você também pode usar a barra de menus e selecionar Executar > Testar Projeto ou pressionar Alt+F6.

1. Execute o teste clicando com o botão direito do mouse na pasta Teste CUnit e selecionando Teste.

O IDE abre uma nova janela Resultados de Teste e você deverá ver uma saída semelhante à seguinte, que mostrará se o teste falhar.

Caso não veja a janela Resultados do Teste, abra-a escolhendo Janela > Ferramentas IDE > Resultados de Teste, ou pressionando Alt+Shift+R.

image::images/c-unit-run-test-orig.png[]

[start=2]
. Observe que a janela Resultados do Teste é dividida em dois painéis. 
O painel direito exibe a saída da console dos testes. O painel esquerdo exibe um resumo de testes com falha e aprovados e a descrição de testes com falha.

[start=3]
. Na janela Resultados do Teste, clique duas vezes no nó `testFactorial causou um ERRO` para ir direto para a função `testFactorial` no editor de origem. 
Se observar a função você verificará que ela não testa nada, mas simplesmente afirma que o teste da unidade falhou, definindo CU_ASSERT(0). A condição é avaliada como 0 que é equivalente a FALSO, dessa forma, o framework CUnit interpreta isso como uma falha de teste.

[start=4]
. Altere a linha CU_ASSERT(0) para CU_ASSERT(1) e salve o arquivo (Ctrl+S).

[start=5]
. Execute o teste novamente clicando com o botão direito na pasta Novo Teste CUnit e selecionando Testar.
A janela Resultados do Teste deve indicar que o teste foi aprovado.
image::images/c-unit-run-test-pass.png[]


== Adicionar Outro Teste CUnit

1. Crie um modelo de teste CUnit genérico clicando com o botão direito na pasta Arquivos de Teste e selecionando Novo Teste CUnit.
image::images/c-unit-new-cunit-test.png[]

[start=2]
. Chame o teste Meu Teste CUnit e o nome do arquivo de teste `mycunittest` e clique em Finalizar.
image::images/c-unit-create-mycunittest.png[]

[start=3]
. Uma nova pasta de teste chamada Meu Teste CUnit foi criada e contém um arquivo `mycunittest.c` que é aberto no editor.

[start=4]
. Examine o arquivo de teste `mycunittest.c` e veja se ele contém dois testes. O teste1 passará porque foi avaliado como VERDADEIRO, e o teste2 falhará porque foi avaliado como FALSO, pois 2*2 não é igual a 5.

[source,java]
----

void test1()
{
CU_ASSERT(2*2 == 4);
}
void test2()
{
CU_ASSERT(2*2 == 5);
}    
----

[start=5]
. Execute o teste como antes e você deverá ver:
image::images/c-unit-run-mytest1.png[]

[start=6]
. Execute todos os testes do menu principal IDE selecionando Executar > Testar Projeto (Cpp_Application__x_) e veja quais conjuntos de testes foram executados e exiba o êxito e a falha na janela Resultados do Teste.

[start=7]
. Passe o mouse sobre o teste com falha para ver mais informações sobre a falha.
image::images/c-unit-test-fail-annotation.png[]

[start=8]
. Clique nos botões na margem esquerda da janela Resultados do Teste para mostrar e ocultar os testes que passaram ou falharam.


== Depurar Meu Teste CUnit

Você pode depurar os testes usando as mesmas técnicas que usa para depurar seus arquivos de origem do projeto, conforme descrito no link:https://netbeans.org/kb/docs/cnd/debugging.html[+Tutorial Depurando Projetos C/C+++].

1. Na janela Projetos, clique com o botão direito na pasta Meu Teste CUnit e selecione Teste Step Into.

Também é possível executar o depurador clicando com o botão direito no teste na janela Resultados do Teste e selecionando Depurar.


A barra de ferramentas do depurador será exibida.

[start=2]
. Clique no botão Step Into para executar a instrução de um programa cada vez que clicar no botão
image::images/c-unit-debug-icons.png[]

[start=3]
. Abra a janela Pilha de Chamada selecionando Janela > Depurando > Pilha de Chamada, assim você pode verificar as chamadas de função, conforme percorre pelo teste.


== Adicionar um Teste Simples

O teste simples C usa o próprio framework de teste simples do IDE. Você não precisa fazer download de nenhum framework de teste para usar os testes simples.

1. Na janela Projetos, clique com o botão direito do mouse no arquivo de origem  ``main.c``  e selecione Criar Teste > Novo Teste Simples C.
image::images/c-unit-mainc-new-simple-test.png[]

[start=2]
. Na janela Selecionar Elementos do assistente, clique na caixa de seleção da função  ``main`` , em seguida, clique em Próximo.
image::images/c-unit-mainc-new-simple-test-select.png[]

[start=3]
. Na janela Nome e Local, mantenha o nome default Novo Teste Simples C e clique em Finalizar.

O nó Novo Teste Simples C é exibido na pasta Testar Arquivos.


[start=4]
. Expanda a pasta Novo Teste Simples C e veja se ela contém um arquivo `newsimpletest.c`. Este arquivo deve ser aberto no editor de código-fonte.
image::images/c-unit-mainc-new-simple-test-folder.png[]

[start=5]
. Observe que o arquivo `newsimpletest.c` contém uma função de teste gerada automaticamente, `testFactorial`, para a função `factorial()` de `main.c`, como no teste CUnit.
image::images/c-unit-mainc-new-simple-test-code.png[]

A instrução  ``if``  deve testar uma condição que, se verdadeira, indica que o teste falhou. O token  ``%%TEST_FAILED%%`` aciona a exibição do indicador gráfico de falhas de teste na janela Resultados do Teste. A instrução  ``if``  no teste gerado defina a condição como verdadeira, definindo-a como 1, dessa forma o teste sempre falha quando você executá-lo sem modificação.

Os outros tokens na função  ``main`` , como  ``%%TEST_STARTED%%``  e  ``%%TEST_FINISHED%%``  são para ajudar a ler a saída da linha de comandos ao executar os testes.

A opção  ``time=0``  é usada para adicionar a medição de tempo ao teste.

A opção  ``message``  permite que você imprima um teste sobre a falha no teste.


[start=6]
. Execute o teste para ver se ele gera uma falha mostrada na janela Resultados do Teste.

Em seguida, você edita o arquivo de teste para ver os testes aprovados.


== Editar o Teste Simples C

1. Copie e cole uma nova função abaixo da função `testFactorial`. 
A nova função é:

[source,java]
----

void testNew() {
    int arg = 8;
    long result = factorial(arg);
    if(result != 40320) {
        printf("%%TEST_FAILED%% time=0 testname=testNew (newsimpletest) message=Error calculating %d factorial.\n", arg);
    }
}
----

A função `main` também deve ser modificada para chamar a nova função de teste.


[start=2]
. Na função `main`, copie as linhas:

[source,java]
----

printf("%%TEST_STARTED%%  testFactorial (newsimpletest)\n");
    testFactorial();
    printf("%%TEST_FINISHED%% time=0 testFactorial (newsimpletest)\n");
    
----

[start=3]
. Cole as linhas logo abaixo das linhas copiadas e altere o nome `testFactorial` para `testNew` nas linhas coladas. Há três ocorrências que precisam ser alteradas. 
O arquivo concluído `newsimpletest.c` deve parecer com o seguinte:

[source,c]
----

#include <stdio.h>
#include <stdlib.h>

/*
 * Simple C Test Suite
 */

long factorial(int arg);

void testFactorial() {
    int arg;
    long result = factorial(arg);
    if(1 /*check result*/) {
        printf("%%TEST_FAILED%% time=0 testname=testFactorial (newsimpletest) message=When value is 1 this statement is executed.\n");
    }
}


void testNew() {
    int arg = 8;
    long result = factorial(arg);
    if(result != 40320) {
        printf("%%TEST_FAILED%% time=0 testname=testNew (newsimpletest) message=Error calculating %d factorial.\n", arg);
    }
}


int main(int argc, char** argv) {
    printf("%%SUITE_STARTING%% newsimpletest\n");
    printf("%%SUITE_STARTED%%\n");

    printf("%%TEST_STARTED%%  testFactorial (newsimpletest)\n");
    testFactorial();
    printf("%%TEST_FINISHED%% time=0 testFactorial (newsimpletest)\n");

    printf("%%TEST_STARTED%%  testNew (newsimpletest)\n");
    testNew();
    printf("%%TEST_FINISHED%% time=0 testNew (newsimpletest)\n");

    printf("%%SUITE_FINISHED%% time=0\n");

    return (EXIT_SUCCESS);
}


----

[start=4]
. Na janela Projetos, execute o teste clicando com o botão direito do mouse em Novo Teste Simples C e escolhendo Testar. 
Os Resultados do Teste devem parecer com o seguinte:
image::images/c-unit-simpletest-results.png[]

Se você não vir testNew aprovado, clique no botão de verificação verde na margem esquerda da janela Resultados do Teste para exibir os testes que foram aprovados.

O token %%TEST_FAILED%% aciona a exibição de uma falha de teste na janela Resultados do Teste. A instrução if testa uma condição; caso não seja verdadeira, o teste falhará.

O token %%SUITE_STARTING%% e outros semelhantes não serão mostrados na saída no IDE. São usadas para a saída da console.


== Executar Testes da Linha de Comandos

Você pode criar testes na linha de comandos fora do IDE com `make build-tests` e executá-los com `make test`. Quando os projetos estão em ~/NetBeansProjects/Cpp_Application__x_ em um sistema Linux, os exemplos deste artigo devem ser criados e executados, conforme abaixo.

1. Abra uma janela terminal no IDE, selecionando Janela > Saída e clicando no botão Terminal na margem esquerda da janela de Saída. Será aberta uma janela terminal no diretório de trabalho do projeto atual.
2. No terminal, digite os comandos mostrados em negrito:

[source,java]
----

 *make test*
----

A saída de criação e execução do teste deve parecer com a seguinte. Observe que a saída `make` foi deletada.


[source,java]
----

"make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/home/tester/NetBeansProjects/CppApplication_1'
"make"  -f nbproject/Makefile-Debug.mk dist/Debug/GNU-Linux-x86/cppapplication_1
make[2]: Entering directory `/home/tester/NetBeansProjects/CppApplication_1'
make[2]: `dist/Debug/GNU-Linux-x86/cppapplication_1' is up to date.
...

     CUnit - A Unit testing framework for C - Version 2.1-2
     http://cunit.sourceforge.net/


Suite: mycunittest
  Test: test1 ... passed
  Test: test2 ... FAILED
    1. tests/mycunittest.c:33  - 2*2 == 5
  Test: test3 ... passed

--Run Summary: Type      Total     Ran  Passed  Failed
               suites        1       1     n/a       0
               tests         3       3       2       1
               asserts       3       3       2       1
%SUITE_STARTING% newsimpletest
%SUITE_STARTED%
%TEST_STARTED%  testFactorial (newsimpletest)
%TEST_FAILED% time=0 testname=testFactorial (newsimpletest) message=error message sample
%TEST_FINISHED% time=0 testFactorial (newsimpletest)
%SUITE_FINISHED% time=0


     CUnit - A Unit testing framework for C - Version 2.1-2
     http://cunit.sourceforge.net/


Suite: newcunittest
  Test: testFactorial ... passed

--Run Summary: Type      Total     Ran  Passed  Failed
               suites        1       1     n/a       0
               tests         1       1       1       0
               asserts       1       1       1       0
make[1]: Leaving directory `/home/tester/NetBeansProjects/CppApplication_1'

    
----


== Adicionando Suporte para Outros Frameworks de Teste

Você pode adicionar suporte ao seu framework de tese C/C++ favorito, criando um módulo do NetBeans. Consulte o link:http://wiki.netbeans.org/CND69UnitTestsPluginTutotial[+Tutorial de Plug-in de Teste da Unidade C/C +++] no wiki do NetBeans.

link:mailto:users@cnd.netbeans.org?subject=Feedback:%20Adding%20Unit%20Tests%20to%20a%20C/C++%20Project%20-%20NetBeans%20IDE%207.4%20Tutorial[+Enviar Feedback neste Tutorial+]


