Mockitoについて    ver.0.1
Mockitoの概要•   名前はモヒート(ライム+ミント+ラムのカクテル)からもじったもの?•   モキートと読めばいいのでしょうか…•   Java向けモックライブラリで、JUnitと組み合わせて使用します•   スタブに使用する空実装が簡...
Mockitoの基礎•   mock化    •   List mockedList = Mockito.mock(List.class);    •   Listインタフェースの空メソッドを持つmockedListが生成されま        す
Mockitoの基礎•       振る舞いの定義    •   Mockito.when(mockedList.get(0)).thenReturn(“first”);    •   引数が0の場合は文字列”first”を返却します    •  ...
Mockitoの基礎•       引数のMatcher    •    when(mockedList.get(anyInt())).thenReturn(“element”);    •    mockedList.get()の引数がint...
Mockitoの基礎•   アノテーションを使ったMock化    •   @Mock private List mockedList;    •   メンバ変数に@Mockを付けるとMock化されます    •   これを使用する場合はMoc...
Mockitoの基礎•   呼び出した順序で別の振る舞い    •   when(mock.someMethod(“some arg”))    •   .thenThrow(new RuntimeException())    •   .th...
Mockitoの基礎•   モック化するメソッドの戻り値の型がvoidの場合…    •   voidの場合は別の方法が必要です    •   do∼系のメソッドを使用します    •   doThrow(new RuntimeExceptio...
PowerMockとは?•       Mockitoでできないこと    •       モックにできないものがこんなにも…        •    staticメソッド,コンストラクタ,finalクラス・メソッド,privateメソッド,st...
PowerMockの使い方•       テストクラスの設定    •   @RunWith(PowerMockRunner.class)    •   @PrepareForTest(TargetStatic.class)    •   pu...
PowerMockの補足•   プロジェクトページ http://code.google.com/p/powermock/•   Javadoc http://powermock.googlecode.com/svn/docs/    powe...
Upcoming SlideShare
Loading in...5
×

Mockitoについて

5,564

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,564
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
3
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • Mockitoについて

    1. 1. Mockitoについて ver.0.1
    2. 2. Mockitoの概要• 名前はモヒート(ライム+ミント+ラムのカクテル)からもじったもの?• モキートと読めばいいのでしょうか…• Java向けモックライブラリで、JUnitと組み合わせて使用します• スタブに使用する空実装が簡単に作れる&任意の振る舞いを定義できます• 以降の内容はMockitoのJavadocに書いてある内容だったりします• その中でも、モック部分にターゲットを絞ってます。検証系はまた今度• プロジェクトページ http://code.google.com/p/mockito/• Javadoc http://docs.mockito.googlecode.com/hg/latest/index.html?org/mockito/Mockito.html
    3. 3. Mockitoの基礎• mock化 • List mockedList = Mockito.mock(List.class); • Listインタフェースの空メソッドを持つmockedListが生成されま す
    4. 4. Mockitoの基礎• 振る舞いの定義 • Mockito.when(mockedList.get(0)).thenReturn(“first”); • 引数が0の場合は文字列”first”を返却します • Mockito.when(mockedList.get(1)).thenThrow(new RuntimeException()); • 引数が1の場合は例外をスロー • 引数が設定されていない場合はnullを返却します。型によって0とかfalseとかも 返します
    5. 5. Mockitoの基礎• 引数のMatcher • when(mockedList.get(anyInt())).thenReturn(“element”); • mockedList.get()の引数がint/Integerであれば”element”を返します • ワイルドカード的な感じ。 • any∼系のメソッドはorg.mockito.Matcherで定義されてます。MockitoクラスはMatcherクラ スのサブクラスなので全部使えます • any∼以外にも、valueと一致する場合を表すeq(value)の様なメソッド等、いろいろあるよ
    6. 6. Mockitoの基礎• アノテーションを使ったMock化 • @Mock private List mockedList; • メンバ変数に@Mockを付けるとMock化されます • これを使用する場合はMockitoJUnitRunnerを使用しましょう。ただ し、JUnitのバージョンは4.4以上が必要だったりする • @RunWith(MockitoJUnitRunner.class) public class HogeHogeTest {∼
    7. 7. Mockitoの基礎• 呼び出した順序で別の振る舞い • when(mock.someMethod(“some arg”)) • .thenThrow(new RuntimeException()) • .thenReturn(“foo”); • 一回目のcallでは例外が発生し、二回目のcallでは”foo”が返りま す
    8. 8. Mockitoの基礎• モック化するメソッドの戻り値の型がvoidの場合… • voidの場合は別の方法が必要です • do∼系のメソッドを使用します • doThrow(new RuntimeException()).when(mockedList).clear(); • mockedList.clear()を呼び出すと例外が発生します • do∼系のメソッドにはdoThrow(),doAnswer(),doNothing(),doReturn()など
    9. 9. PowerMockとは?• Mockitoでできないこと • モックにできないものがこんなにも… • staticメソッド,コンストラクタ,finalクラス・メソッド,privateメソッド,staticイニシャライ ザ…• そんな不満を解決するのがPowerMock • バイトコードを書き換えてモック化を実現 • Mockitoと同様なAPIを提供するので違和感なし。Mockitoクラスのstaticメソッドを使ってい たところをPowerMockitoクラスのstaticメソッドを使えばOK
    10. 10. PowerMockの使い方• テストクラスの設定 • @RunWith(PowerMockRunner.class) • @PrepareForTest(TargetStatic.class) • public class HogeHogeTest { • PowerMockRunnerを使用しましょう • モック対象の(バイトコードを書き換える)クラスをPrepareForTestアノ テーションで指定しましょう
    11. 11. PowerMockの補足• プロジェクトページ http://code.google.com/p/powermock/• Javadoc http://powermock.googlecode.com/svn/docs/ powermock-1.4.12/apidocs/index.html?overview-summary.html• Mockito向けのAPI以外にもEasyMock向けのAPIも提供してます
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×