Proyectos de Test - S.A.B.I.A.

Anuncio
Marcos de Desarrollo
Diseño e implementación de aplicaciones Web con .NET
Objetivos
 Aprender a crear pruebas en Visual Studio con Test Project
Test Project  En .NET hay un tipo de proyecto específico para crear y automatizar la realización de pruebas
Test Project Test Project  Add > New Test
Test Project  Add > Unit Test
Test Project  Add > Unit Test
Test Project  Estructuras involucradas en el proceso de test, se identifican mediante atributos:  [TestClass]
 [TestMethod]
 [ClassInitialize()]
 [ClassCleanup()]
 [TestInitialize()]
 [TestCleanup()]
 [ExpectedException(typeof(<Exception>))]
Test Project  Assert
 Permite establecer el estado de finalización de una prueba
 Opciones:







AreEqual / AreNotEqual
AreSame / AreNotSame
IsTrue / IsFalse
IsNull / IsNotNull
IsInstanceOfType / IsNotInstanceOfType
Fail
Inconclusive
Tests en MiniBank
//Use ClassInitialize to run code before running the first test in the class
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext)
{
container = TestManager.ConfigureUnityContainer("unity");
accountService = container.Resolve<IAccountService>();
}
//Use ClassCleanup to run code after all tests in a class have run
[ClassCleanup()]
public static void MyClassCleanup()
{
TestManager.ClearUnityContainer(container);
}
Tests en MiniBank
//Use TestInitialize to run code before running each test
[TestInitialize()]
public void MyTestInitialize()
{
transaction = new TransactionScope();
}
//Use TestCleanup to run code after each test has run
[TestCleanup()]
public void MyTestCleanup()
{
transaction.Dispose();
}
Tests en MiniBank
[TestMethod()]
public void CreateAccountTest()
{
Account actual = accountService.CreateAccount( Account.CreateAccount(‐1, userId, balance));
Account expected = accountService.FindAccount(actual.accId);
Assert.AreEqual(expected.usrId, actual.usrId); Assert.AreEqual(expected.balance, actual.balance, delta); }
Tests en MiniBank
/// <summary>
///Try to withdraw money from a non existent account
///</summary>
[TestMethod()]
[ExpectedException(typeof(InstanceNotFoundException))]
public void WithdrawFromNonExistentAccountTest()
{
accountService.WithdrawFromAccount(NON_EXISTENT_ACCOUNT_ID, 10);
}
Tests en MiniPortal
/// <summary>
///A test for FindUserProfileDetails
///</summary>
[TestMethod()]
public void FindUserProfileDetailsTest()
{
UserProfileDetails expected =
new UserProfileDetails(firstName, lastName, email, language, country);
long userId =
userService.RegisterUser(loginName, clearPassword, expected);
UserProfileDetails obtained =
userService.FindUserProfileDetails(userId);
// Check data
Assert.AreEqual(expected, obtained);
}
Tests en MiniPortal
namespace Es.Udc.DotNet.MiniPortal.Model
{
public partial class UserProfile
{
public override bool Equals(object obj)
{
UserProfile target = (UserProfile)obj;
return (this.usrId == target.usrId) && (this.loginName == target.loginName)
&& (this.enPassword == target.enPassword)
&& (this.firstName == target.firstName)
&& (this.lastName == target.lastName)
&& (this.email == target.email)
&& (this.language == target.language)
&& (this.country == target.country);
}
public override int GetHashCode()
{
return this.usrId.GetHashCode();
}
...
Ejecución de los Tests
 Menú > Test > Windows > Test List Editor
Ejecución de los Tests
 Menú > Test > Windows > Test View
Ejecución de los Tests
 Los resultados se muestran en la ventana de Test Results
Pruebas de Unidad
Ciclo de vida
 A inicio de la ejecución de pruebas
 Creación de instancia
 unit test runner
 Test runner crea una sesión de test (test fixture) y obtiene por reflexión los atributos de test
 Se crea/recupera un test context
 esta instancia existe durante la totalidad de la sesión de test
 Se llaman los métodos de inicialización del assembly y de la clase: AssemblyIntitialize y ClassInitialize.
Pruebas de Unidad
Ciclo de vida
 Para cada método de test, se sigue el siguiente procedimiento:
 Se recupera una instancia de la sesión de test (test fixture)
 Se copia el contexto en la instancia de sesión
 Se llama el método de inicialización

método con el atributo TestInitialize
 El método que se desea probar se invoca
 Se llama al método testCleanup

método con el atributo TestCleanup
Pruebas de Unidad
Ciclo de vida
 Una vez ejecutados todos los tests:
 Se llama al método classCleanup
 método estático con el atributo ClassCleanup de la clase
 Se llama al método assemblyCleanup
 método estático con el atributo AssemblyCleanup
 Si durante cualquier fase del ciclo de vida de un test se produce una excepción, el test termina con un fallo
Descargar