Trace: » systemundertest » trinidad » frontpage » download » querycommand » systemundertest
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
