2. 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. 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. 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. 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. 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
11. 11
NUnit
L’execució pot treure un XML de sortida amb tot de
detalls dels tests que passen i els que NO
12. 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
13.
14. 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. 15
NUnitForms
Importar NUnit.Extensions.Forms
Funciona per classes anomenades Testers que
hereden de la classe mare ControlTester
ButtonTester
TextBoxTester
FormTester
TreeViewTester
ToolStripButtonTester
...
16. 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)
...
19. 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. 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
24. 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