Trace: » introducao » arrayfixture » setupfixture » arrayfixture
ArrayFixture
ArrayFixture foi construída como uma substituta para RowFixture. Elas trabalham bem parecidas, porém com duas diferenças principais:
- A ordem dos elementos é levado em consideração na
ArrayFixture. ArrayFixturetrabalha com coleções genéricas além de arrays.
Formato da Tabela
A primeira linha da tabela lista o nome da classe da fixture. A segunda linha descreve a estrutura dos elementos da coleção -- nomes de atributos, propriedades e métodos.
!include -seamless SetUpFixture !|ArrayFixtureTest| |name|post code|credit limit| |John Smith|SW4 66Z|10| |Michael Jordan|NE1 8AT|12|
Classe da Fixture
A classe da fixture deve estender fitlibrary.ArrayFixture. Ao invés de um método query, a ArrayFixture trabalha com uma propriedade interna chamada actualCollection na versão Java. Inicie esta coleção no construtor de sua fixture para os resultados atuais que devem ser comparados com a tabela. Na versão .NET, isto é feito passando a coleção para o construtor da classe base.
Código-fonte em Java
package info.fitnesse.fixturegallery;
import info.fitnesse.fixturegallery.domain.Player;
import fitlibrary.ArrayFixture;
public class ArrayFixtureTest extends ArrayFixture{
public ArrayFixtureTest() {
setActualCollection(Player.players);
}
}
Código-fonte em .NET
using System;
using System.Collections.Generic;
using System.Text;
namespace info.fitnesse.fixturegallery
{
public class ArrayFixtureTest: fitlibrary.ArrayFixture
{
public ArrayFixtureTest():base(Player.players)
{
}
}
}
Código-fonte em Python
from fitLib.ArrayFixture import ArrayFixture
from info.fitnesse.fixturegallery.domain.Player import Player
class ArrayFixtureTest(ArrayFixture):
def __init__(self):
ArrayFixture.__init__(self)
self.paramCollection = Player.players
self.setActualCollection()
def getTargetClass(self):
return Player #< TYPE-HINT: For ValueObject class.
Código-fonte em Smalltalk
'From VisualWorks®, 7.6 of March 3, 2008 on June 27, 2008 at 3:36:19 pm'!
Info.Fitnesse.Fixturegallery defineClass: #ArrayFixtureTest
superclass: #{Fitlibrary.ArrayFixture}
indexedType: #none
private: false
instanceVariableNames: ''
classInstanceVariableNames: ''
imports: ''
category: ''!
!Info.Fitnesse.Fixturegallery.ArrayFixtureTest methodsFor: 'initialize-release'!
initialize
super initialize.
self actualCollection: Player players! !
Observações
Na versão Java, ArrayFixture trabalha corretamente com propriedades de JavaBeans também (de forma que se você possui um getter getCreditLimit, você pode chamar a coluna de credit limit.
Na versão .NET, propriedades, atributos e métodos são tratados da mesma forma, você pode usar qualquer um deles na tabela.
FitLibrary também possui uma SetFixture que ignora a ordem dos elementos e uma SubSetFixture que ignora elementos adicionais no resultado real. Estas duas fixtures são bem parecidas com a ArrayFixture no que trata de formato da tabela e estrutura da classe da fixture.
Utilização
Você pode usar a ArrayFixture ao invés da RowFixture quando a ordem dos elementos for importante ou para evitar a conversão de listas para arrays.
DoFixture encapsula converte métodos que retornam uma lista ou array em uma ArrayFixture, então você pode usar esta classe implicitamente com uma DoFixture para testas lista de objetos sem ter que escrever classes adicionais que estendem RowFixture . Para um exemplo, veja Flow Mode. Da mesma forma, métodos que retornam um conjunto (Set) de objetos são automaticamente convertidos para SetFixture.
Em Java, pode ser que faça mais sentido usar ArrayFixture para listas de objetos de domínio de negócios uma vez que esta fixture trabalha com getters de JavaBeans.
Página anterior: SequenceFixture Próxima página: CombinationFixture Página acima: Fixtures da FitLibrary
