Desarrollo ágil

Organizando los tests unitarios

jj.github.io/curso-tdd/temas/tests-unitarios-organización

✓ TODO

□ ¿Se han diseñado las excepciones y definido claramente clases?

□ ¿Se ha elegido y comenzado a usar un linter?

Se comprueban comportamientos

Reflejados en las historias de usuario

Los tests unitarios se refieren a las capas (de abstracción) más bajas

Y se implementan en bibliotecas de aserciones

Planifica

Número de tests

Subtests

Precondiciones

Ejecutar en caso de...

use Test::More;

unless ( $ENV{'TRAVIS_PULL_REQUEST'} =~ /\d/ ) {
  plan skip_all => "Check relevant only for PRs";
}                            

Setup: crear objetos que se testearán

Que no son parte del test

Fixtures en Python

import pytest
from Project.Issue import Issue, IssueState

PROJECTNAME = "testProject"
ISSUEID = 1

@pytest.fixture
def issue():
    issue = Issue(PROJECTNAME,ISSUEID)
    return issue

def test_is_open_when_created(issue):
    assert  issue.state == IssueState.Open                            

O leer datos

func TestMain(m *testing.M) {
	ReadsFromFile("./hitos_test.json") // Alternative test file
	os.Exit(m.Run())
}

Dejarlo todo limpito: teardown

Más común en tests de integración

✓ TODO hito 11

Elegir una biblioteca de aserciones y preparar para los tests

En agil.yaml

test:
    - tests/fichero-test.jl
aserciones: "@test"