実戦Groovy(2)-最初のGwitterクラスを作成
Groovyスクリプトは非公式のユーティリティの作成と概念の確認に適していますが、Groovyクラスの作成も難しくありません.また、GroovyクラスをコンパイルしてJavaコードから呼び出すこともできます.
例えば、リスト4に示すTweet.groovyを記述することができる.
リスト4.Tweet.groovy
これはPlain Old Groovy Object(POGO)で、非常に複雑なPlain Old Java Object(POJO)の代替品です.
今、 インベントリ2 の検索スクリプトをSearch.groovyに変換します.リスト5を参照してください.
リスト5.Search.groovy
通常、私は結果を維持します.
注意、私はSearch.groovyから削除しました.
リスト6.SearchTest.groovy
コマンドプロンプトに入力すると
インベントリ7.正常なテストの実行結果
現在、下部のインフラストラクチャはすでに位置しています.次のステップは、きれいなフロントエンドを提供することです.
例えば、リスト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)
現在、下部のインフラストラクチャはすでに位置しています.次のステップは、きれいなフロントエンドを提供することです.