Whiteship's Note


대략난감 테스트 자동 생성기 Randoop

Good Tools : 2008.11.07 18:01


http://people.csail.mit.edu/cpacheco/randoop/1.2/doc/userman.php

처음 보고는 이야.. 아주 별에 별 도구가 다 있구나. 생각을 하고 과연.. 잘 만들어 줄까?? 라는 기대반 호기심 반으로 들려봤습니다.

테스트를 작성할 대상이 되는 클래스는 예전에 사부님이 시켜주신 TTD 트레이닝 중 하나 볼링게임. 그 중에서도 Frame이라는 클래스를 마루타 삼기로 햇습니다.

package domain;

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

public class Frame {

    List<Roll> rollList = new ArrayList<Roll>();
    protected Integer remainPinNumber = 10;
    private Integer number;

    public Frame(Integer frameNumber) {
        this.number = frameNumber;
    }

    public Boolean isEnd() {
        if (hasStrike() || rollList.size() == 2)
            return true;
        return false;
    }

    protected boolean hasStrike() {
        for (Roll roll : rollList)
            if (roll.getType() == RollType.STRIKE)
                return true;
        return false;
    }

    public void add(Roll roll) {
        setRollType(roll);
        remainPinNumber -= roll.getKnockDownPinCount();
        rollList.add(roll);
    }

    protected void setRollType(Roll roll) {
        Integer knockDownPinCount = roll.getKnockDownPinCount();
        if (rollList.size() == 0 && knockDownPinCount == 10)
            roll.setType(RollType.STRIKE);
        else if (knockDownPinCount == 0)
            roll.setType(RollType.GUTTER);
        else if (knockDownPinCount == remainPinNumber)
            roll.setType(RollType.SPARE);
    }

    public Integer getRollListSize() {
        return rollList.size();
    }

    public Integer getRemainPinNumber() {
        return remainPinNumber;
    }

    public Integer getScore() {
        Integer score = 0;
        for (Roll roll : rollList)
            score += roll.getScore();
        return score;
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder("frame(");
        builder.append(number).append(", ");
        for (Roll roll : rollList)
            builder.append(roll.toString());
        builder.append(", ").append(getScore()).append(")");
        return builder.toString();
    }

    public List<Roll> getRollList() {
        return rollList;
    }

}
 
그리 복잡한 클래스는 아니지만 비즈니스 로직이 들어있죠. 저걸 대상으로 테스트 코드를 생성해봤습니다.

10초 동안 돌려서 만들어 봤습니다. 콘솔에 뭔가가 찍히는데 무슨 의미인지는 모르겠고 마지막에 생성된 파일 목록이 나오는데 다섯개나 만들어져있습니다.


저 중에서 RandoopTest.java는 테스트 스위트 파일이고 네 개의 소스 파일이 테스트 코드를 담고 있습니다.

문제는... 대체 뭘 테스트 한 건지도 모르겠는 코드가 14000~2만 라인씩 생성된다는 겁니다. 이클립스가 막 죽으려고 버버버벅 거립니다.

그 중에서 젤 간단해 보이는 걸 몇 개 보여드릴까요?


대략 난감입니다. 테스트를 돌리면 전부 성공하긴 합니다.


그냥 웃음 밖에 안나옵니다. 크하하하하... 저 수 많은 코드와 녹색불은.. 무슨 의미가 있을까요?


top


아이고 머리야...

모하니?/Thinking : 2007.04.03 23:30


사용자 삽입 이미지

hda3 파티션이 꽉찼습니다.

요즘 위키와 블로그가 이상해서 서버에 들어가서 새로 만들어서 테스트를 해보려고 DB를 만들려고 하는데 에러가 납니다.

ERROR 1006 (HY000): Can't create database 'testdatabse' (errno: 28)

에러 코드 1006 이라고 읽어야 하는건지 28이라고 읽어야 하는건지 암튼 참 성의 없는 에러 메시지는 구글신을 찾아가게 만듭니다.

검색 결과 : http://archives.neohapsis.com/archives/mysql/2006-q4/0877.html
눈에 띄는 건 딱 한줄 "You need more disk space."

그래서 df를 쳐보게 된거죠.

그럼 DB와 저 파티션이 무슨 관계인가.. DB 파일 넣는 디렉토리가 어딘가...서버에 xampp를 설치해 뒀기 때문에 xampp안에 들어있습니다. xampp는 /opt/lampp 에 들어있습니다.

즉... DB가 저 파티션에 있다는 거죠.. 이를 어쩐댜;; DB 설정파일에서 폴더 바꿔주고 그 쪽으로 폴더를 옮겨주면 되나요? 뭔가 잘못될까봐 안해봤는데요. 흠.. 그냥 해볼까요? 흐흣.

일단 오늘은 머리가 아파서 일찍 자고 내일 해봐야겠네요. :)

'모하니? > Thinking' 카테고리의 다른 글

Chance  (4) 2007.06.12
폼 나는 회의실 빌리기 도전기  (0) 2007.06.05
살아야 한다면...  (0) 2007.05.29
Epril 제 1회 스프링 공개 세미나 참가 후기  (2) 2007.04.21
너(중간고사)랑 놀기 싫어!  (0) 2007.04.19
아이고 머리야...  (4) 2007.04.03
디버깅 7시간 30분  (2) 2007.03.27
에러 삼매경  (2) 2007.03.23
공부가 안 될 때..  (6) 2007.03.14
아.. 깜짝아..  (0) 2007.03.12
개강한지 일주일이 되었군요.  (2) 2007.03.09
top