<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>Java</title><link>http://blogs.wankuma.com/masaru/category/2244.aspx</link><description>Java</description><managingEditor>まさる（高野 将、TAKANO Sho）</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>まさる（高野 将、TAKANO Sho）</dc:creator><title>StrutsのActionをMockitoを使ってUnitTestする #javaadventja2010</title><link>http://blogs.wankuma.com/masaru/archive/2010/12/17/195825.aspx</link><pubDate>Fri, 17 Dec 2010 05:19:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2010/12/17/195825.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/195825.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2010/12/17/195825.aspx#Feedback</comments><slash:comments>2601</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/195825.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/195825.aspx</trackback:ping><description>&lt;p&gt;このエントリは &lt;a href="http://atnd.org/events/11000"&gt;Java Advent Calendar -ja 2010 : ATND&lt;/a&gt; の 5日目のものです。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;やぁ、みなさんStruts使ってますか！最近「&lt;a href="http://d.hatena.ne.jp/ryoasai/20101116/1289914674"&gt;いつまでStruts1を使い続けるの？ - 達人プログラマーを目指して&lt;/a&gt;」とか「&lt;a href="http://forza.cocolog-nifty.com/blog/2010/11/struts-5400.html"&gt;Strutsの終焉: プログラマの思索&lt;/a&gt;」とかで、何かと話題のStruts1ですが、もろもろの事情で使わなければいけないことって多いですよね？ね！&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;で、仕方なく使わざるを得ないStrutsですが、ActionのexecuteメソッドがそのままだとJUnitなんかでUnitTest(できない|できても大変)で困ります。&lt;/p&gt; &lt;p&gt;そんな時は、Mockを使ってテストしましょう！今回はMockitoを使います。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;こんなActionがあったとして。&lt;/p&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:a211d026-1550-4c94-829f-cce2e4867b5b" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;package com.example.masaru.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class TestAction extends Action {
	
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		return mapping.findForward("success");
	}
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mockitoを使って、こんなテストコードを書きます。&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:08f87306-5cdc-4e98-8d93-2b5a9ca67647" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;package com.example.masaru.action;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.junit.Test;

public class TestActionTest {
	@Test
	public void testExecute() throws Exception {
		TestAction action = new TestAction();

		// Action.executeの引数をMockにする
		ActionMapping mapping = mock(ActionMapping.class);
		ActionForm form = mock(ActionForm.class);
		HttpServletRequest request = mock(HttpServletRequest.class);
		HttpServletResponse response = mock(HttpServletResponse.class);

		// mappingの挙動を擬装
		when(mapping.findForward("success")).thenReturn(
				new ActionForward("success", "/dest", false));

		// action.execute呼び出し
		ActionForward forward = action.execute(mapping, form, request, response);

		// mapping.findForwardが呼ばれたか検証
		verify(mapping).findForward("success");

		// 戻り値を検証
		assertThat(forward, is(notNullValue()));
		assertThat(forward.getName(), is("success"));
		assertThat(forward.getPath(), is("/dest"));
	}
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;こんな風にSessionをActionで使う場合は・・・&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:53de2bf6-4d91-42ae-929d-70df0b343fa8" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;package com.example.masaru.action;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class TestAction extends Action {
	
	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {

		HttpSession session = request.getSession();
		String hoge = (String)session.getAttribute("session_key");
		
		return mapping.findForward("success");
	}
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;テスト側でrequestのgetSessionメソッドを擬装します。&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:b73e0be7-e92d-4662-85c8-012c5d093d9b" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;package com.example.masaru.action;

import static org.mockito.Mockito.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionMapping;
import org.junit.Test;

public class TestActionTest {
	@Test
	public void testExecute() throws Exception {
		TestAction action = new TestAction();

		// Action.executeの引数をMockにする
		ActionMapping mapping = mock(ActionMapping.class);
		ActionForm form = mock(ActionForm.class);
		HttpServletRequest request = mock(HttpServletRequest.class);
		HttpServletResponse response = mock(HttpServletResponse.class);

		// request、sessionの挙動を擬装
		HttpSession session = mock(HttpSession.class);
		when(session.getAttribute("session_key")).thenReturn("foo");
		
		when(request.getSession()).thenReturn(session);

		// action.execute呼び出し
		action.execute(mapping, form, request, response);

		// session関連処理が呼ばれたか検証
		verify(request).getSession();
		verify(session).getAttribute("session_key");
	}
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;他にも工夫次第で、いくらでも柔軟に対応できますよ♪&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;というわけで、皆さんもMockを使って、嫌われ者のStruts1でも快適TDDライフを謳歌してみてはいかがでしょうか？&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;ちなみに、当たり前ですがstruts-config.xmlやらvalidation.xmlやらの設定は読み込まれませんので、その辺はご注意くださいませ&amp;lt;(_ _)&amp;gt;&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/195825.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる（高野 将、TAKANO Sho）</dc:creator><title>Mockを利用して内部で実行する処理に渡すパラメータを検証する～パラメータオブジェクト編～</title><link>http://blogs.wankuma.com/masaru/archive/2010/11/30/195401.aspx</link><pubDate>Tue, 30 Nov 2010 05:06:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2010/11/30/195401.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/195401.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2010/11/30/195401.aspx#Feedback</comments><slash:comments>467</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/195401.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/195401.aspx</trackback:ping><description>&lt;p&gt;&lt;a href="http://blogs.wankuma.com/masaru/archive/2010/11/25/195271.aspx"&gt;Mockを利用して内部で実行する処理に渡すパラメータを検証する&lt;/a&gt;の続き。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;前回はシンプルなString型のパラメータについての検証でした。しかし、実際に様々なプログラムを作っていくうえでは、パラメータオブジェクトで値をやり取りすることも多いはずです。&lt;/p&gt; &lt;p&gt;そんな時は、MockitoのdoAnswerメソッド、whenメソッドなどを使い、内部で実行される処理を偽装し、その内部で検証を行うことができます。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;１．テスト対象クラス&lt;/h3&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:7fac57b1-8c1b-4fa1-8678-9558d1e161b2" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="xml"&gt;package com.example.sample;

public class MyClass {
	// これをMockで置き換えてテストする
	private Delegatee delegatee;

	public MyClass(Delegatee delegatee) {
		super();
		this.delegatee = delegatee;
	}

	public void doSomething(String id, String name) {
	}
}
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;２．テストクラス&lt;/h3&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:beff20e5-de83-48b3-9e4b-2bb6d998f678" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;package com.example.sample;

import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;

import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;

public class MyClassTest {
	@Test
	public void testDoSomethingByMyParam() throws Exception {
		// Mock作成
		Delegatee delegatee = mock(Delegatee.class);
		
		// callメソッドの振る舞いを偽装
		// その内部でパラメータの妥当性を検査
		doAnswer(new Answer() {
			@Override
			public Object answer(InvocationOnMock invocation) throws Throwable {
				// callメソッドのパラメータを取得
				MyParam param = (MyParam)invocation.getArguments()[0];
				
				assertThat(param.getId(), is("001"));
				assertThat(param.getName(), is("hoge"));

				return null;
			}
		}).when(delegatee).call((MyParam)anyObject());
		
		MyClass myClass = new MyClass(delegatee);
		myClass.doSomething("001", "hoge");

		// callメソッドが呼び出されたか検証
		verify(delegatee).call((MyParam)anyObject());
	}
}
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;３．テスト結果&lt;/h3&gt;
&lt;p&gt;初回はテストに失敗します。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/Mock_424C/image.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/Mock_424C/image_thumb.png" width="303" height="427"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Delegatee.callメソッドを呼び出していないので、テストに失敗していることが読み取れます。&lt;/p&gt;
&lt;p&gt;では、まずはnullを渡して呼び出すようにしてテストを実行してみましょう。&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:004114f9-9fcc-42bf-bd90-79a850925fe4" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="ruby"&gt;	public void doSomething(String id, String name) {
		delegatee.call(null);
	}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/Mock_424C/image_3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/Mock_424C/image_thumb_3.png" width="303" height="479"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;今度は偽装したDelegatee.callメソッドの内部でNullPointerExceptionが発生していることがわかります。&lt;/p&gt;
&lt;p&gt;次は空のMyParamオブジェクトを渡すように修正してテストを実行してみます。&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:e8eb0fea-ec7b-42e7-be8e-4495361c9384" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;	public void doSomething(String id, String name) {
		delegatee.call(new MyParam());
	}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/Mock_424C/image_4.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/Mock_424C/image_thumb_4.png" width="302" height="541"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ようやく、渡されたパラメータの値のAssertionErrorとなりました。&lt;/p&gt;
&lt;p&gt;最後に、MyClass.doSomethingメソッドのパラメータをもとに、MyParamオブジェクトを作成してやるように修正して、テストを実行してみます。&lt;/p&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:45f7da6e-0d46-44b2-94f4-8820b8720488" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;	public void doSomething(String id, String name) {
		MyParam param = new MyParam();
		param.setId(id);
		param.setName(name);
		delegatee.call(param);
	}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/Mock_424C/image_5.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/Mock_424C/image_thumb_5.png" width="303" height="209"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;これで無事にテストにパスしました。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;もしかしたらもうちょっと簡単な方法があるかもしれませんが、ここ最近よく使っている手法を紹介しました。&lt;/p&gt;
&lt;p&gt;他にも便利なMockの使い方があったら、ぜひコメント欄で教えてください。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/195401.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>まさる（高野 将、TAKANO Sho）</dc:creator><title>Mockを利用して内部で実行する処理に渡すパラメータを検証する</title><link>http://blogs.wankuma.com/masaru/archive/2010/11/25/195271.aspx</link><pubDate>Thu, 25 Nov 2010 05:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/masaru/archive/2010/11/25/195271.aspx</guid><wfw:comment>http://blogs.wankuma.com/masaru/comments/195271.aspx</wfw:comment><comments>http://blogs.wankuma.com/masaru/archive/2010/11/25/195271.aspx#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blogs.wankuma.com/masaru/comments/commentRss/195271.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/masaru/services/trackbacks/195271.aspx</trackback:ping><description>&lt;p&gt;最近仕事ではJava一色なのですが、TDDを実践する機会に恵まれました。というわけで、Eclipse+JUnit+Quick JUnit+Mockitoを使ってゴリゴリプログラミングしています。&lt;/p&gt; &lt;p&gt;（Quick JUnitとMockitoについては、「&lt;a href="http://www.atmarkit.co.jp/fjava/rensai4/devtool16/devtool16_1.html"&gt;単体テストを“神速”化するQuick JUnitとMockito - ＠IT&lt;/a&gt;」をご覧ください。）&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;そんな中で発見したMockの使い方の一つを紹介します。それは、「テスト対象クラスが、内部で呼び出している処理に渡すパラメータを検証する」方法です。&lt;/p&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;h3&gt;１．テスト対象クラス&lt;/h3&gt; &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:9a1fc4d5-3f4d-4d5b-9f55-5c7a67d19466" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;package com.example.sample;

public class MyClass {
	// これをMockで置き換えてテストする
	private Delegatee delegatee;

	public MyClass(Delegatee delegatee) {
		super();
		this.delegatee = delegatee;
	}

	public void doSomething(String arg) {
		delegatee.call(arg+"1");
	}
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;doSomethingメソッドの内部で、delegatee.callメソッドを呼び出すという簡単なクラスです。&lt;/p&gt;
&lt;p&gt;（Delegateeクラスは割愛）&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;２．テストクラス&lt;/h3&gt;
&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:812469c5-0cb0-4c63-8c15-c81123a09de7:8d2a82f6-04e1-4e8d-b1f6-8df487e3bab2" class="wlWriterEditableSmartContent"&gt;&lt;pre name="code" class="java"&gt;package com.example.sample;

import static org.mockito.Matchers.*;
import static org.mockito.Mockito.*;

import org.junit.Test;

public class MyClassTest {
	@Test
	public void testDoSomething() throws Exception {
		// Mock作成
		Delegatee delegatee = mock(Delegatee.class);

		MyClass myClass = new MyClass(delegatee);
		myClass.doSomething("foo");

		// callメソッドがパラメータ"foo1"で呼び出されたか検証
		verify(delegatee).call(eq("foo1"));
	}
}
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;テストでは、DelegateeクラスのMockを作成し、MyClass.doSomethingメソッドでDelegatee.callメソッドに渡された引数を検証します。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;３．テスト結果&lt;/h3&gt;
&lt;p&gt;テストに成功すると以下のようになります。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/Mock_46D9/image.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/Mock_46D9/image_thumb.png" width="371" height="376"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;仮にMyClass.doSomethingメソッドに欠陥があり、テストに失敗すると、次のようになります。&lt;/p&gt;
&lt;p&gt;&lt;a href="http://masaru.wankuma.com/img/blogimg/Mock_46D9/image_3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://masaru.wankuma.com/img/blogimg/Mock_46D9/image_thumb_3.png" width="559" height="509"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;ちゃんと「パラメータが違うよ！」って怒ってくれます。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;今回はJava+Mockitoでしたが、.NET+Moqとかでも同じことができるはずです（よね？）&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;今後しばらくはこういうネタを投下していこうかと思います。&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/masaru/aggbug/195271.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>