SlideShare a Scribd company logo
1 of 26
Download to read offline
QUnit
Um framework de teste unitário JavaScript


             #zigottolabs



                               por Marcelo Fraga
                                  @marcelofraga
O que é QUnit?
É um poderoso framework JavaScript de teste unitário que te ajuda a depurar o código. É
escrito e usado pela equipe do jQuery para testar os seus códigos e plugins, mas é o suficiente
para testar todo o código JavaScript genérico, e ainda é capaz de testar no lado do servidor
através de alguns mecanismos como Rhino, SpiderMonkey ou V8.




                                   #zigottolabs
Como escrever testes unitários com QUnit?

 Precisa criar um ambiente de testes

 Fornecer uma estrutura HTML básica

 Incluir os arquivos qunit.js e qunit.css




                              #zigottolabs
Como escrever testes unitários com QUnit?




              #zigottolabs
Como escrever testes unitários com QUnit?




              #zigottolabs
Como escrever testes unitários com QUnit?




              #zigottolabs
Como escrever testes unitários com QUnit?




              #zigottolabs
Falhando um teste




  #zigottolabs
Falhando um teste




  #zigottolabs
Exemplo: Afirmações




   #zigottolabs
Exemplo: Testes Assíncronos




       #zigottolabs
Exemplo: Testes Assíncronos




       #zigottolabs
Exemplo: Testes Assíncronos




       #zigottolabs
Exemplo: Testes Assíncronos




       #zigottolabs
Exemplo: Testes Assíncronos




       #zigottolabs
Exemplo: Testes Assíncronos




       #zigottolabs
Exemplo: Testes Assíncronos




       #zigottolabs
QUnit & Rhino
Rhino é uma implementação open-source de JavaScript escrito inteiramente em Java e mantido
pela Fundação Mozilla. Facilmente incorporado em aplicações Java (agora está incluído no
Java 6).




                                 #zigottolabs
Instalando Rhino no Mac OS X

$ curl ftp://ftp.mozilla.org/pub/mozilla.org/js/rhino1_7R2.zip > /tmp/rhino.zip
$ cd /tmp
$ unzip rhino.zip

$ mkdir ~/Library/Java
$ mkdir ~/Library/Java/Extensions
$ mv /tmp/rhino1_7R2/js.jar ~/Library/Java/Extensions




                           #zigottolabs
Instalando Rhino no Mac OS X

$ export RHINO_HOME=”~/Library/Java/Extensions”
alias js=”java -cp $RHINO_HOME/js.jar org.mozilla.javascript.tools.shell.Main -opt -1”
alias jsd=”java -cp $RHINO_HOME/js.jar org.mozilla.javascript.tools.debugger.Main”

$ js
Rhino 1.7 release 2 2009 03 22
js> print(‘hello!’)
hello!
js>




                                 #zigottolabs
Usando QUnit & Rhino




    #zigottolabs
Usando QUnit & Rhino




    #zigottolabs
Usando QUnit & Rhino




  $ js suite.js




    #zigottolabs
Usando QUnit & Rhino




    #zigottolabs
Obrigado!
                #zigottolabs




@marcelofraga
Fontes

http://docs.jquery.com/QUnit


http://www.phpied.com/installing-rhino-on-mac/


http://twoguysarguing.wordpress.com/2010/11/02/make-javascript-tests-part-of-your-build-qunit-rhino/


http://net.tutsplus.com/tutorials/javascript-ajax/how-to-test-your-javascript-code-with-qunit/




                                    #zigottolabs

More Related Content

What's hot

Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
Dorneles Treméa
 
Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012
Rogerio Prado de Jesus
 

What's hot (20)

Vagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizadoVagrant - ambiente de desenvolvimento virtualizado
Vagrant - ambiente de desenvolvimento virtualizado
 
[Testes] frameworks de testes end to-end baseados em node js
[Testes] frameworks de testes end to-end baseados em node js [Testes] frameworks de testes end to-end baseados em node js
[Testes] frameworks de testes end to-end baseados em node js
 
Ruby para testers I
Ruby para testers IRuby para testers I
Ruby para testers I
 
Typescript
TypescriptTypescript
Typescript
 
Introdução ao Python & Web Services
Introdução ao Python & Web ServicesIntrodução ao Python & Web Services
Introdução ao Python & Web Services
 
JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...
JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...
JavaScript Robotics: o que acontece quando o hardware se encontra com o JavaS...
 
Python para programadores Ruby
Python para programadores RubyPython para programadores Ruby
Python para programadores Ruby
 
JBoss Forge 2
JBoss Forge 2JBoss Forge 2
JBoss Forge 2
 
Curso de Groovy
Curso de GroovyCurso de Groovy
Curso de Groovy
 
Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012Desenvolvimento PHP com Vagrant - TDC 2012
Desenvolvimento PHP com Vagrant - TDC 2012
 
Curso de Node.js e MongoDB - 09
Curso de Node.js e MongoDB - 09Curso de Node.js e MongoDB - 09
Curso de Node.js e MongoDB - 09
 
Javascript por debaixo dos panos
Javascript por debaixo dos panosJavascript por debaixo dos panos
Javascript por debaixo dos panos
 
Robocode
RobocodeRobocode
Robocode
 
Visão geral type script
Visão geral type scriptVisão geral type script
Visão geral type script
 
JavaScript Robotics: Nodebots, JavaScript Além das telas
JavaScript Robotics: Nodebots, JavaScript Além das telasJavaScript Robotics: Nodebots, JavaScript Além das telas
JavaScript Robotics: Nodebots, JavaScript Além das telas
 
TypeScript - Campus party 2013
TypeScript - Campus party 2013TypeScript - Campus party 2013
TypeScript - Campus party 2013
 
Apresentação 2
Apresentação 2Apresentação 2
Apresentação 2
 
Xdebug seus problemas acabaram - tdc floripa 2017
Xdebug   seus problemas acabaram - tdc floripa 2017Xdebug   seus problemas acabaram - tdc floripa 2017
Xdebug seus problemas acabaram - tdc floripa 2017
 
Testes com javascript
Testes com javascriptTestes com javascript
Testes com javascript
 
Spring boot
Spring bootSpring boot
Spring boot
 

Viewers also liked

Les presento a paula alejandra martinez
Les presento a paula alejandra martinezLes presento a paula alejandra martinez
Les presento a paula alejandra martinez
karenchan01
 
Nuevo presentación de microsoft office power point
Nuevo presentación de microsoft office power pointNuevo presentación de microsoft office power point
Nuevo presentación de microsoft office power point
rocioangulo
 
Plan de aula productiva historia y desarrollo de los ritos
Plan de aula productiva historia y desarrollo de los ritosPlan de aula productiva historia y desarrollo de los ritos
Plan de aula productiva historia y desarrollo de los ritos
Ivan Q
 
Fundamentos de contabilidad
Fundamentos de contabilidadFundamentos de contabilidad
Fundamentos de contabilidad
caroaparicio23
 
Receitas AlimentaçãO Escolar Lanche Gostoso 07
Receitas AlimentaçãO Escolar Lanche Gostoso 07Receitas AlimentaçãO Escolar Lanche Gostoso 07
Receitas AlimentaçãO Escolar Lanche Gostoso 07
tsunamidaiquiri
 
Monumento ao Palhaço Piolin Roberto Bergamo - 2014
Monumento ao Palhaço Piolin  Roberto Bergamo - 2014Monumento ao Palhaço Piolin  Roberto Bergamo - 2014
Monumento ao Palhaço Piolin Roberto Bergamo - 2014
Artista Plástico, Arquiteto Urbanista e Educador
 
4 6 secuencia didáctica unidad 2 t1t2 equipo 6 610. resuelta equipo 4
4 6 secuencia didáctica unidad 2 t1t2 equipo 6 610. resuelta equipo 44 6 secuencia didáctica unidad 2 t1t2 equipo 6 610. resuelta equipo 4
4 6 secuencia didáctica unidad 2 t1t2 equipo 6 610. resuelta equipo 4
Eduardo Hernandez
 
43ser competente-en-tecnologia
43ser competente-en-tecnologia43ser competente-en-tecnologia
43ser competente-en-tecnologia
ietafranciscana
 
Sesión técnica, sala KM 19, Diagnóstico metrológico a sistemas de medición co...
Sesión técnica, sala KM 19, Diagnóstico metrológico a sistemas de medición co...Sesión técnica, sala KM 19, Diagnóstico metrológico a sistemas de medición co...
Sesión técnica, sala KM 19, Diagnóstico metrológico a sistemas de medición co...
LTDH2013
 
Juan david (1)
Juan david (1)Juan david (1)
Juan david (1)
2734095
 
Workshop fim de ano - acao consultoria
Workshop   fim de ano - acao consultoriaWorkshop   fim de ano - acao consultoria
Workshop fim de ano - acao consultoria
Henrique Gomes
 

Viewers also liked (20)

La revolución digital vista en 2004
La revolución digital vista en 2004La revolución digital vista en 2004
La revolución digital vista en 2004
 
Les presento a paula alejandra martinez
Les presento a paula alejandra martinezLes presento a paula alejandra martinez
Les presento a paula alejandra martinez
 
Copia (2) de gemelos siameses. experiencia en el in per 1978
Copia (2) de gemelos siameses. experiencia en el in per 1978Copia (2) de gemelos siameses. experiencia en el in per 1978
Copia (2) de gemelos siameses. experiencia en el in per 1978
 
Nuevo presentación de microsoft office power point
Nuevo presentación de microsoft office power pointNuevo presentación de microsoft office power point
Nuevo presentación de microsoft office power point
 
Plan de aula productiva historia y desarrollo de los ritos
Plan de aula productiva historia y desarrollo de los ritosPlan de aula productiva historia y desarrollo de los ritos
Plan de aula productiva historia y desarrollo de los ritos
 
sistema de informacion
sistema de informacionsistema de informacion
sistema de informacion
 
Fundamentos de contabilidad
Fundamentos de contabilidadFundamentos de contabilidad
Fundamentos de contabilidad
 
Receitas AlimentaçãO Escolar Lanche Gostoso 07
Receitas AlimentaçãO Escolar Lanche Gostoso 07Receitas AlimentaçãO Escolar Lanche Gostoso 07
Receitas AlimentaçãO Escolar Lanche Gostoso 07
 
Monumento ao Palhaço Piolin Roberto Bergamo - 2014
Monumento ao Palhaço Piolin  Roberto Bergamo - 2014Monumento ao Palhaço Piolin  Roberto Bergamo - 2014
Monumento ao Palhaço Piolin Roberto Bergamo - 2014
 
Presentación.
Presentación.Presentación.
Presentación.
 
4 6 secuencia didáctica unidad 2 t1t2 equipo 6 610. resuelta equipo 4
4 6 secuencia didáctica unidad 2 t1t2 equipo 6 610. resuelta equipo 44 6 secuencia didáctica unidad 2 t1t2 equipo 6 610. resuelta equipo 4
4 6 secuencia didáctica unidad 2 t1t2 equipo 6 610. resuelta equipo 4
 
43ser competente-en-tecnologia
43ser competente-en-tecnologia43ser competente-en-tecnologia
43ser competente-en-tecnologia
 
Sesión técnica, sala KM 19, Diagnóstico metrológico a sistemas de medición co...
Sesión técnica, sala KM 19, Diagnóstico metrológico a sistemas de medición co...Sesión técnica, sala KM 19, Diagnóstico metrológico a sistemas de medición co...
Sesión técnica, sala KM 19, Diagnóstico metrológico a sistemas de medición co...
 
Redes
RedesRedes
Redes
 
Presentacion de arnaldo
Presentacion de arnaldoPresentacion de arnaldo
Presentacion de arnaldo
 
Juan david (1)
Juan david (1)Juan david (1)
Juan david (1)
 
Sec. didac.e9
Sec. didac.e9Sec. didac.e9
Sec. didac.e9
 
Workshop fim de ano - acao consultoria
Workshop   fim de ano - acao consultoriaWorkshop   fim de ano - acao consultoria
Workshop fim de ano - acao consultoria
 
Evelyn y rosa
Evelyn y rosaEvelyn y rosa
Evelyn y rosa
 
Classicismo
ClassicismoClassicismo
Classicismo
 

Similar to Usando QUnit para testes unitários em JavaScript

AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
Fausto Siqueira
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
Giovanni Bassi
 
Simples pelo simples google android com robo guice
Simples pelo simples   google android com robo guiceSimples pelo simples   google android com robo guice
Simples pelo simples google android com robo guice
Diogo Souza
 

Similar to Usando QUnit para testes unitários em JavaScript (20)

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
 
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
 
Interop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NETInterop itcare: Interoperabilidade Java e .NET
Interop itcare: Interoperabilidade Java e .NET
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
Plataforma java: detalhes da JVM
Plataforma java: detalhes da JVMPlataforma java: detalhes da JVM
Plataforma java: detalhes da JVM
 
AutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic AcademyAutomaçãoWeb - Chaordic Academy
AutomaçãoWeb - Chaordic Academy
 
Linguagens Dinamicas na JVM
Linguagens Dinamicas na JVMLinguagens Dinamicas na JVM
Linguagens Dinamicas na JVM
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
Samanta Cicilia - MTC - Importância de Testes Automatizados para Continuous D...
 
TDC 2014 SP - Visual Regression Testing com PhantomCSS
TDC 2014 SP - Visual Regression Testing com PhantomCSSTDC 2014 SP - Visual Regression Testing com PhantomCSS
TDC 2014 SP - Visual Regression Testing com PhantomCSS
 
Esta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com RailsEsta começando a programar para a web? Então começe com Rails
Esta começando a programar para a web? Então começe com Rails
 
Simples pelo simples google android com robo guice
Simples pelo simples   google android com robo guiceSimples pelo simples   google android com robo guice
Simples pelo simples google android com robo guice
 
Praticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnicaPraticando o Desapego: quando ignorar a dívida técnica
Praticando o Desapego: quando ignorar a dívida técnica
 
Android Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na CloudAndroid Dev Conference 2017 - Automação de Testes na Cloud
Android Dev Conference 2017 - Automação de Testes na Cloud
 
Importância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOpsImportância de Testes Automatizados para Continuous Delivery & DevOps
Importância de Testes Automatizados para Continuous Delivery & DevOps
 
TDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scalesTDC2016POA | Trilha Web - Front-end that scales
TDC2016POA | Trilha Web - Front-end that scales
 
GDG Angular 2
GDG Angular 2GDG Angular 2
GDG Angular 2
 
Palestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnitPalestra Testes Unidade Com JUnit
Palestra Testes Unidade Com JUnit
 

More from Zigotto Tecnologia

JAVASCRIPT NÃO-OBSTRUTIVO com jQuery
JAVASCRIPT NÃO-OBSTRUTIVO com jQueryJAVASCRIPT NÃO-OBSTRUTIVO com jQuery
JAVASCRIPT NÃO-OBSTRUTIVO com jQuery
Zigotto Tecnologia
 

More from Zigotto Tecnologia (14)

Engine on Rails
Engine on RailsEngine on Rails
Engine on Rails
 
Apresentação Padawan
Apresentação PadawanApresentação Padawan
Apresentação Padawan
 
Open Source - DevInVale 2011
Open Source - DevInVale 2011Open Source - DevInVale 2011
Open Source - DevInVale 2011
 
Escrevendo plugins JQuery
Escrevendo plugins JQueryEscrevendo plugins JQuery
Escrevendo plugins JQuery
 
Rack Middleware
Rack MiddlewareRack Middleware
Rack Middleware
 
HTML5
HTML5HTML5
HTML5
 
Sinatra - Primeiros Passos
Sinatra - Primeiros PassosSinatra - Primeiros Passos
Sinatra - Primeiros Passos
 
Nova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis AplicaçõesNova API do Google Maps e Possíveis Aplicações
Nova API do Google Maps e Possíveis Aplicações
 
Apps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGapApps para SmartPhones usando PhoneGap
Apps para SmartPhones usando PhoneGap
 
Um pouco de Agile
Um pouco de AgileUm pouco de Agile
Um pouco de Agile
 
Testes de aceitação com Steak e Capybara
Testes de aceitação com Steak e CapybaraTestes de aceitação com Steak e Capybara
Testes de aceitação com Steak e Capybara
 
Ilustrações, técnicas e formas
Ilustrações, técnicas e formasIlustrações, técnicas e formas
Ilustrações, técnicas e formas
 
JAVASCRIPT NÃO-OBSTRUTIVO com jQuery
JAVASCRIPT NÃO-OBSTRUTIVO com jQueryJAVASCRIPT NÃO-OBSTRUTIVO com jQuery
JAVASCRIPT NÃO-OBSTRUTIVO com jQuery
 
Desvendando a Web - Ponto de vista de um Zigottiano
Desvendando a Web - Ponto de vista de um ZigottianoDesvendando a Web - Ponto de vista de um Zigottiano
Desvendando a Web - Ponto de vista de um Zigottiano
 

Usando QUnit para testes unitários em JavaScript