08 Jan 2013, 13:00

WordPress完全移行マニュアル(BackWPupでリストア)

前回のエントリで、BackWPupを利用してWordPressで構築したサイトのバックアップを作成できたので、今回はこのデータをリストアしてみます。

前回はロリポップサーバからバックアップしたので、これをさくらインターネットにリストアしてみます。つまり、WordPress移行作業をします。(移行しないけど)

 <a href="http://px.a8.net/svt/ejp?a8mat=25GJVU+5CZJE+D8Y+61JSH" target="_blank"><br /><img border="0" alt="" src="http://www20.a8.net/svt/bgt?aid=130102698009&wid=004&eno=01&mid=s00000001717001015000&mc=1" width="468" height="60" /></a>   

移行手順

  • リストア先の環境を用意
  • リストア先サーバへファイルをアップロード
  • リストア用のBackWPupスクリプトを実行する
  • wp-config.phpを編集する

リストア先の環境を用意

まずは、さくらインターネットの管理画面にアクセスして、 MySQLの新しいデータベースを作成します。

右のツールバーから[データベースの設定] > [データベースの新規作成]を選択。
データベース名を入力して、[データベースを作成する]を選択。

これで、データベースが作成できました。
以下の情報をメモしておきます。

  • データベースサーバ名
  • 作成したデータベース名
  • データベース ユーザ名
  • データベース パスワード

リストア先サーバへファイルをアップロード

あらかじめBackWPupでバックアップしておいたzipファイルを解凍します。

リストア先のさくらインターネットのWordPressを配置するディレクトリに、解凍したファイルをまるごとアップロードします。

リストア用のBackWPupスクリプトを実行する

リストアをするためにはBackWPupのスクリプトを実行します。
まずは、スクリプトを以下のサイトから手に入れます。

  • Download 窶コ BackWPup.com
    • backwpup_db_restore.php

ダウンロードしたら、WordPressを配置するディレクトリにこのスクリプトもアップロードします。

アップロードしたスクリプトにブラウザからアクセスします。
Select file to restore:と表示されるので、データベースにチェックをつけて、Nextを選択。

メモしておいた情報を元に、フォーマットを埋めていく。

  • データベースサーバ名
  • 作成したデータベース名
  • データベース ユーザ名
  • データベース パスワード

 

[Restore Done. Please delete the SQL file and this script.]と表示されてリストア終了。

 

追記:2013年6月

なんと、backwpup_db_restore.php がなくなっていた。以下のエントリをもとにsqlのリストアをしてください。

BackWPupのbackwpup_db_restore.phpが消えた!それでもリストアする場合の方法メモ | Futurismo

wp-config.phpを編集する

メモしておいた以下の情報を、WordPressを配置するディレクトリにあるwp-config.phpを開いて修正する。

  • データベースサーバ名
  • 作成したデータベース名
  • データベース ユーザ名
  • データベース パスワード

 

感動の瞬間

新規URLにアクセスして、リストア終了! (^ ^) vv

はじめてでも、簡単にバックアップできました。
これで、枕を高くして眠ることができます。

07 Jan 2013, 11:54

TweetConsoleを使って、デスクトップからホットキーでtweetする

前回、twitcurlライブラリを利用した自作twitterクライアントでつぶやく方法を書いた。

フリーソフトで、この手のコマンドプロンプトからtwitterを利用するツールはけっこうあるらしく、その中で一つ『TweetConsole』とVBSを組み合わせたTipsを紹介。

TweetConsoleの詳細情報 : Vector ソフトを探す!

 

 

はじめに、twitterの認証が必要(これは、twtcnsl.exeを実行して認証する)

一度認証すれば、あとは認証は必要なく利用できる。

TweetConsoleでつぶやく方法は以下。twtcnslが実行コマンドで /tがオプション。

twtcnsl /t テスト投稿です

ダウンロードしたtwtcnsl.exeをどこかに移動して、前回作ったVBSを少し書き換える。

Program Filesみたいに、パス名に空白が入ると実行できない。

https://gist.github.com/4466704

06 Jan 2013, 10:41

twitcurlでWindowsのデスクトップからホットキーでtwitterにtweetする

はじめに

デスクトップからショートカットでtwitterにつぶやきたいなと思い、いろいろと探してみたがいいフリーソフトがみつからなかったので、twitCurlというC++用のtwitterライブラリを利用して、作ってみました。

[http://www.youtube.com/embed/2FhRoTXbpHM]

 

環境

  • Windows 7 64bit
  • Cygwin 1.7.17-1
  • curlツꀀツꀀツꀀツꀀツꀀ 7.28.1-1

twitcurlを使う

twitcurl – twitcurl is a pure C++ twitter API library based on cURL – Google Project Hosting

twitcurlとは、twitter API用のC++ライブラリ。

これを使えば、C++のソースからtwitter APIを叩くことができる。

twitcurlの導入

twitcurlの導入方法は以下が詳しい

今回は、Windows上のcygwin環境で試してみたので、Linuxの方を参考にした。

まずは、事前にg++,libcurl4-dev, subversion を setup.exeを使って取得しておく。

Curlというのは、ファイル転送用プロトコルをサポートするライブラリで、コレを利用して、HTTPをコマンドラインから利用するらしい。

次に、libtwitcurlをsvnコマンドで取得。

svn co http://twitcurl.googlecode.com/svn/trunk/libtwitcurl

subversionがないと、ソースを取ってこれない。

取得後に、libtwitcurlに移動して、makeコマンドでコンパイルをかける。

libtwitcurl.so.1.0という共用ライブラリが作成されるのでこれを/usr/lib/配下にlibtwitcurl.soとリネームしてコピーする。

mv libtwitcurl.so.1.0 /usr/lib/libtwitcurl.so

サンプルコード改造してつぶやき専用クライアント作成

つぎに、twitcurlのサンプルコードを改造してみて、つぶやき専用にした。

サンプルコードは以下のように持ってこれる。

svn co http://twitcurl.googlecode.com/svn/trunk/twitterClient

こんな感じで改造(というよりも、いらない部分を削除したという方が正しい)

ユーザ名とパスワードを変更する。

デスクトップからtwitterにアクセスするためには、以下の4つのキーの取得が必要。

  • ConsumerKey
  • ConsumerSecuret
  • AuthAccessTokenKey
  • AuthAccessTokenSecret

取得方法はドットインストールで学習した。

コンパイルをかけて実行

コンパイルをかける。

g++ quicktweet.cpp -o quicktweet -l/usr/lib/twitcurl

-ltwitcurlをコンパイルオプションにつければコンパイルできる。

(libtwitcurl.soだけと、libと.soはいらない。自分の場合、どうもパスの通し方がわからないので、フルパスでリンクさせた)

実行するときに、共用ライブラリlibtwitcurl.so.1.0を実行するディレクトリに持ってきておく。Cygwinの場合、共用ライブラリを実行するためには、PATHにlibtwitcurl.so.1.0かあるディレクトリの環境変数を通しておく必要があるけれども、面倒臭いで横着した。

quicktweet.exeにつぶやきたい言葉を渡して実行するとつぶやけた。

VBSからtwitterクライアントを呼び出す

次に、VBScriptからquicktweetを実行できるように、VBScriptを作成。

メッセージボックスを表示させて、メッセージを入力してEnterを押すと、メッセージがquickktweetの引数として渡される。

https://gist.github.com/4466455

VBSにショートカットキーを割り当てる

VBSをホットキーから実行できるようにする。

作成したVBSのショートカットをデスクトップか、[スタートメニュー] > [すべてのプログラムで右クリック] > [開く]を選択して、スタートメニューのフォルダに作成する。

ショートカットを右クリックして、プロパティを選択。

ショートカットの欄で、好きなショートカットを入力する。

ここでは[Ctrl + Shift + T]を割り当てた。

これで、デスクトップのどこからでもつぶやけるようになった。

これで 、お手軽にツꀀ Let’s Tweet。

03 Jan 2013, 16:09

AutoHotkey_Lを使ってWindowsでEmacsキーバインドをするためのメモ

AutoHotkey_LとEmacs用のスクリプトを利用することで、WindowsでEmacsのキーバインドが利用できました。すごく便利なので、メモして置きます。

きっかけ

プログを書くためのエディタにWindows Live Writerを、メールクライアントにOutlookを使っているのだれども、どちらもEmacsキーバインドを実現する方法がありませんでした。

いろいろ探してみたら、どうもWindowsのキーバインド自体をEmacsキーバインドにしてしまえばいいことに気づき、今回の方法に至りました。

AutoHotkkey_Lとは

AutoHotKey_Lとは、Windowsのキーバインドを自由自在に設定できるOSS。
もともとが、AutoHotKeyがその機能を担っていたが、AutoHotKeyの開発が終了してしまい代わりにAutoHotKey_Lが主流となっているらしい。

自分でキーバインドを設定するのもいいが、ネット上にいろんなスクリプトが落ちているので、それを利用しても良い。今回は、そのなかでEmacsキーバインドを実施するためのスクリプトを利用する。

AutoHotKey_Lのダウンロードとインストール

以下のサイトからダウンロードする。

AutoHotkey_L

インストールは実行ファイル(AutoHotkey_L_Install.exe)を実行すればよい。手順どおりに進めばインストール完了。

AutoHotKeyが立ち上がる。
スタートアップに登録しておけば、スタートアップ時に起動するようになる。

Emacsキーバインド用のスクリプトを取得

以下のgithubからemacs.ahkを取得。

https://github.com/usi3/emacs.ahk

emacs.ahkはAutoHotKey_Lの実行ファイルと同じフォルダに入れる。

emacs.ahkの設定

AutoHotKey.ahkの編集画面を開く。
一番最後の行に以下を追加。これで、AutoHotKey.exeを実行したときに、Emacsキーバインドスクリプトも一緒に実行することができる。

#include emacs.ahk

その他、細かいemacs.ahkの改造

私の場合、WindowsのCtrl+C, Ctrll+Vが利用てきなくなるのはいやなので、Cltl+C,Ctrl+Vをコメントアウトした。Ctrl+Y,Ctrl+Wなど、貼り付け系もコメントアウト。コメントアウトは “;“を書く。

example: Ctrl+ V

;^v::
;  If is_target()
;    Send %A_ThisHotkey%
;  Else
;    scroll_down()
;  Return

GoogleChomeは除外する

Chromeに適応すると既存のキーバインドが使えなくなるため、Chromeをキーバインド適応の除外条件に入れる。

特定のアプリケーションを除外する方法は、emacs.ahkのis_target内に以下を追加する。

  IfWinActive,ahk_class (除外したいWindowクラス名)
    Return 1 

参考:http://www.autohotkey.com/docs/commands/IfWinActive.htm

Windowsクラス名を調べるためには、AutoHotKeyを右クリックして、[Winodw Spy]を起動する。アクティブなウィンドウの情報が得られるのでここからWindowクラス名が分かる。

以下、GoogleChromeの例。この場合は”Chrome_WidgetWin_1”となる。

02 Jan 2013, 06:31

WordPress完全バックアップマニュアル(BackWPupでバックアップ)

このブログのレンタルサーバはロリポップを利用し、WordPressで運営しています。

 <img border="0" alt="" src="http://www16.a8.net/0.gif?a8mat=25GJVT+GBMX62+348+63WO1" width="1" height="1" />  

お正月ということで、万が一のデータロストやサーバダウンに備えたバックアップ方法を調べてみました。題して、

WordPress完全バックアップマニュアル

なんだか、完全自殺マニュアルっぽくて、胡散臭さがいい感じです。

[http://www.youtube.com/embed/7BDxGeTnMxY]

 

バックアップ対象について

WordPressのバックアップは、以下の2つに分けられます。

  • WordPress本体のバックアップ
  • MySQLのバックアップ

WordPressの方はサーバにFTPしてデータを持ってきて、データベースの方はMySQLにログインしてバックアップを作成して・・・・

なんて、手動バックアップはバカらしいですね。

WordPress本体とデータベースを自動かつ定期的にバックアップ

できる便利なプラグインないかなーと探したところ、ありました。それが、

BackWPup

です。では、順に見て行きたいと思います。

環境

  • ロリポップ ロリポプラン
  • WordPress 3.5
  • MySQL 5.1.34

BackWPupを使ってバックアップする

BackWPupのインストール

ダッシュポードから[プラグイン] > [新規追加] を選択。
検索で[BackWPup]を見つけて[今すぐインストール]を選択。
インストールされたら[プラグインを有効化]して完了です。

BackWPupをどう設定するか

次に、BackWPupの設定をします。

WordPress本体とデータベースを自動かつ定期的にバックアップ

の全ての要件を満たすために、以下のことを実施します。

  • 毎日2:00に定期バックアップを実行する
  • Dropboxにバックアップする。

バックアップする時間はサーバ負荷の少ない深夜を選びます。
このプラグインの嬉しいところは、バックアップ先にDropboxを選択できることです。
自動でクラウド上に保存できれば、バックアップシステムとしては完璧です。

他にも、FTPができるサーバ、Google Storage、Amazon S3、SugarSyncにもバックアップできるみたいです。

BackWPupの設定方法

ダッシュポードから[backWPup] > [Add New] を選択。
[Job Type]で [File Backup]と[Database Backup]の両方にチェックが入っていることを確認。

[JobSchedule]で[Activate Scheduling]にチェックを入れる。
深夜の2:00に実行するように設定。

[Database Jobs]でバックアップ対象のDBを選択。
ここでは、Defaultのままで特にいじらない。

[File Backup]でバックアップしたいファイルの設定を細かく調整。
自分がいじったのは、[Themes]の部分。不要なテーマはバックアップ対象外に。

送信者 Futurismo

上記は、BackWPup1.xでの情報です。2.xではUIに変更がありました。
設定項目に変更はありません。(そのうち書き直します)

Dropboxをバックアップ対象先に設定

Dropboxをバックアップ先に設定します。
[Backup to Dropbox]のボックスで[Authenticate!]を選択します。

Dropboxの認証サイトに飛ぶので、そこで連携を[許可]します。

送信者 Futurismo

[Root]で[Dropbox]を選択します。
[Folder]でバックアップ先のフォルダを選択します。
フォルダは予め作成しておく必要があります。ここでは、以下のように入力しました。
(ここのパスが間違っていると[Backups]タブでErrorと表示されます)

Buckup/sites/wordpress

最後にバックアップする世代数を入力します。

送信者 Futurismo

 

上の[Job Types]の[Save Changing]を押して、終了です。

バックアップを実行してみる

バックアップのテストをしてみます。
[Jobs]タブから先ほど作成したJobで[Run Now]を選択して、実行してみます。

送信者 Futurismo

すると、黒いコンソール画面に切り替わり、バックアップが実行されます。
数分間、ハラハラドキドキしながら待つと進捗が100%になり、終了します。
さあ、バックアップはされたかな・・・とDropboxを覗いてみます。

ブラボー。バックアップは成功したようです。
backwpup_1_2013-01-02_10-36-38.zipというファイルが作成されました。

コレで枕を高くして眠ることができる。実際にバックアップしたデータをリストアできるかも試してみようと思いますが、長くなったのでまた次回。

02 Jan 2013, 03:40

WordPressで記事を取得して記事一覧を作成する方法メモ

WordPressの固定ページとかで、記事一覧を取得して一覧表示することがよくある。

一覧表示するためには、Exec-PHPプラグインを利用するのだけれども、WordPressの編集画面でテキストから[ビジュアル]に変換すると、表示がおかしなことになる。

そのたびごとに、再度コードを書き直しているのだけれども、どんなコードだったかスグ忘れて、メモもどこかに行ってしまうので、このサイトでもメモしておく。

事前準備

WordPressの編集画面でPHPを利用するために、Exec-PHPを入れる。

WordPress 窶コ Exec-PHP ≪ WordPress Plugins

ソースコード例

以下のコードをWordPress編集画面に貼り付け。ここではPHPカテゴリ(カテゴリIDは39)を取得する。カテゴリIDは[ダッシュポード] > [カテゴリー]から調べることができる。

[gist]https://gist.github.com/4450427[/gist]

表示例

-1, ‘cat’=> 39);

$posts = get_posts($args); global $post;?>

21 Dec 2012, 11:02

Foursquareの履歴をGoogleMapに表示して、wordpressで表示する方法

Foursquareのチェックイン履歴をGoogleMapに表示して、それをwordpressで表示できたらステキなライフログになるだろうと思い、方法を調べてみたので、メモしまふ。

  • FoursquareのKMLフィードを取得する
  • GoogleMapでKMLフィードを表示する
  • GoogleMapをwordpressで表示する

では、順に解説。

FoursquareのKMLフィードを取得する

まずは、Foursquareにログインして、チェックイン履歴のページへ。

次に、右下にRSS/ICS/KMLと書いてあるリンクを選択。

skitch(12)

KMLとは

KMLとは、位置情報を管理するための情報です。http://ja.wikipedia.org/wiki/KML

ページの下からKMLのURLを取得します。

skitch(13)

GoogleMapでKMLフィードを表示する

次にKMLを利用して、GoogleMap上にfouresquareのチェックイン情報を表示します。

GoogleMapのページで、検索窓に先ほどコピーしたURLを貼り付けて、検索をします。

するとチェックイン履歴がGoogleMapに表示されました。

skitch(14)

GoogleMapをwordpressで表示する

最後です。GoogleMapからブロク貼り付け用のリンクを取得します。

左上のクサリのようなアイコンをクリックして、HTMLコードを生成します。

そして、それをコピーして、Wordpressの好きなところに貼り付ければ完了です。

skitch(15)

こんな感じ

大きな地図で見る

大きさを変更したい場合は、width=”200″ height=”200″ の数値で調整する。

18 Dec 2012, 23:28

実践テスト駆動開発(GOOS本)のサンプルを通す

GOOS本(Growing Object-Oriented Software, Guided by Tests 実践テスト駆動開発)のサンプルコードを落としてきて、テストが通ることを確認する。

 

前回の続き記事なので、Openfireの導入は済んでいることが前提。
GOOS本の写経環境構築まとめ(Windows + Eclipse)

環境

  • Windows 7 64bit
  • Java SE 1.7
  • Eclipse 4.2 Juno
  • openfire 3.2

サンプルコードをダウンロードする

サンプルコードはgithubに公開されているものを落としてくる。

Javaの他にも、C#,Ruby,Scala,Groovyのサンプルコードがあるけど、試してない。

WindowLickerのエラーを解消する

テストを実行しようとすると、WinodwLickerでエラーがでる。

java.lang.IllegalArgumentException: keyboard layout JP not available.
(・・・以下エラーメッセージ省略)

日本語用のキーボード設定がないらしい。

(windowlickerのディレクトリ名)/src/core/main/com/objogate/wl/keyboard
に『US』というファイルがあるので、これを日本語用に名前変更して、再度ビルド。

$ (windowlickerのディレクトリ名)/src/core/main/com/objogate/wl/keyboard
$ cp US JP

作成されたWindowlickerのjarファイルをGOOSサンプルコードのライブラリと差し替える。
(Goosのディレクトリ)/lib/develop配下の以下のファイルを差し替え

  • windowlicker-core-DEV.jar
  • windowlicker-swing-DEV.jar

以下のページを参考にした。
http://d.hatena.ne.jp/ToMmY/20111106/1320580066

サンプルコードを実行する

実行するためには、Openfireを立ち上げておく。(管理者権限で実行)

Eclipseにgitプロジェクトとしてインポート。
パッケージを選択して、[実行] > [JUnitテスト] を選択して、実行。

17 Dec 2012, 11:58

実践テスト駆動開発(GOOS本)の写経環境構築まとめ(Windows + Eclipse)

実践テスト駆動開発(Growing Object-Oriented Software, Guided by Tests略してGOOS本)を読んでいる。

開発環境構築が少し難しかったので、備忘録としてまとめ。

 

設定環境

  • Windows 7 64bit

環境構築

以下の導入手順は省略で。

  • Java SE 1.7
  • Windows 7
  • Eclipse 4.2 Juno

JUnit

Javaの定番xUnitフレームワーク。以下の記事を参考。

JMock

Java用Mockオブジェクト生成のためのフレームワーク。

このGoos本は、Mockオブジェクトを使ったTDDをまとめたもの。

Smack

SmackはXMPPをJavaから利用するためのライブラリ。

XMPP(eXtensible Messaging and Presence Protocol)とは、XMLベースのメッセージプロトコルのこと。以下のリンクから最新版を落とす。

ダウンロードしたら、smack.jar,smackx.jarを追加する。

プロジェクトの[プロパティ] > [Javaのビルド・パス] > [外部Jarの追加]でsmack.jar,smackx.jar追加。

Openfire

xmpp サーバであるOpenfireを入れる。

以下のリンクからwinodws版exeファイルの最新版を落とす。

各種プラットホームに対応したインストーラがある。

実行ファイルを起動するとインストーラが立ち上がるので、[次へ]を押して完了。

Openfireの初期設定

[Launch Admin]を選択して、初期設定をする。

skitch(11)

  1. Language Settiing

    日本語ないので、適当に選択。

  2. Server Setting

    Domainは[localhost]

    あとは、Defaultのままに設定(Portは9090)

  3. Database Settings

    [Embedded Database]を選択。データベース詳しくないので、とりあえず速度は出ないがセットアップが楽そうなので。

  4. Profile Settings

    Default選択。

  5. Administrator Account

    adminはデフォルトで設定済み。パスワードを入力(pass)。

OpenfireのGOOS設定

Opnefireの初期設定ができたら、次はGOOS環境で使うための設定。

ここからは、本のコラム『Openfireサーバをセットアップする』を参考にする。

  • 以下の3つのアカウントとパスワードを作っておく。

    [User/Groups]タブ > [Create New User]から、以下のアカウントを作成。

    • sniper: sniper
    • auction-item-54321: auction
    • auction-item-65432: auction
  • [Server]タブ > [ServerInfomation]でServer Name が[localhost]であることを確認。(もしくは、下の[Edit Propertyで変更)

  • [Server]タブ > [Server Setting] > [Resource Policy]で[Never kick]を選択。

  • Openfireを再起動。

    (Windowsでは『管理者として実行』しないと、起動に失敗した)

WindowLicker

JAVA用のGUIテスティングフレームワークであるWindowLickerをいれる。

http://code.google.com/p/windowlicker/

バイナリやパッケージはないらしい。

以下、英語のGoogleグループの質問ページを自動翻訳したもの。(珍妙な訳・・・)

https://groups.google.com/forum/?fromgroups=#!topic/growing-object-oriented-software/d5sdcR5wTkw

あなたはwindowlicker.googlecode.comからWindowLickerを得ることができます。それはだ現在流動的な状況で、我々はそれが別のルックに対応するよう

異なるプラットフォーム上で実行されているが、コア機能と、感じている

(ポーリング、タイムアウトやエラーレポート)安定しています。

バイナリ配布はまだありません。あなたはそれをからチェックアウトする必要がありますSVNとAntでビルドします。

-ツꀀ NAT

というわけで、svnコマンドでcheckoutして持ってくる。

svn checkout http://windowlicker.googlecode.com/svn/trunk/ windowlicker-read-only

githubにもあるっぽい。

https://github.com/petercoulton/windowlicker

$ git clone https://github.com/petercoulton/windowlicker.git windowlicker

落としてきたらとりあえず、ビルド(./buil.shを利用)

するといろいろとテストが始まって楽しい。

build/jarsにjarファイルが作成されるので、それをEclipseの外部jarに登録。

  • windowlicker-core-DEV.jar
  • windowlicker-swing-DEV.jar

参考

16 Dec 2012, 23:02

JMockのインストールとEclipseでの使い方まとめ

JMockとは、JAVAでモックオブジェクトを簡単に作成するためのフレームワーク。
モックオブジェクトを利用すると、以下のことが簡単にテストできる。

  • メゾッドが何回呼ばれたか。
  • メソッドがどんな引数で呼ばれたか。
  • メソッドから任意の値を返す。
  • メゾッドがどんなシーケンスで呼ばれたか。

などなど。他にもできることはたくさん。

JMockの設定方法

JMockのダウンロード

以下のサイトより、ダウンロード。
ここでは、最新安定版の 2.5.1 jmock-2.5.1-jars.zipを落とす。

jMock – Downloads

Eclipseでビルド・パスを通す

ダウンロードしたzipファイルを解凍し、任意の場所に置く。
(ここでは、jmockと名前を変更してC:\src\jmockにおいた)

EclipseからJMockライブラリを利用するために、ビルド・パスを通す。
プロジェクトを選択して、[ブロパティ] > [Javaのビルドパス]を選択。
[ライブラリ]タブ > [ライブラリの追加] > [ユーザライブラリ] > [次へ]
[ユーザライブラリ] > [新規]を選択。

ライブラリを作成するために、[JMock2]と名前をつける。
続いて、[外部Jar追加]。ここでは、以下のJarを追加。

  • jmock-2.5.1.jar
  • jmock-junit4-2.5.1.jar
  • hamcrest-library-1.1.jar
  • hamcrest-core-1.1.jar

JMockを動かしてみる

JMockを動かしてみる。JMockを利用するためには、テスト対象のコードは以下。

public class Sample {

    private External external;

    public int num() {
        return external.get_num();
    }

    public void setExternal(External external) {
        this.external = external;
    }
}

インタフェースの用意

JMockを利用してモックオブジェクトを作成するためには、

クラスのメソッドがインタフェース化されている必要がある。

インタフェースを利用することで、『実体』と『モック』を置き換えることができる。

public interface External {
    int get_num();
}

テストコードの追加

続いて、テストコードの追加。ここでは、1回呼ばれることを検証している。oneOf

されに、生成されたモックの戻り値として返して貰いたい数字を指定している(10)

import static org.junit.Assert.*;

import org.jmock.Expectations;
import org.jmock.Mockery;
import org.jmock.integration.junit4.JMock;
import org.jmock.integration.junit4.JUnit4Mockery;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(JMock.class)   // TestRunnerを使う宣言
public class mock_sampleTest {
    private final Mockery context = new JUnit4Mockery(); //モッカリー生成
    private External external;
    private Sample impl;

    @Before  // 事前処理宣言
    public void setUp() throws Exception {
        external = context.mock(External.class);  //インタフェースのモック生成
        impl = new Sample();                       //テスト対象の宣言
        impl.setExternal(external);
    }

    @Test
    public void firstMockGenerate() {
        context.checking(new Expectations() {{
            oneOf(external).get_num();      //1回呼びだされる
            will(returnValue(10));          //10を返す
        }});
        assertEquals(10, impl.num());       //メソッド呼び出し
    }
}

モッカリーとは、テスト実行中にモックを呼び出す。

モッカリーやモック生成は定型文なので、コピペで。

テストを実行すると、グリーンバーが出てテストが成功することがわかる。

おまけ

Eclipseだと、もともと入っているJUnitとJMockでのものが競合する場合がある。

そんなときは、以下の解決方法を参照。

EclipseにJMockを入れてSecurityExceptionが発生。