Trace: » databaseunittests » tablefixture » variaveisdemarcacao » argumentosparafixtures » webtest » actionfixture » calculatefixture » fixturesbasicasdefit » conceitosimportantes » simbolosemfixtures
Símbolos
Símbolos são variáveis globais em FIT. Eles podem ser usados para trocar valores dinamicamente entre tabelas. Por exemplo, você pode criar um novo objeto de domínio (ex.: um player) e guardar seu ID ou o objeto inteiro como um símbolo, para que este possa ser usado depois em outro teste.
Símbolos em Java
Na implementação Java de FIT, ColumnFixture suporta uma sintaxe especial para símbolos. Adicione um sinal de igual antes do nome da coluna para que o valor do método ao invés de ser testado seja guardado como um símbolo. Em seguinda defina o nome dos símbolos nas células ao invés da saída esperada. Para recuperar o símbolo depois numa tabela diferente, coloque o sinal de igual depois do nome da coluna e novamente use o nome dos símbolos nas células da coluna.
!|ColumnFixtureTest| |firstPart|secondPart|=together()| |Hello|World|line1| !|SymbolsTest| |check|symbol value|line1|Hello, World| |set symbol value|line2|Hello| !|ColumnFixtureTest| |firstPart=|secondPart|together()| |line1|World|Hello, World, World| |line2|World|Hello, World|
Não é necessária nenhuma mudança na ColumnFixture -- ela não liga se símbolos são usados. No entanto quando o teste é executado, o valor real do símbolo é impresso na célula para sua facilidade (veja Figura 2: FitNesse imprime o valor de símbolos no relatório dos testes).
Figura 2: FitNesse imprime o valor de símbolos no relatório dos testes
Você pode acessar o valor dos símbolos programaticamente do seu código usando os métodos estáticos Fixture.getSymbol e Fixture.setSymbol na implementação Jaa de FIT. Aqui está o código-fonte para a tabela do meio do exemplo anterior:
package info.fitnesse.fixturegallery;
import fitlibrary.SequenceFixture;
import fit.Fixture;;
public class SymbolsTest extends SequenceFixture{
public Object symbolValue(String s){
return Fixture.getSymbol(s);
}
public void setSymbolValue(String symbol, String value){
Fixture.setSymbol(symbol, value);
}
}
Símbolos in .NET
Símbolos são muito mais flexíveis na implementação .NET de FIT. Ao invés de colunas inteiras, símbolos funcionam com células individualmente. Use >>nome para guardar o valor de uma célula como um símbolo, ou <<name para ler o valor de um símbolo e utilizá-lo numa célula. Como na implementação em Java, o valor real do símbulo é impresso na célula quando você executa o teste para facilitar a identificar problemas.
!|ColumnFixtureTest| |firstpart|secondpart|together?| |Hello|World|Hello, World| |Houston|We Have a Problem|>>houston| !|ColumnFixtureTest| |firstpart|secondpart|together?| |<<houston|World|Houston, We Have a Problem, World|
A sintaxe funciona em todas as fixturos, não apenas na ColumnFixture . Por padrão, isto não é ativo nas fixtures da FitLibrary, porém você pode ativar esta funcionalidade com a seguinte tabela:
!|Cell Handler Loader| |load|SymbolSaveHandler|FitLibrary| |load|SymbolRecallHandler|FitLibrary|
Na implementação em .NET de FIT, Fixture.Save e Fixture.Recall são usados para guardar e ler valores de símbolos a partir do código.
Símbolos em Python
Python suporta a sintaxe Java e uma sintaxe para células também, parecido com .NET. A diferença é que usa-se sempre << , e a operação depende da posição relativa ao nome do símbolo. Use nome<< para guardar o valor de uma célula como um símbolo, ou <<name para ler o valor de um símbolo e usá-lo numa célula.
!*** Variant 1: When all rows require symbol storage or retrieval !|ColumnFixtureTest| |firstPart|secondPart|=together()| |Hello|World|line1| !|SymbolsTest| |check|symbol value|line1|Hello, World| |set symbol value|line2|Hello| !|ColumnFixtureTest| |firstPart=|secondPart|together()| |line1|World|Hello, World, World| |line2|World|Hello, World| ***! !*** Variant 2: When one or more rows require symbol storage or retrieval !|ColumnFixtureTest| |firstPart|secondPart|together()| |Hello|World|<<line1| !|SymbolsTest| |check|symbol value|line1|Hello, World| |set symbol value|line2|Hello| !|ColumnFixtureTest| |firstPart|secondPart|together()| |line1<<|World|Hello, World, World| |line2<<|World|Hello, World| ***!
Símbolos em Smalltalk
Smalltalk suporta a sintaxe Java.
'From VisualWorks®, 7.6 of March 3, 2008 on June 27, 2008 at 3:36:48 pm'!
Info.Fitnesse.Fixturegallery defineClass: #SymbolsTest
superclass: #{Fitlibrary.SequenceFixture}
indexedType: #none
private: false
instanceVariableNames: ''
classInstanceVariableNames: ''
imports: ''
category: ''!
!Info.Fitnesse.Fixturegallery.SymbolsTest methodsFor: 'accessing'!
setSymbolValue: nameString _: valueString
Fixture symbolAt: nameString put: valueString!
symbolValue: aString
^Fixture symbolAt: aString! !
!Info.Fitnesse.Fixturegallery.SymbolsTest methodsFor: 'type access'!
signatureFor: aSymbol
aSymbol == #symbolValue:
ifTrue: [^MethodSignature with: String returning: String].
aSymbol == #setSymbolValue:_:
ifTrue: [^MethodSignature with: String with: String]! !
Página anterior: System under test Próxima página: Variáveis de Marcação Página acima: Conceitos importantes

