GroovyTestCaseが勝手に動く理由
なんで,GroovyTestCaseの子供だけが,
> groovy HogeTest.groovy
で実行できんのかが不思議だったんで,調べてみたよ。
なんのことはない。GroovyShellの中で,GroovyTestCaseの子だけ特別扱いしてるだけだった。
実につまらん仕組みだのう。:-(
=== GroovyShell.java より抜粋 === private Object runMainOrTestOrRunnable(Class scriptClass, String[] args) { : try { // let's find a main method scriptClass.getMethod("main", new Class[]{String[].class}); // if that main method exist, invoke it return InvokerHelper.invokeMethod(scriptClass, "main", new Object[]{args}); } catch (NoSuchMethodException e) { // if it implements Runnable, try to instantiate it if (Runnable.class.isAssignableFrom(scriptClass)) { return runRunnable(scriptClass, args); } // if it's a unit test extending GroovyTestCase, run it with JUnit's TextRunner if (isUnitTestCase(scriptClass)) { return runTest(scriptClass); // <- これが,その仕組み } :