Coding Dojo Floripa

Desenvolvimento Ágil

CppUnit e o Borland C++ Builder 6

Posted by Victor Hugo Germano em Quinta-feira, Setembro 6, 2007

Post originalmente inserido em A Maldita Comédia, com o mesmo título. Segue a transcrição do post, que achei bastante pertinente inserir no CodingDojoFloripa.

Bem, como vocês já sabem, estou em uma nova empresa, a Audaces. Em princípio trabalharei com integração contínua, e estou no momento fazendo testes com o ambiente da Borland. É um mundo completamente novo para mim, e estou bastante animado com os resultados! C++!! Segue abaixo um pequeno(e simples) tutorial sobre como iniciar seus testes utilizando Borland C++ Builder 6.

Configuracao de ambiente para testes utilizando o CPPUnit e Borland C++ Builder 6 (BCB6)

Referências:

Requisitos:

Instalação

Será apresentada a utilização do cppUnit para o C Builder através da criação de uma aplicação simples. Seguem os passos para tal:

1. Descompactar CPPUnitBCB6 (Ex: C:\CPPUnitBCB6)

2. Iniciar um projeto novo no BCB (File> New >Application)

2.1 Vincular ao projeto os Headers relativos ao CppUnit.
Faça isso adicionando os diretórios ao projeto em “Project> Options> Directories/Conditionals >Include path”
Selecione os diretórios:

  • %cppunit_dir%\borland\TestRunner
  • %cppunit_dir%\test\textui
  • %cppunit_dir%\test\framework
  • %cppunit_dir%\test\framework\extensions

2.2 Remover o formulário inicial (Form1) em “Project> Remove from Project…> Unit1.cpp”

3. Bibliotecas:

3.1 Adicione ao projeto as bibliotecas do CppUnit em “Project>Add to Project…”

  • %cppunit_dir%\bin\culib.lib
  • %cppunit_dir%\bin\TestRunnerDlg.lib

3.2 Copie a dll existente em: %cppunit_dir%\bin\TestRunnerDlg.dll para dentro do diretório do projeto

4. Crie uma classe de testes Simples:

A primeira classe a ser criada será chamada de FirstTest. Iniciaremos por seu Header, que deve extender a classe TestCase. É necessário declarar os métodos setUp() e tearDown() para que o funcionamento ocorra normalmente.

#ifndef FIRST_TEST_H
#define FIRST_TEST_H

#include "TestCase.h"
#include "TestCaller.h"

class FirstTest: public TestCase
{
public:
    FirstTest(std::string name);
    void setUp();
    void tearDown();
    static Test *suite();
protected:
    void testAssertTrue();
    void testAssertFalse();
    void testFalhara();
    void testAssertMaisUmExemplo();
};

typedef TestCaller<firsttest>
               FirstTestCaller;
#endif

.Abaixo segue a implementação dessa classe. FirstTest.cpp

#include "FirstTest.h"
#include "TestSuite.h"

FirstTest::FirstTest(std::string name): TestCase(name) {
}

void FirstTest::setUp() {    }

void FirstTest::tearDown() { }
Test* FirstTest::suite() {
// All tests have to be explicity added to TestSuite to be executed
TestSuite *suite ;
suite = new TestSuite("nameFirstTest");
suite->addTest(
    new FirstTestCaller("assert True", &FirstTest::testAssertTrue));
suite->addTest(
    new FirstTestCaller("assert False", &FirstTest::testAssertFalse));
suite->addTest(
    new FirstTestCaller("teste que falha", &FirstTest::testFalhara));
suite->addTest(
    new FirstTestCaller("teste equals", &FirstTest::testAssertMaisUmExemplo));
return (suite);
}

void FirstTest::testAssertTrue()
{
assert( true );
}

void FirstTest::testAssertFalse()
{
assert( !false );
}

void FirstTest::testFalhara()
{
assert( false );
}

void FirstTest::testAssertMaisUmExemplo()
{
assertDoublesEqual(0, 0, 0);
}

6. Testando o funcionamento do CppUnit:

O método suite() serve para que se possa adicionar todos os métodos de testes que a classe possui e que devem ser executados. Caso um método nao seja adicionado ao TestSuite neste método, ele não serpa executado.
Edite o código inicial do projeto (“Project> View Source”), adicionando a chamativa ao CppUnit após a compilar a aplicação. Exemplo projExemplo.cpp:

#include <vcl.h>
#pragma hdrstop

#include "ITestRunner.h"
#include "FirstTest.h"
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
ITestRunner runner;

runner.addTest(FirstTest::suite());

runner.run();

}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}

Pressione F9. Uma ferramenta gráfica aparecerá e você terá como visualizar todos os testes escritos na classe FirstTest. Clique em run e divirta-se.
Obs: propositalmente neste tutorial eu inseri um teste que falhará, para que você possa ver o funcionamento da ferramenta…

=)

Edit Note: Pequena correção para ampliar o entendimento do documento

About these ads

4 Respostas to “CppUnit e o Borland C++ Builder 6”

  1. […] CppUnit e o Borland C++ Builder 6 « Coding Dojo Floripa (tags: dojofloripa.wordpress.com 2007 mes8 dia6 at_tecp testes builder cbuilder blog_post) […]

  2. […] CppUnit e Borland C++ Builder6: (português) […]

  3. Edison Gustavo Muenz said

    Minhas experincias com o CppUnit não foram muito felizes, principalmente pelo fato de precisar declarar na suite cada teste que será executado.
    Eu prefiro o UnitTest++, é um projeto novo, mas eu preferi ele ao CppUnit por ser muito mais simples.

  4. Rafael Nogueira said

    1. CppUnit citado no site da CodeGear (http://dn.codegear.com/article/32704) é o mesmo abordado nesse post?

    2. Instalei a “Versão do CppUnit para o BCB6″ e funcionou, porém achei que os relatórios de execução de testes deixam a desejar, por exemplo, para reportar os resultados histórivos para a gerência. Gostaria de saber se o CppUnit possui algum tipo de relatório de saída mais elaborado?

    3. Caro Edison Gustavo Muenz, não consegui congigurar o UnitTest++ que você citou no BCB6. Essa suite não seria específica para projetos no vsnet?

Deixar uma resposta

Preencha os seus detalhes abaixo ou clique num ícone para iniciar sessão:

WordPress.com Logo

Está a comentar usando a sua conta WordPress.com Log Out / Modificar )

Imagem do Twitter

Está a comentar usando a sua conta Twitter Log Out / Modificar )

Facebook photo

Está a comentar usando a sua conta Facebook Log Out / Modificar )

Google+ photo

Está a comentar usando a sua conta Google+ Log Out / Modificar )

Connecting to %s

 
Seguir

Get every new post delivered to your Inbox.

%d bloggers like this: