Trace: » integrationtests » simbolosemfixtures » rowfixture » dofixture » additional_libraries » conceitosimportantes » webtest » dotnet » sequencefixture
SequenceFixture
SequenceFixture é bastante parecida com a DoFixture e possui quase todas as mesmas características -- de fato a única diferença entre as duas é a convenção para nomes de métodos. Ao invés de usar células ímpares para construir os nomes dos métodos, a SequenceFixture assume a primeira célula em cada linha como nome do método, e todas as outras células como argumentos (caso não haja nenhuma palavra-chave para modificar a funcionalidade da linha) Todas as palavras-chave da DoFixture são suportadas na SequenceFixture também, assim como flow mode (veja Flow Mode ) e encapsulamento do objetos de domínio (veja System under test ).
Formato da Tabela
O formato da tabela é o mesmo da DoFixture (veja DoFixture), com a diferença da nomenclatura dos métodos.
!|SequenceFixtureTest| |fill|10|x| |check|char at|4|x| |set list|A,B,C,D| |check|char at|2|C|
Classe da Fixture
A classe da fixture deve estender fitlibrary.SequenceFixture. Declare métodos públicos para todas as verificações e ações usando a primeira célula como nome do método e todas as outras células como argumentos.
Código-fonte em Java
package info.fitnesse.fixturegallery;
import java.util.Arrays;
import fitlibrary.SequenceFixture;
public class SequenceFixtureTest extends SequenceFixture{
public String letters;
public void fill(int count,char c){
char[] arr=new char[count];
Arrays.fill(arr,c);
letters=new String(arr);
}
public void setList(char[] array){
letters=new String(array);
}
public char charAt(int position){
return letters.charAt(position);
}
}
Código-fonte em .NET
using System;
namespace info.fitnesse.fixturegallery
{
public class SequenceFixtureTest : fitlibrary.SequenceFixture
{
private String contents;
public void Fill(int howmany, String what)
{
contents = "";
for (int i = 0; i < howmany; i++)
{
contents = contents + what;
}
}
public void SetList(String[] strings)
{
contents = "";
foreach (String s in strings)
{
contents = contents + s;
}
}
public char CharAt(int index)
{
return contents[index];
}
}
}
Código-fonte em Python
from fitLib.SequenceFixture import SequenceFixture
from info.fitnesse.fixturegallery.typeadapter import buildListTypeAdapterFor
class SequenceFixtureTest(SequenceFixture):
_typeDict = {}
def __init__(self):
self.letters = ""
_typeDict["fill.types"] = [ None, "Integer", "Char" ]
def fill(self, count, c):
self.letters = c * count #< FILL: Repeact char count times.
# JAVA: public void setList(char[] array){
ARRAY_OF_CHAR_TYPE_ADAPTER = buildListTypeAdapterFor("Char")
_typeDict["setList.types"] = [ None, ARRAY_OF_CHAR_TYPE_ADAPTER ]
def setList(self, array):
self.letters = "".join(array) #< Concatenate array of chars to string.
_typeDict["charAt.types"] = [ "Char", "Integer" ]
def charAt(self, position):
return self.letters[position]
Código-fonte em Smalltalk
'From VisualWorks®, 7.6 of March 3, 2008 on June 27, 2008 at 3:36:43 pm'!
Info.Fitnesse.Fixturegallery defineClass: #SequenceFixtureTest
superclass: #{Fitlibrary.SequenceFixture}
indexedType: #none
private: false
instanceVariableNames: 'letters '
classInstanceVariableNames: ''
imports: ''
category: ''!
!Info.Fitnesse.Fixturegallery.SequenceFixtureTest methodsFor: 'accessing'!
charAt: anInteger
^letters at: anInteger + 1! !
!Info.Fitnesse.Fixturegallery.SequenceFixtureTest methodsFor: 'actions'!
fill: anInteger _: aCharacter
letters := String new: anInteger withAll: aCharacter!
setList: anArray
letters := String withAll: anArray! !
!Info.Fitnesse.Fixturegallery.SequenceFixtureTest methodsFor: 'type access'!
signatureFor: aSymbol
aSymbol == #fill:_:
ifTrue: [^MethodSignature with: Integer with: Character].
aSymbol == #charAt:
ifTrue: [^MethodSignature with: Integer returning: Character].
aSymbol == #setList:
ifTrue: [^MethodSignature with: (Array with: Character)]! !
Utilização
SequenceFixture tem toda a flexidade e poder da DoFixture, porém sem nomes de métodos complicados. É mais útil para testes mais técnicos, de workflow, especialmente para mapear tabelas FitNesse diretamente para serviços do domínio de negócios (veja System under test).
Em Smalltalk, os nomes dos métodos da SequenceFixture são os complicados. Use _: para qualquer argumento após o primeiro. DoFixture tipicamente produz nomes de métodos muito mais legíveis em Smalltalk.
Página anterior: DoFixture Próxima página: ArrayFixture Página acima: Fixtures da FitLibrary
