Desarrollo ágil

Tests unitarios

jj.github.io/curso-tdd/temas/tests-unitarios

✓ TODO

□ ¿Los milestones internos son productos mínimamente viables?

□ ¿Se han integrado tareas en el gestor?

Recordatorio: Se comprueban comportamientos

Reflejados en las historias de usuario

Los tests se ejecutan desde frameworks de test

Principios F.I.R.S.T

Fast, independent, repeatable, self-validating, timely

Red/green/refactor

Lo importante son los tests

Tests en Elixir (con mix)

defmodule IssueTest do
  use ExUnit.Case
  doctest Issue

  setup_all do
    this_issue = %Issue{ projectname: 'Foo', id: '1'}
    {:ok, issue: this_issue}
  end

  test "Initial issue state",context do
    assert context[:issue].state == :Open
  end

end

Arrange, act, assert

TypeScript con jest

import { Issue, State } from '../Project/Issue';
var data: Issue;

beforeAll(() => {
    data = new Issue("Foo",1);
});

test("all", () => {
    expect(  data.show_state() ).toBe( State.Open );
    data.close();
    expect(  data.show_state() ).toBe( State.Closed );
}); 

Go es su propio marco de test

package HitosIV
import (
	"testing"
	"reflect"
)
func TestHitos (t *testing.T){
	t.Log("Test Id");
	if CuantosHitos() <= 0 {
		t.Error("No milestones")
	}
}
func TestTodosHitos (t *testing.T){
	t.Log("Test Todos");
	these_milestones := Hitos()
	if reflect.TypeOf(these_milestones).String() == "Data" {
		t.Error("No milestones here")
	}
}

Hooks para tests locales

my $is_head = `git rev-parse --verify HEAD`;

my $last_commit = $is_head?"HEAD":"4b825dc642cb6eb9a060e54bf8d69288fbee4904";
my @changes = `git diff-index --name-only $last_commit`;

my %policies = ( no_underscore => qr/_/ );

for my $f (@changes) {
    for my $p ( keys %policies ) {
	if ($f =~ /$policies{$p}/) {
	    die "[FORMATO]: $p ";
	}
    }
}

✓ TODO hito 12

Elegir marco de test + añadir test a tareas

En agil.yaml

testing:
    runner: make
    framework: prove