覚え書きメモってことで.
JUnit4でSpring3 Testを使うときには
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration
public class SpringSomeTest {
// テストコード
}
ってな感じになる.
でもって,JUnit4でJMock2を使うときには
@RunWith(JMock.class)
public class JMockSomeTest {
// テストコード
}
ってな感じ.
じゃあ,Spring3 TestとJMock2を一緒に使う
にはどうするのか.
@RunWithには二つ入れられないし…
答えは簡単.
JMockクラス
が何をしているのかを見て
同じことをすれば良いんだよね.
ということで,こんな感じのベースクラスを作る.
@ContextConfiguration
public abstract class JMockSpringBaseTest {
@Autowired(require = true)
protected Mockery context;
// JMockコンテキストの定義
@After
public void verifyMockery() {
this.context.assertIsSatisfied();
}
}
ちなみに同じパッケージの階層にはこんな感じの
Springコンテキストを用意しておく.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans
"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
">
<bean id="context" class="org.jmock.integration.junit4.JUnit4Mockery"/>
</beans>
クラスのモックを生成する場合はこっち.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans
"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance
"
xmlns:util="http://www.springframework.org/schema/util
"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
">
<bean id="context" class="org.jmock.integration.junit4.JUnit4Mockery">
<property name="imposteriser">
<util:constant static-field="org.jmock.lib.legacy.ClassImposteriser.INSTANCE"/>
</property>
</bean>
</beans>