実戦Groovy(2)-最初のGwitterクラスを作成


Groovyスクリプトは非公式のユーティリティの作成と概念の確認に適していますが、Groovyクラスの作成も難しくありません.また、GroovyクラスをコンパイルしてJavaコードから呼び出すこともできます.
例えば、リスト4に示すTweet.groovyを記述することができる.
リスト4.Tweet.groovy
				
class Tweet{
  String content
  String published
  String author
  
  String toString(){
    return "${author}: ${content}"
  }
}

これはPlain Old Groovy Object(POGO)で、非常に複雑なPlain Old Java Object(POJO)の代替品です.
今、 インベントリ2 の検索スクリプトをSearch.groovyに変換します.リスト5を参照してください.
リスト5.Search.groovy
				
class Search{
  static final String addr = "http://search.twitter.com/search.atom?q="
  
  static Object[] byKeyword(String query){
    def results = []
    def feed = new XmlSlurper().parse(addr + query)
    feed.entry.each{entry->
      def tweet = new Tweet()
      tweet.author = entry.author.name
      tweet.published = entry.published
      tweet.content = entry.title
      results << tweet
    }
    return results as Object[]    
  }
}

通常、私は結果を維持します.  java.util.ArrayList  で行ないます.ただし、本明細書の後に使用する  javax.swing.JList  1つ必要  Object[]なので、ここでは事前に準備をしておきます.
注意、私はSearch.groovyから削除しました.  main()  方法.今、このクラスとどのように対話しますか?もちろんユニットテストに合格できます!SearchTest.groovyを作成します.リスト6を参照してください.
リスト6.SearchTest.groovy
				
class SearchTest extends GroovyTestCase{
  void testSearchByKeyword(){
    def results = Search.byKeyword("thirstyhead")
    results.each{
      assertTrue it.content.toLowerCase().contains("thirstyhead") ||
                 it.author.toLowerCase().contains("thirstyhead")
    }    
  }
}

コマンドプロンプトに入力すると  groovy SearchTest、そして  OK (1 test)(リスト7参照)では、検索スクリプトを再利用可能なクラスに変換することに成功したことを示します.
インベントリ7.正常なテストの実行結果
				
$ groovy SearchTest
.
Time: 4.64

OK (1 test)


現在、下部のインフラストラクチャはすでに位置しています.次のステップは、きれいなフロントエンドを提供することです.