Tests nunit nunitforms

25
TDD Nunit i NUnitForms 19.04.2013

description

Explicació amb exemples de NUnit i NUnitForms

Transcript of Tests nunit nunitforms

Page 1: Tests nunit nunitforms

TDD Nunit i NUnitForms

19.04.2013

Page 2: Tests nunit nunitforms

2

NUnit

http://www.nunit.org/

Framework per test unitari per llenguatge .NET

Actualment versió 2.6.2 (Octubre 2012)

Afegir al projecte referència nunit.framework.dll

Page 3: Tests nunit nunitforms

3

NUnit

Tests unitaris:Proven la correcta funcionalitat d’una classe

Tests integració:Proven la correcta integració amb els recursos externs:

base de dades, serveis web, APIs, etc

Tests acceptació:Proven que el software fa el que desitja l’usuari

Page 4: Tests nunit nunitforms

4

NUnit

Cada classe del projecte hauria de tenir la seva classe de test

Cada mètode o funció pública hauria de tenir el seu mètode de test

Quan falla un test unitari sabem ràpidament on és l’error i el podem solucionar

Page 5: Tests nunit nunitforms

5

NUnit

Classe de test importa Nunit.Framework

Davant la definició de la classe atribut <TestFixture()>

Sol tenir una funció SetUp que s’executa abans de cada test (ex: es creen taules a la base de dades i s’inserten dades de test). Es marca amb <SetUp()>

Sol tenir una funció TearDown que s’executa després de cada test (ex: se’liminen les taules). <TearDown()>

Els mètodes de test no reben paràmetres i no retornen res. Es marquen amb atribut <Test()>

Atributs: http://www.nunit.org/index.php?p=attributes&r=2.6.2

Page 6: Tests nunit nunitforms

6

NUnit

Dins dels tests es tracta de fer comprovacions: Asserts Assert.AreEqual, Assert.AreNotEqual Assert.True, Assert.False Assert.IsNull, Assert.IsNotNull Assert.Greater, Assert.Less Assert.IsInstanceOfType, Assert.IsNotInstanceOfType Assert.Throws, Assert.DoesNotThrow ...

http://www.nunit.org/index.php?p=assertions&r=2.6.2

Page 7: Tests nunit nunitforms

7

NUnit

Page 8: Tests nunit nunitforms

8

NUnit

Els test els pot executar la consola nunit-console.exeEn un CMD o dins del Visual Studio – Herramientas -

nUnit

Page 9: Tests nunit nunitforms

9

NUnit

Els test els pot executar la interfície Nunit

Page 10: Tests nunit nunitforms

10

NUnit

Page 11: Tests nunit nunitforms

11

NUnit

L’execució pot treure un XML de sortida amb tot de detalls dels tests que passen i els que NO

Page 12: Tests nunit nunitforms

12

NUnit

Beneficis: Ens obliga a fer el codi millor No hem de debugar tan com abans Seguretat alhora de fer canvis Serveix per documentar les funcionalitats fetes Ajuda a trobar errors estranys que mai

haguessis trobat

Page 13: Tests nunit nunitforms
Page 14: Tests nunit nunitforms

14

NUnitForms

http://nunitforms.sourceforge.net/

Extensió Nunit per test d’acceptació per aplicacions amb Windows Forms

Actualment versió 2.0 alpha (Maig 2006)

Afegir al projecte referència NUnitForms.dll

Alerta: La documentació de la web està obsoleta !!! Buscar la API documentation que s’instal·la !!!

Pujat codi: http://svn.dtvc.local/EDEV/Components/NUNitForms/trunk

Mirar els test com a documentació !!

Page 15: Tests nunit nunitforms

15

NUnitForms

Importar NUnit.Extensions.Forms

Funciona per classes anomenades Testers que hereden de la classe mare ControlTester ButtonTester TextBoxTester FormTester TreeViewTester ToolStripButtonTester ...

Page 16: Tests nunit nunitforms

16

NUnitForms

Del ControlTester podem: Fer clic, mètode Click() Invocar qualsevol mètode Invoke(methodName, args) Disparar qualsevol event FireEvent(eventName, args) Accedir a qualsevol propietat mitjançant

nomObjecte(“nomPropietat”)

Els controls específics ens ho posen més fàcil encara: TextBoxTester.Enter(String) TreeViewTester.SelectNode(params) ...

Page 17: Tests nunit nunitforms

17

NUnitForms

Page 18: Tests nunit nunitforms

18

NUnitForms

Drags and drops: A través de disparar events amb els arguments adequats

Page 19: Tests nunit nunitforms

19

NUnitForms

Podem control·lar el ratolí ? Si, amb el MouseController Position: gets o sets mouse position Click DoubleClick Press Release Hover

Però, no m’ha funcionat molt bé, caldria veure els tests !!

Page 20: Tests nunit nunitforms

20

NUnitForms

Podem control·lar el teclat ? Si, amb el KeyboardController Funciona molt bé el Type(KeyString) KeyString pot ser:

^ significa CONTROL ex: kc.Type(“^a”) = Copiar {BACKSPACE} = esborrar {ENTER} = return

http://msdn.microsoft.com/en-us/library/system.windows.forms.sendkeys.send.aspx

Page 21: Tests nunit nunitforms

21

NUnitForms

Podem esperar formularis modals ?

Page 22: Tests nunit nunitforms

DEMO

Page 23: Tests nunit nunitforms

23

Conclusions

Page 24: Tests nunit nunitforms

24

Conclusions

Imprescindible per nous projectes: Tests unitaris, integració i acceptació

Molta feina per projectes ja existents EditoraTickers324: 7dies de feina !! Mínim fer tests acceptació noves

funcionalitats

Recompensa, val la pena Objectiu: Aconseguir fer el test primer

Page 25: Tests nunit nunitforms