2008-02-01から1ヶ月間の記事一覧

JMockitのMockに渡す引数のチェック

with〜 を指定すると引数を完全一致以外でチェックできるようになる package tutorial; import org.junit.After; import org.junit.Assert; import org.junit.Test; import mockit.*; public class HelloWorldTest3 { @Test public void testSample1() throw…

GWTの本

■GWTの本で中身が濃くて読み応えあるのは洋書になってしまうがGwt in Action: Easy Ajax With the Google Web Toolkit作者: Robert Hanson,Adam Tacy出版社/メーカー: Manning Pubns Co発売日: 2007/05/01メディア: ペーパーバック クリック: 13回この商品を…

JMockitのAnnotationを使ったテスト

前の redefineMethods を使った次のようなテストコードは package tutorial; import static org.junit.Assert.*; import mockit.*; import org.junit.After; import org.junit.Test; public class HelloWorldTest2 { static public class MockPrintStream { …

XWorkのMockパッケージ

Struts2で使用しているXWork2のJarの中に com.opensymphony.xwork2.mock というパッケージがあり、クラスとしては MockActionInvocation MockActionProxy MockInterceptor MockObjectTypeDeterminer MockResult とある。ドキュメントはJavaDoc以外まだ見つけ…

Exceptionを偽装する

JMockitのシンプルで強力なExpectations機能でテストコードが呼び出すモジュール側でのException発生も簡単に偽装できる public class Sample1 { public String sample1( String in ) { try { return "[" + Other.calc( in ) + "]"; } catch ( Exception ex …

戻り値を偽装する

JMockitではExpectatios機能を使うとターゲットクラスで呼び出しているメソッドの戻り値を偽装する事も簡単に出来る。ターゲットクラスが次のような場合で public class Sample1 { public String sample1( String in ) { return "[" + Other.calc( in ) + "]…

Eclipse日本語化プラグインPleiades

殆ど問題なく快適に使えている Pleiadesによる日本語化だけど、AOPで日本語化している仕組み上、仕方が無いのか日本語化されなくていいところまで日本語化されてしまうことがある。"実行"の名前に 「test」 とかつけると、メニューの"ヒストリー実行"のプル…

Expectationsを利用してテストする

HelloWorldのテストを redifineMethods を利用して行ったが、JMockitのExpectations を使ってEasyMockと同じように記録/再生させる方式でもテストできる。 これを使うと Struts2 のアクションとかのテストも比較的簡単に出来そうな気がする。 package tutor…

JMockitでMock作成

HelloWorldテストで組み込みの型(PrintStream)のMockを作成しようとして、いまいち上手くできない感じで有ったが、そもそもそれが目的ではないのでとりあえずHelloWorldのPrintStream部分を普通のクラスに変えてみた。tutorial/HelloWorld.java package tut…

HelloWorldのテストの問題点

HelloWorldのテストは一応出来はしたが、なんかしっくり来ない。しっくり来ない部分は次の通り MockPrintStreamがPrintStreamをextendしていること PrintStreamがfinalだったりしたら出来ない System.setOut で System.out を設定していること 同じようなfin…

HelloWorldをJMockitでテストする2

試行錯誤の末、HelloWorldのテストコードはこんな感じになった package tutorial; import java.io.PrintStream; import mockit.*; import org.junit.Test; public class HelloWorldTest2 { static class MockPrintStream extends PrintStream { public MockP…

HelloWorldをJMockitでテストする1

いわゆる Hello World を JMockit のシンプルで強力なMock機能でテストしてみる。まずは HelloWorld のコードから package tutorial; public class HelloWorld { public static void main( String av[] ) { System.out.println("Hello World"); } } で、何を…

JMockit使用時の起動パラメータ

JMockitでExpectations機能を利用する場合、JVMの起動パラメータを次のようにする必要がある。 -javaagent:フルパスのjmockit.jar=junit4例 -javaagent:c:\jmockit\jmockit.jar=junit4

JMockitについて

Unitテスト用のMockフレームワークとしてJMockitを取り込めないか調べてみたら、、、びっくりしました。JMockit最強です。フレームワーク採用決定です。 使い方はとてもシンプルで、こんなに簡単にMockを使ったテストが出来るのかと、今までどうして知らなか…

Unitテスト用のMockフレームワーク

Unitテスト用のMockを簡単に扱えるような便利なフレームワークが無いか探していたら、JMockit(https://jmockit.dev.java.net/)というのを発見した。ざっと見てみた感じだと簡単そうでなかなか良さそうだ。他にMockのフレームワークというと次のようなもの…

Struts2フォーム要素とGWTの連携

画面中のGWT支配下のコントロールでStruts2のアクションを呼び出しは問題ないがやはりちょっとはStruts2のフォーム要素と関連を持たせたい場合がある。 たとえば、郵便番号から住所を引っ張ってくるAJAXを考えたときに、郵便番号フィールドはGWTで表示して、…

Struts2のJSPからGWTの呼び出し

GWTのRPCのサービス実装側で簡単にStruts2のActionが使えるようになった、次はStruts2の画面のJSPからGWTを起動(画面中のあるエリアがGWTの支配下にあるイメージ)してみる。Struts2のJSPでGWTのRootPanelで指定しているIDのタグを作成し、次のJavaScriptを…

Struts2-GWTインテグレーション

GWTの単体での使い方、GWTでのRPC(AJAX)発行は問題無いことがわかった。で、フレームワークへのGWTの取り込み方法として、次の方式とする。基本的にはクライアント側では既存のフォーム要素とGWTの要素は関連性を持たせず、GWTはGWTの世界でフレームワーク…

Google Web Toolkitについて5

GWTのRPCで複雑なデータ型を使ってみる。必要なのは、 デフォルトコンストラクタと IsSerializable を実装する事だけ。 package tutorial.gwt.client; import com.google.gwt.user.client.rpc.IsSerializable; public class MyData implements IsSerializabl…

Google Web Toolkitについて4

GWT RPCサービスのインターフェースは簡単に増やすことが出来る。カウントアップだけではなく、リセットも出来るようにしてみるまず、MyService.javaにインターフェースを追加 package tutorial.gwt.client; import com.google.gwt.core.client.GWT; import …

Google Web Toolkitについて3

Google Web Toolkitから標準のRPCを利用してサーバー側と通信させてみる。プロジェクトに新規ファイルで Cypal Studioの「リモート・サービス」を追加プロジェクト、モジュールを指定し、 名前:MyService サービスURI:MyService.actionとして作成。 tutori…

Google Web Toolkitについて2

Google Web Toolkitは次のようにして試すことが出来る。 新規プロジェクトで 動的Webプロジェクト を作成するときの構成とし Cypal Studio GWT Project を指定して作成 プロジェクト名:HelloGWT または既存プロジェクトの場合はプロジェクト・ファセットに …

Google Web Toolkitについて1

Google Web Toolkit、これはクライアント側でのコードをJAVAで書くことが出来る面白い技術である。これを今のフルスタックフレームワークに取り込みたいと強く感じた。これが取り込めればクライアントサイドをクロスブラウザの泥臭い面倒無しに好きなだけリ…

Eclipseのバージョンを3.3にする

3.3はなかなかランゲージパックが提供されず日本語化されていないと勝手に思っていたのだが、Eclipse3.3はPleiadesという日本語化プラグインで日本語化できるらしい事を知った。で、こちらEclipse 日本語化 | MergeDoc Project で日本語化プラグインが適用さ…

NestしたBeanのバリデーション

NestしたBeanへのプロパティの設定は "." で指定すれば可能だが、validationは visitor validationという方法を利用するようだ visitor validation の方法について調査中。

重複したBean名

Annotationベースの場合に不注意で重複したBean名を付けてしまう可能性が高まるが、その場合にどうなるか確認した。Annotationで重複した名前を使った場合に、初期化時にエラーになる。 applicationContext.xml で重複した名前の場合も、初期化時にエラーに…

結果をMapで受け取る

次のように記述すると、結果をhistの定義に従い受け取るが <resultMap id="hist" class="tutorial.History"> <result property="date" column="date"/> <result property="pay" column="pay"/> </resultMap> <select id="getHist" resultMap="hist"> SELECT date,pay FROM history WHERE id=#id# ORDER by date </select> 結果は ArrayList となる。 これを

@BeforeResultによるAction返却値の変更

次のようにする事で、Actionの戻り値を別の値に変更することが出来る。 @BeforeResult public void beforer1() { ActionInvocation invocation = ActionContext.getContext().getActionInvocation(); String ans = invocation.getResultCode(); System.out.p…

annotationWorkflowの位置

@Beforeでオブジェクトの初期化をおこうなおうとするとAnnotationWorkflowInterceptorの位置はActionの直前が最適ではあるが @BeforeResultで戻り値を変更しようとする場合、exception や workflow の後だと、これらの"input"などの返却値いじることは出来な…