반응형
블로그 이미지
개발자로서 현장에서 일하면서 새로 접하는 기술들이나 알게된 정보 등을 정리하기 위한 블로그입니다. 운 좋게 미국에서 큰 회사들의 프로젝트에서 컬설턴트로 일하고 있어서 새로운 기술들을 접할 기회가 많이 있습니다. 미국의 IT 프로젝트에서 사용되는 툴들에 대해 많은 분들과 정보를 공유하고 싶습니다.
솔웅

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리

SequenceFixture Tutorial - FitLibrary -

2013. 8. 21. 23:19 | Posted by 솔웅


반응형

SequenceFixture



SequenceFixture는 DoFixture와 아주 유사합니다. 거의 기능이 같죠. 다른 점이 있다면 메소드에 대한 naming convention 입니다. 메소드 이름으로 홀수번째 cell 을 이용하는거 대신에 SequenceFixture는 메소드 이름으로 각 줄의 첫번째 cell 을 채택합니다. 그리고 다른 cell 들은 arguments가 되는거죠. (row functionality를 modify 해야 할 keyword가 없을 경우에요.) DoFixture에서 사용하는 모든 keyword들도 마찬가지로 SequenceFixture에서도 지원됩니다. flow mode(see Flow Mode )와 domain object wrapping(see System under test) 도 마찬가지구요.





Table Format

table format은 method naming 부분만 빼면은 DoFixture와 같습니다. (see DoFixture)



!|SequenceFixtureTest|
|fill|10|x|
|check|char at|4|x|
|set list|A,B,C,D|
|check|char at|2|C|



Fixture class

이 fixture class는 fitlibrary.SequenceFixture를 extend 해서 사용합니다. 모든 verification들과 action들에 대해 public method를 선언합니다. 이 때 첫번째 cell이 method 이름으로 사용됩니다. 그리고 다른 cell 들은 argument들이 됩니다.



Java Source Code



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);
    }
}



.NET Source Code


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];
        }
    }
}




Python Source Code


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]


Usage

SequenceFixtureDoFixture 가 가지고 있는 모든 flexibility와 기능을 모두 가지고 있습니다. 오직 method naming만 다릅니다. 이 fixture는 좀 더 technical 한 workflow test에 유용합니다.


반응형