Episodix: Integration Test & Unit Test – Iteración 1

A continuación se mostrarán los tests diseñados para la Iteración 1 de Episodix.

Integration Test

Se ha diseñado un Integration Test llamado Test_EndOfStreet que comprobará que FPSController (el personaje) y CheckEnd interactúan correctamente. Cuando FPSController atraviese CheckEnd, OnTriggerEnter lo detectará.

Para este test se ha creado una Scene que constará del suelo de Street, nuestro FPSController y el objeto CheckEnd. También habrá una cámara y una Directional Light. A FPSController se le ha desactivado el script FirstPersonController, encargado de mover al personaje en función de las entradas introducidas por el usuario mediante los controles de movimiento asignados, y se le ha añadido el script TestMove, que simplemente desplazará hacia adelante al personaje:

using UnityEngine;
using System.Collections;

public class TestMove : MonoBehaviour
{
// El FPSController del test se movera hacia adelante
//
void Update ()
{
transform.Translate (Vector3.forward*Time.deltaTime*10);
}
}

Al objeto CheckEnd se le añadirá un script CallTesting que dará por válido el test si otro objeto atraviesa (OnTriggerEnter) al propio CheckEnd.

IntegrationTest-CallTesting

El test tendrá una duración máxima de 5 segundos. Si en ese tiempo no se obtiene un resultado (válido o no) se tomará el test como fallido. En nuestro caso, al ejecutar el test, FPSController atravesará CheckEnd antes de que finalice la duración máxima de 5 segundos, por lo que el test tendrá un resultado positivo.

IntegrationTest-TimeOut

Unit Test

Se ha elaborado un Unit Test para comprobar que no hay errores a la hora de calcular los porcentajes de acierto en función de las respuestas acertadas y las respuestas totales contestadas para el caso de 3 preguntas. El código del Unit Test correspondiente estará en CalScoresTest.cs y su contenido es el siguiente:

using System;
using NUnit.Framework;

namespace CalScoresTest
{
public class CalScores
{
// Calcula el porcentaje de acierto dependiendo del numero de respuestas
// correctas y del numero de respuestas totales, parametros que se le
// pasaran como argumentos a la funcion.
//
public decimal GiveScores(decimal rightAnswers, decimal totalAnswers)
{
decimal scr = (rightAnswers / totalAnswers) * 100;
decimal scores = Math.Round(scr,2);
return scores;
}
}


public class TestScores
{
// Test que comprobara que los porcentajes calculados son los esperados
// dependiendo del numero de respuestas correctas y del numero de respuestas
// totales.
//
[Test]
public void Test()
{
CalScores scr = new CalScores();
Assert.AreEqual (100, scr.GiveScores (3, 3));
Assert.AreEqual (66.67M, scr.GiveScores (2, 3));
Assert.AreEqual (33.33M, scr.GiveScores (1, 3));
Assert.AreEqual (0, scr.GiveScores (0, 3));
}
}
}

Al ejecutar el test el resultado será positivo, de modo que el cálculo de los porcentajes de acierto realizado en nuestro juego es correcto.

UnitTest

Un comentario en “Episodix: Integration Test & Unit Test – Iteración 1

Deja un comentario