HelloWorldという文字列を10回表示するプログラムを例にします。
01 public class HelloWorld { 02 03 public static void main(String[] args) { 04 for (int i = 0; i < 10; i++) { 05 System.out.println(getMessage()); 06 } 07 } 08 09 private static String getMessage() { 10 return "Hello World."; 11 } 12 } |
getMessage()メソッドが10回実行されています。
こういった複数回よびだされるメソッドに返却値をセットする場合のバリエーションを考えて見ます。
addReturnValueは、指定された返却値をキューに保持します。
実際に、指定されたメソッドが実行されると、キューから返却値を取りだして返却しますので、キューの返却値は減ります。
01 import jp.co.dgic.testing.framework.DJUnitTestCase; 02 03 public class HelloWorldTest extends DJUnitTestCase { 04 05 // 省略 06 07 public void testMain001() { 08 09 addReturnValue("HelloWorld", "getMessage", "こんにちわ。"); 10 addReturnValue("HelloWorld", "getMessage", "ちわっす。"); 11 addReturnValue("HelloWorld", "getMessage", "ぅい。"); 12 13 HelloWorld.main(null); 14 } 15 16 } |
このテストの実行結果は、
こんにちわ。
ちわっす。
ぅい。
Hello World.
Hello World.
Hello World.
Hello World.
Hello World.
Hello World.
Hello World.
となります。
今度は、5回目と7回目のgetMessage()に戻り値をセットしてみます。
01 import jp.co.dgic.testing.framework.DJUnitTestCase; 02 03 public class HelloWorldTest extends DJUnitTestCase { 04 05 // 省略 06 07 public void testMain001() { 08 09 setReturnValueAt("HelloWorld", "getMessage", 4, "こんにちわ。"); 10 setReturnValueAt("HelloWorld", "getMessage", 6, "ちわっす。"); 11 12 HelloWorld.main(null); 13 } 14 15 } |
実行結果は、
Hello World.
Hello World.
Hello World.
Hello World.
こんにちわ。
Hello World.
ちわっす。
Hello World.
Hello World.
Hello World.
となります。
setReturnValueAtは、
void DJUnitTestCase#setReturnValueAt(String クラス名, String メソッド名, int 返却値キューのインデックス, Object 返却値);
で、3番目のインデックスは、0から始まります。
getMessage()が何回呼ばれても、一定の返却値を返すようにしてみます。
01 public class HelloWorldTest extends DJUnitTestCase { 02 03 // 省略 04 05 public void testMain001() { 06 07 setReturnValueAtAllTimes("HelloWorld", "getMessage", "ども。"); 08 09 HelloWorld.main(null); 10 } 11 12 } |
実行結果は、
ども。
ども。
ども。
ども。
ども。
ども。
ども。
ども。
ども。
ども。
となります。
setReturnValueAtAllTimesは、
void DJUnitTestCase#setReturnValueAtAllTimes(String クラス名, String メソッド名, Object 返却値);
で、addReturnValue, setReturnValueAtよりも優先されます。
たとえば、
01 import jp.co.dgic.testing.framework.DJUnitTestCase; 02 03 public class HelloWorldTest extends DJUnitTestCase { 04 05 // 省略 06 07 public void testMain001() { 08 09 addReturnValue("HelloWorld", "getMessage", "add, ども。"); 10 setReturnValueAt("HelloWorld", "getMessage", 4, "set[4], ども。"); 11 12 setReturnValueAtAllTimes("HelloWorld", "getMessage", "ども。"); 13 14 addReturnValue("HelloWorld", "getMessage", "add, ども。"); 15 setReturnValueAt("HelloWorld", "getMessage", 6, "set[6], ども。"); 16 17 HelloWorld.main(null); 18 } 19 20 } |
としても、実行結果は、
ども。
ども。
ども。
ども。
ども。
ども。
ども。
ども。
ども。
ども。
となります。
addReturnValueの要領で、null値をセットするためのaddReturnNullメソッドがあるように、
setReturnValueAt, setReturnValueAtAllTimesの要領で、null値をセットするためのメソッドがあります。
void DJUnitTestCase#setReturnNullAt(String クラス名, String メソッド名, int 返却値キューのインデックス);
void DJUnitTestCase#setReturnNullAtAllTimes(String クラス名, String メソッド名);
|