Menu

FrontPage

Eclipseプラグイン
Eclipse小技集
リファクタリング講座
テスティングフレームワーク JUnit
MSDEについて



The 20 newest affair
2010-09-092010-09-082010-09-072010-09-062010-09-012010-08-312010-08-272010-08-242010-08-232010-08-172010-08-162010-07-302010-07-212010-07-132010-06-272010-06-182010-06-172010-06-16

IReturnValueProvider


djUnitバージョン0.5.0で、メソッド実行時のパラメータによって返却値を変更できる仕組みを実装しました。

addReturnValueなどで、返却値に「IReturnValueProviderをimplementしたクラスのオブジェクト」を設定することで、この仕組みを利用できます。

Sample


IReturnValueProviderを使用したサンプルです。

Messagesクラス
public class Messages {

    public String getMessage(String message, int index) {
        return message + "[" + index + "]";
    }

}

MessagesTestクラス
import jp.co.dgic.testing.common.virtualmock.IReturnValueProvider;
import jp.co.dgic.testing.framework.DJUnitTestCase;

public class MessagesTest extends DJUnitTestCase {

    private class GetMessageReturnValueProvider implements IReturnValueProvider {

        public Object createReturnValue(Object[] argsthrows Throwable {
            String message = (Stringargs[0];
            int index = ((Integerargs[1]).intValue();
            
            if (index == 3) {
                return "Index is 3.";
            }
            
            return "Mock return value.";
        }
        
    }

    public void testGetMessage001() {
        System.out.println("[testGetMessage001]");

        Messages messages = new Messages();
        
        System.out.println(messages.getMessage("Hello"0));
    }

    public void testGetMessage002() {
        System.out.println("[testGetMessage002]");
        
        setReturnValueAtAllTimes("Messages""getMessage"new GetMessageReturnValueProvider());

        Messages messages = new Messages();
        
        System.out.println(messages.getMessage("Hello"0));
        System.out.println(messages.getMessage("Hello"1));
        System.out.println(messages.getMessage("Hello"2));
        System.out.println(messages.getMessage("Hello"3));
        System.out.println(messages.getMessage("Hello"4));
        System.out.println(messages.getMessage("Hello"5));
    }
}

IReturnValueProviderを実装したGetMessageReturnValueProviderクラスを定義し、2番目のテストメソッドでは、そのインスタンスをsetReturnValueAtAllTimesでセットしています。

  • MessagesTestの実行結果
[testGetMessage001]
Hello[0]
[testGetMessage002]
Mock return value.
Mock return value.
Mock return value.
Index is 3.
Mock return value.
Mock return value.


Attached File: [Attached File All List]

Lastmodified: 2004-10-18 (月) 13:22:44 (2151d)