SlideShare uma empresa Scribd logo
1 de 13
Baixar para ler offline
3º Encontro DeSif



Teste Unitários em C
      Gleison Rodrigues
      xgleisonx@gmail.com
3º Encontro DeSif

      FrameWork de teste para C/C++
●   Check: A unit testing framework for C.
●   MinUnit: TDD em C, simples e prático.
●   Googletest: Google C++ Testing Framework.
●
    Cgreen: A unit tester for the C software developer.
3º Encontro DeSif

                             Check
●   Versão 0.9.8
●   Ultima atualização 23-09-2009
●   Hospedado no sourceforge
●   Faz uso de macros:
●   Escrevendo um teste:
3º Encontro DeSif


#include <check.h>

START_TEST (test_name)
{
  /* unit test code */
}
END_TEST
3º Encontro DeSif

                             MinUnit
●   Realmente minimalista:
       apenas um aquivo MinUnit.h
●   Pagina de referencia Jera.
●   Escrevendo um teste:
3º Encontro DeSif
#include <stdio.h>
#include "minunit.h"

int tests_run = 0;
int foo = 7;
int bar = 4;

static char * test_foo() {
  mu_assert("error, foo != 7", foo == 7);
  return 0;
}
static char * test_bar() {
  mu_assert("error, bar != 5", bar == 5);
  return 0;
}
static char * all_tests() {
  mu_run_test(test_foo);
  mu_run_test(test_bar);
  return 0;
}
3º Encontro DeSif

/* continuação */

int main(int argc, char **argv) {

    char *result = all_tests();

     if (result != 0) {
            printf("%sn", result);
    }else {
            printf("ALL TESTS PASSEDn"); }

    printf("Tests run: %dn", tests_run);

    return result != 0;

}
3º Encontro DeSif

                         GoogleTest
●   Desenvolvido para C++
●   Versão 1.6.0
●   Hospedado no GoogleCode.
●   Faz uso de macros.
3º Encontro DeSif
#include <limits.h>
#include "sample1.h"
#include "gtest/gtest.h"

// Tests Factorial().

TEST(FactorialTest, Negative) {
  EXPECT_EQ(1, Factorial(-5));
  EXPECT_TRUE(Factorial(-10) > 0);
}

TEST(FactorialTest, Zero) {
  EXPECT_EQ(1, Factorial(0));
}

TEST(FactorialTest, Positive) {
  EXPECT_EQ(1, Factorial(1));
  EXPECT_EQ(2, Factorial(2));
  EXPECT_EQ(40320, Factorial(8));
}
3º Encontro DeSif

                              Cgreen
●   Note that this tool is for C programming, not C++.
●   Tem um guia em português do Brasil
●   Versão 1.0.0-beta2
●   Hospedado no sourceforge
●   Faz uso de macros
3º Encontro DeSif
#include "cgreen/cgreen.h"

void this_test_should_pass() {
    assert_true(1);
}

void this_test_should_fail() {
    assert_true(0);
}

int main(int argc, char **argv) {
     TestSuite *suite = create_test_suite();

     add_test(suite, this_test_should_pass);
     add_test(suite, this_test_should_fail);

     return run_test_suite(suite, create_text_reporter());
}
3º Encontro DeSif

    Dúvidas???
3º Encontro DeSif

Mais conteúdo relacionado

Mais procurados

Qualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoQualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoValquíria Duarte D'Amato
 
Edição e Montagem - Aulas 8 e 9
Edição e Montagem - Aulas 8 e 9Edição e Montagem - Aulas 8 e 9
Edição e Montagem - Aulas 8 e 9Mauricio Fonteles
 
Equações diferenciais aplicada à flexao de vigas
Equações diferenciais aplicada à flexao de vigasEquações diferenciais aplicada à flexao de vigas
Equações diferenciais aplicada à flexao de vigasLucas Menezes
 
Cadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linhaCadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linhaBowman Guimaraes
 
Docudrama quando o real se transforma em ficcional
Docudrama  quando o real se transforma em ficcionalDocudrama  quando o real se transforma em ficcional
Docudrama quando o real se transforma em ficcionalJonas Araújo
 
Conexoes com a matematica vol1 - slides complementares - planejamento inter...
Conexoes com a matematica   vol1 - slides complementares - planejamento inter...Conexoes com a matematica   vol1 - slides complementares - planejamento inter...
Conexoes com a matematica vol1 - slides complementares - planejamento inter...Editora Moderna
 
Curso Auditor Interno da Norma ISO/IEC 17025:2017 – Nova Versão
Curso Auditor Interno da Norma ISO/IEC 17025:2017 – Nova VersãoCurso Auditor Interno da Norma ISO/IEC 17025:2017 – Nova Versão
Curso Auditor Interno da Norma ISO/IEC 17025:2017 – Nova VersãoGAC CURSOS ONLINE
 
Introdução à Engenharia da Qualidade e o Método Taguchi
Introdução à Engenharia da Qualidade e o Método TaguchiIntrodução à Engenharia da Qualidade e o Método Taguchi
Introdução à Engenharia da Qualidade e o Método TaguchiCarlos Yukimura
 
Parametrizacao de-reles-da-sel
Parametrizacao de-reles-da-selParametrizacao de-reles-da-sel
Parametrizacao de-reles-da-selfpfsousa
 
Direção de Arte e Fotografia no Cinema
Direção de Arte e Fotografia no CinemaDireção de Arte e Fotografia no Cinema
Direção de Arte e Fotografia no CinemaMauricio Mallet Duprat
 
Aula 5 - A Equipe De Filmagem
Aula 5 - A Equipe De FilmagemAula 5 - A Equipe De Filmagem
Aula 5 - A Equipe De FilmagemFernando
 
Documentação do software
Documentação do softwareDocumentação do software
Documentação do softwarecifjovo02
 

Mais procurados (19)

Qualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projetoQualidade de software e sua influência no sucesso do projeto
Qualidade de software e sua influência no sucesso do projeto
 
Edição e Montagem - Aulas 8 e 9
Edição e Montagem - Aulas 8 e 9Edição e Montagem - Aulas 8 e 9
Edição e Montagem - Aulas 8 e 9
 
Equações diferenciais aplicada à flexao de vigas
Equações diferenciais aplicada à flexao de vigasEquações diferenciais aplicada à flexao de vigas
Equações diferenciais aplicada à flexao de vigas
 
199506443 manual-de-servicio-power-comand-indio-pdf
199506443 manual-de-servicio-power-comand-indio-pdf199506443 manual-de-servicio-power-comand-indio-pdf
199506443 manual-de-servicio-power-comand-indio-pdf
 
Teoria estruturas ii_aula1
Teoria estruturas ii_aula1Teoria estruturas ii_aula1
Teoria estruturas ii_aula1
 
Cadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linhaCadeno 1 integrais duplos e intregrais de linha
Cadeno 1 integrais duplos e intregrais de linha
 
Docudrama quando o real se transforma em ficcional
Docudrama  quando o real se transforma em ficcionalDocudrama  quando o real se transforma em ficcional
Docudrama quando o real se transforma em ficcional
 
Conexoes com a matematica vol1 - slides complementares - planejamento inter...
Conexoes com a matematica   vol1 - slides complementares - planejamento inter...Conexoes com a matematica   vol1 - slides complementares - planejamento inter...
Conexoes com a matematica vol1 - slides complementares - planejamento inter...
 
Curso Auditor Interno da Norma ISO/IEC 17025:2017 – Nova Versão
Curso Auditor Interno da Norma ISO/IEC 17025:2017 – Nova VersãoCurso Auditor Interno da Norma ISO/IEC 17025:2017 – Nova Versão
Curso Auditor Interno da Norma ISO/IEC 17025:2017 – Nova Versão
 
Introdução à Engenharia da Qualidade e o Método Taguchi
Introdução à Engenharia da Qualidade e o Método TaguchiIntrodução à Engenharia da Qualidade e o Método Taguchi
Introdução à Engenharia da Qualidade e o Método Taguchi
 
Implantação pcm
Implantação pcmImplantação pcm
Implantação pcm
 
Parametrizacao de-reles-da-sel
Parametrizacao de-reles-da-selParametrizacao de-reles-da-sel
Parametrizacao de-reles-da-sel
 
Direção de Arte e Fotografia no Cinema
Direção de Arte e Fotografia no CinemaDireção de Arte e Fotografia no Cinema
Direção de Arte e Fotografia no Cinema
 
Apostila de Robótica Industrial
Apostila de Robótica IndustrialApostila de Robótica Industrial
Apostila de Robótica Industrial
 
Diagrama de Casos de Uso
Diagrama de Casos de UsoDiagrama de Casos de Uso
Diagrama de Casos de Uso
 
Metodo dos Esforços
Metodo dos EsforçosMetodo dos Esforços
Metodo dos Esforços
 
Aula 5 - A Equipe De Filmagem
Aula 5 - A Equipe De FilmagemAula 5 - A Equipe De Filmagem
Aula 5 - A Equipe De Filmagem
 
Documentação do software
Documentação do softwareDocumentação do software
Documentação do software
 
Aula2
Aula2Aula2
Aula2
 

Semelhante a Testes unitários em C com Check, MinUnit, GoogleTest e Cgreen

Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitAdolfo Neto
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...
TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...
TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...tdc-globalcode
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalAdriano Petrich
 
Testes de unidade na prática
Testes de unidade na práticaTestes de unidade na prática
Testes de unidade na práticaTiago Furtado
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislAdriano Petrich
 
Testes Unitários com GTest e Catch
Testes Unitários com GTest e CatchTestes Unitários com GTest e Catch
Testes Unitários com GTest e CatchUilian Ries
 
Testes e depuração de código com Python
Testes e depuração de código com PythonTestes e depuração de código com Python
Testes e depuração de código com PythonDorneles Treméa
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
 
Introdução a Programação Orientada a testes
Introdução a Programação Orientada a testesIntrodução a Programação Orientada a testes
Introdução a Programação Orientada a testesAndré Luiz Forchesatto
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentRodrigo Alves Vieira
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitDiego Tremper
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de softwarericardophp
 

Semelhante a Testes unitários em C com Check, MinUnit, GoogleTest e Cgreen (20)

Desenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com JunitDesenvolvimento Dirigido por Testes com Junit
Desenvolvimento Dirigido por Testes com Junit
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
JUnit
JUnitJUnit
JUnit
 
TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...
TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...
TDC2018FLN | Trilha Python - Do nada, tudo se constrói. Test-Driven Developme...
 
Tdd em django sem desculpas versao final
Tdd em django sem desculpas versao finalTdd em django sem desculpas versao final
Tdd em django sem desculpas versao final
 
Testes de unidade na prática
Testes de unidade na práticaTestes de unidade na prática
Testes de unidade na prática
 
TDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fislTDD em django sem desculpas versao fisl
TDD em django sem desculpas versao fisl
 
Testes Unitários com GTest e Catch
Testes Unitários com GTest e CatchTestes Unitários com GTest e Catch
Testes Unitários com GTest e Catch
 
Testes e depuração de código com Python
Testes e depuração de código com PythonTestes e depuração de código com Python
Testes e depuração de código com Python
 
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...
 
TDD Primeiro Contato
TDD Primeiro ContatoTDD Primeiro Contato
TDD Primeiro Contato
 
Testes em go
Testes em goTestes em go
Testes em go
 
Introdução a Programação Orientada a testes
Introdução a Programação Orientada a testesIntrodução a Programação Orientada a testes
Introdução a Programação Orientada a testes
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Development
 
Qualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnitQualidade no desenvolvimento de software com PHPUnit
Qualidade no desenvolvimento de software com PHPUnit
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Minicurso de TDD
Minicurso de TDDMinicurso de TDD
Minicurso de TDD
 
Ganhando tempo com casos de testes
Ganhando tempo com casos de testesGanhando tempo com casos de testes
Ganhando tempo com casos de testes
 
PHPUnit e teste de software
PHPUnit e teste de softwarePHPUnit e teste de software
PHPUnit e teste de software
 

Testes unitários em C com Check, MinUnit, GoogleTest e Cgreen

  • 1. 3º Encontro DeSif Teste Unitários em C Gleison Rodrigues xgleisonx@gmail.com
  • 2. 3º Encontro DeSif FrameWork de teste para C/C++ ● Check: A unit testing framework for C. ● MinUnit: TDD em C, simples e prático. ● Googletest: Google C++ Testing Framework. ● Cgreen: A unit tester for the C software developer.
  • 3. 3º Encontro DeSif Check ● Versão 0.9.8 ● Ultima atualização 23-09-2009 ● Hospedado no sourceforge ● Faz uso de macros: ● Escrevendo um teste:
  • 4. 3º Encontro DeSif #include <check.h> START_TEST (test_name) { /* unit test code */ } END_TEST
  • 5. 3º Encontro DeSif MinUnit ● Realmente minimalista: apenas um aquivo MinUnit.h ● Pagina de referencia Jera. ● Escrevendo um teste:
  • 6. 3º Encontro DeSif #include <stdio.h> #include "minunit.h" int tests_run = 0; int foo = 7; int bar = 4; static char * test_foo() { mu_assert("error, foo != 7", foo == 7); return 0; } static char * test_bar() { mu_assert("error, bar != 5", bar == 5); return 0; } static char * all_tests() { mu_run_test(test_foo); mu_run_test(test_bar); return 0; }
  • 7. 3º Encontro DeSif /* continuação */ int main(int argc, char **argv) { char *result = all_tests(); if (result != 0) { printf("%sn", result); }else { printf("ALL TESTS PASSEDn"); } printf("Tests run: %dn", tests_run); return result != 0; }
  • 8. 3º Encontro DeSif GoogleTest ● Desenvolvido para C++ ● Versão 1.6.0 ● Hospedado no GoogleCode. ● Faz uso de macros.
  • 9. 3º Encontro DeSif #include <limits.h> #include "sample1.h" #include "gtest/gtest.h" // Tests Factorial(). TEST(FactorialTest, Negative) { EXPECT_EQ(1, Factorial(-5)); EXPECT_TRUE(Factorial(-10) > 0); } TEST(FactorialTest, Zero) { EXPECT_EQ(1, Factorial(0)); } TEST(FactorialTest, Positive) { EXPECT_EQ(1, Factorial(1)); EXPECT_EQ(2, Factorial(2)); EXPECT_EQ(40320, Factorial(8)); }
  • 10. 3º Encontro DeSif Cgreen ● Note that this tool is for C programming, not C++. ● Tem um guia em português do Brasil ● Versão 1.0.0-beta2 ● Hospedado no sourceforge ● Faz uso de macros
  • 11. 3º Encontro DeSif #include "cgreen/cgreen.h" void this_test_should_pass() { assert_true(1); } void this_test_should_fail() { assert_true(0); } int main(int argc, char **argv) { TestSuite *suite = create_test_suite(); add_test(suite, this_test_should_pass); add_test(suite, this_test_should_fail); return run_test_suite(suite, create_text_reporter()); }
  • 12. 3º Encontro DeSif Dúvidas???