ユニットテスト

GASでもテストコード書きたいよね、ということでこんなん作ってみました。
まずは、unittest.gs というファイルを作成して、以下のコードをコピペ。

function test() {
  try {
    // 先頭が「__test」から始まるメソッドを探して実行
    var keys = Object.keys(this);
    for(var i=0; i<keys.length; ++i)
    {
      var funcName = keys[i];
      if( funcName.indexOf("__test") == 0 )
      {
        Logger.log("TEST START %s", funcName);
        this[funcName].call(this);
      }
    }    
  } catch(e) {
    Logger.log(e);
    Logger.log(e.stack);
  }
}

var Assert = {
  equal: function(expected, actual)
  {
    if( expected !== actual )
      throw new Error(expected + "!==" + actual);
  },
  isNull: function(expected)
  {
    if( expected !== null )
      throw new Error(expected + " is not null");
  }
}

んで、それぞれのgsファイルの最後にテストコードを書いておけば、test() を実行すると、それらのテストコードが全部実行されますよ、と
main.gs

function add(x, y)
{
  return x-y;
}

function __test_add()
{
  Assert.equal(5, add(2,3));
}