KikainekoMocker

テストのサンプル

サンプル

機械猫モッカーはJUnitのテストケースをパスする擬似クラスを生成しますが たとえば、以下のようなテストをパスします。


  package sample;
  import junit.framework.TestCase;

  public class CalcTest extends TestCase {
      Calc calc;
      
      protected void setUp() throws Exception {
          super.setUp();
          calc=new Calc();
      }
      
      public void testGet(){
          assertEquals(0,calc.get(0,0));
      }

      public void testAdd(){
          calc.set("+");
          assertEquals(5,calc.get(2,3));
      }
      
      public void testAddInteger(){
          calc.set("+");
          Integer i20=new Integer(20);
          Integer i30=new Integer(30);
          Integer i50=new Integer(50);
          assertEquals(i50,calc.get(i20,i30));
      }
      
      public void testMulti(){
          calc.set("*");
          assertEquals(6,calc.get(2,3));
      }
      
      public void testDiv(){
          calc.set("/");
          assertEquals(2,calc.get(4,2));
      }
  }
  

上のCalcTestを見ると、プリミティブ型やオブジェクト型を操作できることが分かります。
このように機械猫モッカーは任意の型を操作することが可能です (ただし、全ての型を安全に操作できるわけではありません。詳細は仕様のドキュメントをご覧ください)。

また、以下のようなテストもパスします。

  package sample;
  import junit.framework.TestCase;
  
  public class TokenTest extends TestCase {
      Token token;
      
      protected void setUp() throws Exception {
          super.setUp();
      }

      public void testNext(){
          token=new Token("a=10*c;");
          assertEquals("a",token.next());
          assertEquals("=",token.next());
          assertEquals("10",token.next());
          assertEquals("*",token.next());
          assertEquals("c",token.next());
          assertEquals(";",token.next());
      }
      public void testLength(){
          token=new Token("a=10*c;");
          assertEquals("6",token.length());
      }

  }
  

TokenTestを見ると、同一メソッドを複数回実行していますが、機械猫モッカーはこれも問題なく扱えます。
簡易な擬似クラスでは、1メソッドに1つの返り値しか持たせない場合がありますが、機械猫モッカーは呼び出し順なども考慮して 返り値を決定してます。

また、すでに対象となるクラスが存在する場合、
既存のコードはすべてコメントアウトして、モックコードを書き込みます。