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

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

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 DevelopmentRodrigo Alves Vieira
 
Coding Dojo e Test Driven Development
Coding Dojo e Test Driven DevelopmentCoding Dojo e Test Driven Development
Coding Dojo e Test Driven Developmentpugpe
 
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
 
Testes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de códigoPaula Grangeiro
 

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

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 como ferramentas de design de código
Testes unitários como ferramentas de design de códigoTestes unitários como ferramentas de design de código
Testes unitários como ferramentas de design de código
 
Testes com JUnit
Testes com JUnitTestes com JUnit
Testes com JUnit
 

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???