A Galeria de Fixtures também está disponível como documento PDF e um wiki FitNesse online. Acesse http://gojko.net/fitnesse/fixturegallery para mais informações.
Página anterior: Target objects Próxima página: Símbolos Página acima: Conceitos importantes

System under test

DoFixture e SequenceFixture podem ser usadas para automatizar o teste das suas classes de negócio diretamente, sem precisar redeclarar ou encapsular os métodos de negócio numa fixture. Esta funcionalidade é chamada System under test . Em Java, use o método setSystemUnderTest e passe o objeto de negócios. Em .NET, defina o objeto de negócios na proriedade mySystemUnderTest . Note que classes genéricas (templates) não podem ser usadas para este fim em Java, porque FIT vai falhar quando tentar encontrar os parâmetros apropriados e tentará usar Object para todos os métodos.

Mesmo quando o system under test é definido, você ainda pode chamar métodos das fixtures nos seus testes. Se o método não existir na fixture, FIT então procurará pelo método apropriado no system under test. Aqui está um exemplo que funciona com filas padrão em .NET (para fazê-lo funcionar em Java, é preciso encapsular a interface genérica Queue numa classe não genérica).

!|SystemUnderTest|
|Enqueue|directly calling queue|
|check|count|1|
|Generate|12|Messages|
|check|count|13|
|check|dequeue|directly calling queue|

Código-fonte em Java

package info.fitnesse.fixturegallery;

import fitlibrary.DoFixture;
import info.fitnesse.fixturegallery.domain.*;

public class SystemUnderTest extends DoFixture{
	
	Queue  queue;
	public SystemUnderTest (){
		queue=new Queue();
		setSystemUnderTest(queue);
	}
	public void generateMessages(int i){
		for (int cnt=0; cnt<i;cnt++){
			queue.enqueue("M"+i);
		}
	}
}

Código-fonte em .NET

using System;
using System.Collections.Generic;
using System.Text;

namespace info.fitnesse.fixturegallery
{
    public class SystemUnderTest: fitlibrary.DoFixture
    {
        Queue<string> queue = new Queue<string>();
        public SystemUnderTest()
        {
            this.mySystemUnderTest = queue;
        }
        public void GenerateMessages(int howmuch)
        {
            for (int i = 0; i < howmuch; i++)
                queue.Enqueue("M" + i);
        }
    }
}

Código-fonte em Python

from fitLib.DoFixture import DoFixture
from info.fitnesse.fixturegallery.domain.Queue import Queue

class SystemUnderTest(DoFixture):
    _typeDict = {
        # -- NEEDED-FOR: SystemUnderTestExample
        "GenerateMessages.RenameTo": "generateMessages"
    }

    def __init__(self):
        self.queue = Queue()
        self.setSystemUnderTest(self.queue)

    _typeDict["generateMessages.types"] = [ None, "Integer" ]
    def generateMessages(self, i):
        for dummy in xrange(i):
            self.queue.enqueue("M%d" % i)

Código-fonte em Smalltalk

'From VisualWorks®, 7.6 of March 3, 2008 on June 27, 2008 at 3:36:50 pm'!


Info.Fitnesse.Fixturegallery defineClass: #SystemUnderTest
	superclass: #{Fitlibrary.DoFixture}
	indexedType: #none
	private: false
	instanceVariableNames: 'queue '
	classInstanceVariableNames: ''
	imports: ''
	category: ''!

!Info.Fitnesse.Fixturegallery.SystemUnderTest methodsFor: 'actions'!

generateMessages: anInteger
	0
		to: anInteger - 1
		do: [:i | queue enqueue: 'M' , i printString]! !

!Info.Fitnesse.Fixturegallery.SystemUnderTest methodsFor: 'initialize-release'!

initialize
	super initialize.
	queue := Queue new.
	self systemUnderTest: queue! !

!Info.Fitnesse.Fixturegallery.SystemUnderTest methodsFor: 'type access'!

signatureFor: aSymbol
	aSymbol == #generateMessages: ifTrue: [^MethodSignature with: Integer]! !

Página anterior: Target objects Próxima página: Símbolos Página acima: Conceitos importantes


Personal Tools