Introdução a testes unitários automatizados com JUnit e NUnit

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Favorites, Groups & Events

    Introdução a testes unitários automatizados com JUnit e NUnit - Presentation Transcript

    1. TQS - Teste e Qualidade de Software ( Software Testing and Quality ) Introdução a testes unitários automatizados com JUnit e NUnit João Pascoal Faria [email_address] www.fe.up.pt / ~jpf
    2. JUnit
      • Framework open source para criação e execução de testes unitários, baseado na arquitectura xUnit (inciada com SmallTalk), escrito inicialmente por Kent Beck e Erich Gamma
      • Permite criar classes de teste ( test fixtures ) com métodos de teste com asserções
        • Classe é instanciada de novo para cada método de teste
      • Test runner (c/ interface textual ou gráfica) executa métodos de teste e mostra os que passaram (a verde) e os que falharam (a vermelho)
        • “ Keep the bar green to keep the code clean” [Kent Beck]
      • Conjuntos de testes podem ser organizados em test suites
      • Actualmente integrado no Eclipse
      • Ver mais detalhes em www.junit.org
    3. Exemplo de classe a testar class MyMath { // Dá o maior divisor comum positivo de 2 inteiros // não nulos pelo algoritmo de Euclides. // Se algum argumento for 0 dá // IllegalArgumentException . public static int mdc(int a, int b) { while (b > 0) { int aux = a % b; a = b; b = aux; } return a; } } Como não é dito nada em contrário, deve funcionar com inteiros negativos … Não parece que esteja implementado… especificação informal implementação
    4. Exemplo de classe de teste em JUnit 3.8.1 import junit.framework.TestCase; class MyMathTest extends TestCase { public void test MdcPositive() { assertEquals (1, MyMath.mdc(2, 3)); assertEquals (2, MyMath.mdc(2, 4)); } public void test MdcNegative() { assertEquals (2, MyMath.mdc(-4, 6)); } public void test MdcZero() { try { MyMath.mdc(0,1); fail (); } catch(IllegalArgumentException e){} } } Métodos de teste: void testXXX() Métodos herdados de TestCase: assertEquals( esperado, actual) fail() - assinala teste falhado No Eclipse: New   JUnit Test Case  JUnit 3.8.1 test
    5. Executar e ver o teste a falhar …
    6. Corrigir e ver o teste a passar
    7. Analisar a cobertura dos testes Instrução não testada Construtor por defeito não testado ??? Testar antes mdc(-4,-6)
    8. Exemplo em JUnit 4.0 import org.junit.Test; import static org.junit.Assert.assertEquals; class MyMathTest { @Test public void testMdcPositive() { assertEquals(1, MyMath.mdc(2, 3)); assertEquals(2, MyMath.mdc( 4 , 6 )); } @Test(expected=IllegalArgumentException.class) public void testMdcZero() { MyMath.mdc(0,1); } } Tira partido das novas features do Java 1.5, mas (ainda) não é entendido pela ferramenta Coverlipse de análise de cobertura dos testes! Anotação dos métodos de teste Método estático da classe Assert Importação de método estático
    9. Exemplo em NUnit using System; using NUnit.Framework; [TestFixture] class MyMathTest { [Test] public void TestMdcPositive() { Assert.AreEqual(1, MyMath.mdc(2, 3)); Assert.AreEqual(2, MyMath.mdc(4, 6)); } [Test, ExpectedException (typeof(ArgumentException))] public void TestMdcZero() { MyMath.mdc(0,1); } } Adicionar ao projecto referência para nunit.framework.dll Executar com NUnit-Gui (nunit-gui.exe) e abrir assembly do projecto (.dll ou .exe)
    10. Exemplo de execução com NUnit-Gui
    11. Setup e teardown
      • Código de iniciação e terminação a executar …
      • … antes e depois de cada método de teste dentro duma classe de teste
        • Por exemplo, inicializar objectos (variáveis privadas da classe) a usar por vários métodos de teste
        • JUnit 3.8.1: redefinir métodos setUp e tearDown herdados de TestCase
        • NUnit: criar métodos e anotá-los com atributos SetUp e TearDown
      • … . uma única vez numa classe de teste (antes e depois de todos os métodos)
        • Exemplo: abrir e fechar uma conexão para a base de dados
        • NUnit: métodos anotados c/ atributos TestFixtureSetup e TestFixtureTearDown
    12. Test suites
      • Agregam conjuntos de testes
      • Padrão composite (JUnit 3.8.1)
        • Test generaliza TestCase e TestSuite
        • TestSuite agrega instâncias de Test (método addTest(Test t))
      • Normalmente não é necessário criar explicitamente, pois os casos de teste são descobertos automaticamente graças ao mecanismo de reflexão
    13. Exercício
      • Realizar o exemplo do mdc
    14. Referências e informação adicional
      • www.junit.org
      • www.nunit.org
      • http://testdriven.net/

    + adorepumpadorepump, 2 years ago

    custom

    444 views, 0 favs, 0 embeds more stats

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 444
      • 444 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 17
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories