TDD Nunit i NUnitForms
19.04.2013
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
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
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
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
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
7
NUnit
8
NUnit
Els test els pot executar la consola nunit-console.exeEn un CMD o dins del Visual Studio – Herramientas -
nUnit
9
NUnit
Els test els pot executar la interfície Nunit
10
NUnit
11
NUnit
L’execució pot treure un XML de sortida amb tot de detalls dels tests que passen i els que NO
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
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ó !!
15
NUnitForms
Importar NUnit.Extensions.Forms
Funciona per classes anomenades Testers que hereden de la classe mare ControlTester ButtonTester TextBoxTester FormTester TreeViewTester ToolStripButtonTester ...
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) ...
17
NUnitForms
18
NUnitForms
Drags and drops: A través de disparar events amb els arguments adequats
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 !!
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
21
NUnitForms
Podem esperar formularis modals ?
DEMO
23
Conclusions
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