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

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함

카테고리

SetUpFixture tutorial -FitLibrary-

2013. 8. 17. 00:18 | Posted by 솔웅


반응형

FitLibrary

FitLibrary는 fixture의 third-party set으로 시작했습니다. 하지만 이 기능이 하도 유용해서 지금은 standard test 타입의 하나로 간주되고 있습니다. 자바버전에서는 아직 별도의 라이브러리로 관리됩니다.






SetUpFixture


SetUpFixture는 아무것도 테스트하지 않고 싶을 때 ColumnFixture를 완벽하게 대신할 수 있는 fixture 입니다. 다른 fixture들을 위한 stage를 준비하기 위해서 사용하는 것이죠. 예를 들어 데이터메이스의 테이블에 row들을 insert하거나 이후의 테스트들에서 사용될 domain object들을 생성할 때 이 SetUpFixture를 사용하실 수 있습니다.




Table Format

첫번째 줄은 fixture 클래스 이름이 됩니다. 두번째줄은 객체의 프로퍼티 이름들 입니다. 이후의 모든 줄들은 프로퍼티값들을 가지게 됩니다. 이 SetUpFixture table 에는 output cell 이 없습니다. 모두 input에만 사용이 됩니다.

!|SetUpFixtureTest|
|player|post code|balance|
|John Smith|SW4 66Z|10.00|
|Michael Jordan|NE1 8AT|12.00|



Fixture class

이 fixture 클래스는 fitlibrary.SetUpFexture를 extend 하고 single method를 정의합니다. 메소드 이름은 연결된 테이블에 있는 프로퍼티 이름들과 같아야 합니다. (두개의 분리된 단어를 표현하려면 CamelCase capitalisation을 사용하시면 됩니다.) 이 메소드는 테이블의 각 컬럼들에 대해 하나씩의 argument를 가지게 됩니다.



Java Source Code

package info.fitnesse.fixturegallery;

import info.fitnesse.fixturegallery.domain.Player;

import java.util.ArrayList;
import java.util.List;

import fitlibrary.SetUpFixture;

public class SetUpFixtureTest extends SetUpFixture{
	public SetUpFixtureTest() {
		 Player.players.clear();
	}
	public void playerPostCodeBalance(String name, String postCode, double balance){
	 Player.addPlayer(name, postCode, balance) ;
 }
}

.NET Source Code

namespace info.fitnesse.fixturegallery
{
    public class SetUpFixtureTest : fitlibrary.SetUpFixture
    {
        public SetUpFixtureTest()
        {
            Player.players.Clear();
        }
        public void PlayerPostcodeBalance(string player, string postCode, decimal balance)
        {
            Player p = new Player();
            p.Name = player;
            p.PostCode = postCode;
            p.Balance = balance;
            Player.players.Add(p);
        }
       }
}

Python Source Code

from fitLib.SetUpFixture import SetUpFixture
from info.fitnesse.fixturegallery.domain.Player import Player

class SetUpFixtureTest(SetUpFixture):
    _typeDict = {}

    def __init__(self):
        Player.players = []

    # JAVA: void playerPostCodeBalance(String name, String postCode, double balance){
    _typeDict["playerPostCodeBalance.types"] = [ None, "String", "String", "Float" ]
    def playerPostCodeBalance(self, name, postCode, balance):
        Player.addPlayer(name, postCode, balance)




Notes

메소드 이름은 길어 질 수도 있습니다. 이런 긴 메소드 이름을 타이핑하다보면 에러가 발생할 수가 있습니다. 매뉴얼로 타이핑하는 대신 테이블을 작성하고 test를 run 하세요. 그러면 처음에는 fail 하게 될 겁니다.



Usage

SetUpFixture는 domain object들을 신속하게 initialise 하고자 할 때 사용하실 수 있습니다. 데이터베이스 테이블을 준비하거나 서로 다른 argument들을 pass 해서 메소드를 여러번 실행시키고자 할 때 사용하기 좋습니다.

result나 error verification이 중요할 때 이 SetUpFixture를 사용하지는 마세요. 그럴때는 ColumnFixture를 사용하시거나 CalculateFixture를 사용하시는게 더 좋습니다.

반응형

Import Fixture Tutorial & Summery (FitNesse)

2013. 8. 17. 00:10 | Posted by 솔웅


반응형

Import

Import fixture는 FitNesse에게 fixture class들에 대해 어디를 봐야될지 얘기해야 할 때 사용될 수 있다. namespace나 package 를 import 하고 나면 여러분은 더 이상 해당 fixture 클래스의 전체 이름을 다 쓰지 않아도 됩니다. 그러면 table을 좀 더 가독성 있도록 만들 수 있게 되겠죠.



Table Form

테이블의 첫번째 줄은 import 가 되어야 합니다. 그 다음 줄들은 import 할 namespace와 package들의 리스트들입니다. 한 셀당 한 row 입니다.

|Import|
|info.fitnesse.fixturegallery|




Notes

.NET 버전은 대소분자 구분을 하지 않습니다. 그러니까 첫번째 줄은 import를 쓰던 Import 를 사용하던 상관 없습니다. 자바버전은 대소분자 구분을 합니다. 그러니 대소분자 구분을 확실히 하셔서 사용하셔야 합니다.
flow mode에서는 Import 테이블이 flow calss name을 initial 한 이후에 와야 된다는 것을 잊지 마세요. 그렇지 않으면 folw mode가 제대로 작동하지 않을 겁니다. (Flow Mode links)



Usage

test page를 좀 더 가독성 있게 만들기 위해서 이 Import fixture를 사용합니다. test suite의 SetUp 페이지에 이 테이블을 넣으실 수 있습니다.



SummeryFixture

SummaryFixture는 페이지의 extra 데이터를 표시하기 위해 사용합니다. fit.SummaryFixture table을 페이지 아래에 추가히세요. 그러면 results 에 3줄의 테이블이 추가 될 겁니다. 그리고 여기에 페이지의 standard counts가 주어질 겁니다. (right,wrong, ignore, exceptions) 또한 date와 fixture가 실행된 시간도 표시됩니다. 이 기능은 꼭 필요한 것은 아닙니다. 하지만 build report가 필요할 때 사용하실 수 있겠죠. 개별 페이지의 실행시간 같은 것을 뽑을 때 말이죠.

==> 여기까지는 Fixture의 Basic 입니다. 이 외에 FitLibrary Fixture의 Fixture 들이 있는데 여기에 대해서는 다음 글에서 계속 이어가겠습니다.


참고로 아래 Basic Fixture에 종류와 원본 링크를 넣겠습니다.

원문에 관심 있으신 분은 링크를 따라 가시면 보실 수 있습니다.





Basic Fixtures


ColumnFixture
ActionFixture
RowFixture
TableFixture
Import
SummaryFixture

반응형


반응형

오늘은 어떻게 하다 보니까 아침 6시 반에 출근하게 됐습니다.


여유 있는 시간에 아래와 같은 생각을 해 봤습니다.


===============================


오늘은 박정희에 대한 제 생각을 정리해 보고 싶습니다.

누가 저에게 박정희는 어떤 사람이냐고 물어보면 저는 박정희는 나쁜 놈 입니다라고 말 할 겁니다.

그러면 반대쪽에서는 이런 저런 이유를 대면서 박정희는 아주 훌륭한 사람이라고 설명을 하겠죠.

아마 저는 그 얘기를 가만히 듣고 나서 그 말도 맞다 박정희는 나쁜 놈은 아니다라고 말 할 지도 모르겠습니다.
왜냐하면 그 사람들 말도 일리는 있거든요.

저는 살아있는 박정희를 말하는데 그 사람들은 죽은 박정희를 말하는 거거든요.
죽은 사람한테 어떻게 나쁜놈이니 어떻느니 하는 악담을 할 수 있겠습니까?

제가 박정희를 나쁜 놈이라고 말하는 것은 지금 현재 살아있는 박정희를 보고 하는 말입니다.

지금 박정희가 어떻게 살아 있길래 그 놈은 나쁜 놈일까요?



우리 나라를 구성하는 국민들의 공통된 합의 점이 있습니다.
그 합의점의 중요하다고 생각하는 부분 중 문서화 된 부분이 헌법이구요.
(헌법은 절대적인 것은 아닙니다. 언제든지 수정될 수 있습니다. 하지만 그 방향이 더 중요한 국민들의 공통된 합의점을 반영하기 위할 때만 개선이 될 수 있겠죠.)

그 헌법 정신에 위배되는 즉 아주 기본적인 국민의 합의점에 반하는 그런 행동이나 세력들은 나쁜 놈이라고 말 할 수 있습니다.

우리나라 헌법 정신은 자유 민주주의와 우리민족이 일제와 독재에 저항한 민족 정신을 추구합니다.

저는 자유 민주주의의 가장 중요한 부분이면서 현재 지켜지지 못하고 있는 부분이 공정한 경쟁과 기회의 균등이라고 봅니다.
바로 부패와 비리속에서 성장한 우리나라 경제가 바로 이 공정한 경쟁과 기회의 균등을 억누르고 있다고 봅니다.

이러한 패러다임은 우리의 역사를 통해서 영향을 받아서이겠지만 가장 큰 영향을 준 시기는 바로 근대화 시기이겠죠.
우리나라 근대화에 가장 큰 영향을 미친 사람이 이 시기 18년간 장기집권을 한 박정희일 테구요.

박정희가 18년간 비리와 부패의 경제 패러다임을 구축했기 때문에 나쁜 놈인가?
그렇게 얘기하면 박정희를 지지하는 쪽에서는 이런 저런 사례와 근거와 이유를 대며 박정희는 훌륭한 사람이라고 말 할 겁니다.

그럼 저는 그 얘기를 가만히 듣고 나서 그것만 가지고 박정희를 나쁜 놈이라고 말하는건 곤란하다라고 말 할 겁니다.

생각해 보세요.

한 인간으로서 가장 험난했던 시기인 일제시대와, 해방 그리고 6.25 와 이후의 가난했던 시대....
이 시대를 지냈던 것 만으로도 그 사람은 충분히 존경받을 만한 가치가 있습니다.
그래서 저는 더더욱 우리의 아버지와 할아버지들을 존경하구요.




박정희가 나쁜 놈인 이유는 이 비리와 부패의 아방궁안에서 엄청난 혜택을 받으며 부와 권력을 유지하는 놈들이 박정희를 전면에 내세우면서 자기들의 치부를 감추기 때문입니다.

이렇게 비리와 부패의 혜택을 받은 세력들의 주류는 일제시대부터 기원합니다.
친일파로 일제시대때 교육이며 행정경험이며 사회적인 권력(미디어같은) 그리고 이를 통한 부의 축적같은 혜택을 받은 놈들이 해방후 그리고 박정희 집권시기 비리와 부패의 그늘에서 완벽한 공간을 확보했습니다.

바로 박정희 자신이 친일파이고 죽을 때까지 메이지 유신의 지사들을 존경했으며 그들이 만들었던 일본의 유신시대를 그대로 본받으려고 했기 때문에 이런 친일 세력들이 건재할 수 있었죠.
그리고 박정희의 독재속에서 그들은 많은 혜택을 받으며 승승장구 할 수 있었습니다.

자 헌법 정신에는 자유경쟁과 공정한 기회가 생명인 자유민주주의를 지향하고 외세와 독재에 저항한 민족정신을 추구하고 있습니다.
하지만 이 비리와 부패세력들은 이 기본적인 헌법정신에 떳떳하지 못한 존재들입니다.

이들은 자신들이 떳떳하지 못하기 때문에 비슷한 박정희를 허황되게 신격화를 하면서 띄우는 겁니다.
경제를 발전시킨 민족의 영웅인것 처럼 박정희를 추대하면서 박정희의 친일 전력과 독재 그리고 비리와 부패 패러다임은 아무것도 아닌 것 처럼 만들어 버리는 거죠.
그래야지만 자신들의 친일 전력과 독재에 협조하고 비리 부패 패러다임에서 안주했던 악행을 숨길수 있고 그로 인해 취득한 부와 권력을 계속 유지할 수 있기 때문이죠.

저는 죽은 박정희는 그 험난하고 어려운 시기를 견뎌낸 우리의 아버지와 할아버지들과 마찬가지로 존경받아야 한다고 생각합니다.
그리고 그 시대적인 상황에서 행한 여러 일들.. 친일과 독재와 근대화와 뭐 그런 것들을 제대로 평가 받아야 합니다.

지금은 떳떳하지 못한 세력들이 자신들의 떳떳하지 못한 부분을 가리려고 박정희를 신격화 하는 바람에 그는 제대로 평가받지 못하고 있습니다.

바로 그 이유 때문에 지금 박정희는 나쁜 놈으로 살아 있는 겁니다.





박근혜가 진정 자신의 아버지인 박정희를 위한다면 박정희를 그 비리와 부패세력으로 부터 떼어 내야 합니다.
그 때의 시대 정신이 가난 극복이었다면 지금의 시대정신은 진정한 자유민주주의의 실현과 복지사회 건설입니다.

대통령이 되서도 그 때 그시절 사람들에 둘러싸여 계속 떳떳하지 못한 세력들의 편에서 통치를 한다면 영원히 자신의 아버지를 나쁜 놈으로 만드는 것입니다.

한홍구 교수는 '이제 드디어 박정희에 대한 환상이 박근혜에 대한 환멸로 묻히게 됐다'고 말했습니다.

박근혜는 지금 박정희를 비리 부패 세력으로 부터 떼어내서 여느 우리의 아버지와 할아버지 처럼 존경받는 인물로 만들 것이냐
아니면 계속 그 친일 비리 부패 세력에게 아버지가 이용당해서 영원히 나쁜 놈으로 기록되게 할 것이냐 이 둘 중의 하나를 할 수 있는 위치에 있습니다.

하지만 역사를 바라보는 눈이라던가 민족의식, 정치 의식 심지어는 넓고 깊게 사고하는 정치인의 능력의 관점에서 볼 때 전자쪽으로 가는 것은 불가능해 보입니다.

어쨌든 박근혜는 효녀 노릇을 할 것 같습니다.
자신의 무능력을 통해서 비리 부패세력들이 만들어 놓은 박정희 환상을 깨뜨릴 것 같기 때문입니다.
그 환상이 깨지고 그것이 현실에 반영돼 비리 부패 세력들의 입지가 좁아지고 좀 더 공정한 사회 진정한 자유민주주의가 실현되고 민족 정신이 되살아나 우리나라가 더 부강해 질 것이기 때문입니다.

전자의 방법으로 된다면 훨씬 더 좋겠지만 아쉽게도 박근혜에게는 그런 능력이 없어 보입니다.

저는 박정희를 우리 아버지들과 할아버지들 처럼 그 어려운 시대를 힘들게 견뎌낸 조상으로서 존경하고 싶습니다.
그런 존경받는 인물로 박정희를 만들고 싶습니다.

그래서 현실에서 비리 부패 세력에 의해서 만들어진 박정희 환상을 깨버리고 그 세력들은 일소하고 진정한 헌법 정신이 실현되는 사회를 만들기 위해 노력할 것입니다.

지금 현실에 살아있는 박정희는 분명히 나쁜 놈입니다.
하지만 그는 환상에서 깨어나서 충분히 존경받는 인물이 되어야 합니다. 우리의 아버지 어머니 그리고 할아버지 할머니들처럼.....


반응형