【Java】JUnit4でSpring3とJMock2を使う方法 | さすらいびとの徒然漂流記

さすらいびとの徒然漂流記

ふらふら漂流するさすらいびとのように,色々な話題についてお気楽極楽,徒然なるままに…

覚え書きメモってことで.


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>